




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
無線單片機(jī)系統(tǒng)實(shí)驗(yàn)
預(yù)作報(bào)告
目錄
實(shí)驗(yàn)1建立工程并點(diǎn)亮發(fā)光二級(jí)管..............................3
實(shí)驗(yàn)2流水燈的實(shí)現(xiàn).........................................7
實(shí)驗(yàn)3數(shù)碼管靜態(tài)顯示.......................................12
實(shí)驗(yàn)4數(shù)碼管動(dòng)態(tài)顯示.......................................17
實(shí)驗(yàn)5-19999累力口..........................................22
實(shí)驗(yàn)5-259秒計(jì)數(shù)器........................................28
實(shí)驗(yàn)6-1按鍵遞加和遞減.....................................34
實(shí)驗(yàn)6-2單鍵識(shí)別...........................................40
實(shí)驗(yàn)7矩陣鍵盤.............................................46
實(shí)驗(yàn)8-1簡(jiǎn)易計(jì)算器..........................................58
實(shí)驗(yàn)8-2利用定時(shí)器和蜂鳴器唱歌.............................84
實(shí)驗(yàn)9定時(shí)器的查詢方式.....................................92
實(shí)驗(yàn)10定時(shí)器的中斷方式....................................99
實(shí)驗(yàn)11外部中斷...........................................106
實(shí)驗(yàn)12-1液晶屏的使用.....................................114
實(shí)驗(yàn)12-2無線點(diǎn)燈.........................................121
實(shí)驗(yàn)13DS18B20測(cè)溫......................................126
實(shí)驗(yàn)14點(diǎn)對(duì)點(diǎn)通信.........................................130
實(shí)驗(yàn)15協(xié)議棧的認(rèn)識(shí).......................................134
實(shí)驗(yàn)16無線網(wǎng)絡(luò)測(cè)溫.......................................138
實(shí)驗(yàn)1建立工程并點(diǎn)亮發(fā)光二級(jí)管
一、實(shí)驗(yàn)?zāi)康?/p>
1.進(jìn)一步熟悉Keil的編程編譯環(huán)境
2.熟悉程序編輯、編譯、下載的過程
3.初步了解單片機(jī)10口輸出高低電平的方法
4.掌握延時(shí)函數(shù)的時(shí)間估算。
二、實(shí)驗(yàn)內(nèi)容
使用單片機(jī)的兩個(gè)I/O口,其中一個(gè)I/O口作為輸入引腳,接開發(fā)板
上的高電平(或低電平),另外一個(gè)I/O口作為輸出引腳,控制開發(fā)板
上的一個(gè)發(fā)光二極管亮滅。當(dāng)輸入I/O接高電平時(shí),發(fā)光二極管點(diǎn)亮,
反之當(dāng)輸入I/O接低電平時(shí),發(fā)光二極管熄滅。
三、實(shí)瞼要求
使用PC機(jī)編譯并生成hex文件,將hex文件下載到單片機(jī)中,要
求二極管能按預(yù)期亮滅。
四、實(shí)驗(yàn)環(huán)境
1.軟件環(huán)境:Keil編輯編譯器
2.實(shí)驗(yàn)設(shè)備:PC機(jī)1臺(tái)、單片機(jī)開發(fā)板1個(gè)
五、實(shí)驗(yàn)原理
實(shí)驗(yàn)電路如圖2.1所示。
U3
圖2-1實(shí)驗(yàn)原理圖
六、實(shí)瞼步驟
1.打開Keil軟件,新建工程
2.將本節(jié)實(shí)驗(yàn)課所用的實(shí)驗(yàn)程序?qū)懭?C文件,調(diào)試并編譯
3.生產(chǎn)用于下載給單片機(jī)的hex文件
4.將單片機(jī)開發(fā)板正確于PC機(jī)連接,并使用下載軟件將上一步生成的
hex文件下載至單片機(jī)中
5.觀察實(shí)驗(yàn)結(jié)果
七、實(shí)驗(yàn)程序(或者電路圖)
#include<reg51.h>
/*********************************************************************
****
*********
第一行是一個(gè)“文件包含"處理。所謂“文件包含”是指一個(gè)文件將另外一個(gè)
文件的內(nèi)容全部
包含進(jìn)來,這里的程序雖然只有4行,但C編譯器在處理的時(shí)候卻要處
理幾十或幾百行
**********************************************************************
****
********/
sbitP1_O=P1AO;〃定義10□
voiddelay02s(void)〃延時(shí)0.2秒子程序
(
unsignedchari,j,k;〃定義3個(gè)無符號(hào)字符型數(shù)據(jù)。
for(i=20;i>0;i-)〃作循環(huán)延時(shí)
for(j=20;j>0;j-)
for(k=248;k>0;k—);
)
voidmain(void)〃每一個(gè)C語言程序有且只有一個(gè)主函數(shù),
while(l)〃循環(huán)條件永遠(yuǎn)為真,以下程序一直執(zhí)行下去。
(
Pl_0=0;//I/O口P1.0輸出低電平,小燈被點(diǎn)亮。
delay02s();〃延時(shí)經(jīng)過0.2秒。
Pl_0=l;//I/O口P1.0輸出高電平,小燈熄滅。
delay02s();〃延時(shí)經(jīng)過0.2秒。
)
)
八、實(shí)驗(yàn)結(jié)果
點(diǎn)亮與單片機(jī)P1.0口相連的發(fā)光二極管,延時(shí)約0.2S,然后熄滅,
再延時(shí)約0.2S,再點(diǎn)亮,如此循環(huán)下去。
九、實(shí)驗(yàn)結(jié)果討論
點(diǎn)亮與單片機(jī)P1.0口相連的發(fā)光二極管,延時(shí)約0.5S,然后熄滅,
再延時(shí)約0.5S,再點(diǎn)亮,如此循環(huán)下去。
要求:延時(shí)函數(shù)自己編寫,有別于本實(shí)驗(yàn)的例程。
實(shí)驗(yàn)2流水燈的實(shí)現(xiàn)
一、實(shí)驗(yàn)?zāi)康?/p>
1.掌握循環(huán)移位的工作原理和操作方法
2.學(xué)會(huì)使用C51封裝好的函數(shù)庫C51LIB
3.掌握延時(shí)函數(shù)的時(shí)間估算
二、實(shí)驗(yàn)內(nèi)容
蜂鳴器用一PNP型三極管驅(qū)動(dòng),集電極(C極)通過蜂鳴器線圈接
5V電源,基極(B極)是控制端,發(fā)射極(E極)接地,當(dāng)三極管C,B
極PN結(jié)正偏時(shí),PN結(jié)導(dǎo)通,即B極為低電平時(shí),三極管導(dǎo)通,蜂鳴
器發(fā)聲。
三、實(shí)驗(yàn)要求
使用Keil軟件編譯本節(jié)實(shí)驗(yàn)課所用程序,并將生成的hex文件下載
到單片機(jī)中,要求開發(fā)板上的LED小燈能按預(yù)期效果流水。
四、實(shí)驗(yàn)環(huán)境
1.軟件環(huán)境:Keil編輯編譯器
2.實(shí)驗(yàn)設(shè)備:PC機(jī)1臺(tái)、單片機(jī)開發(fā)板1個(gè)
五、實(shí)驗(yàn)原理
實(shí)驗(yàn)電路如圖3-1所示。
圖3-1實(shí)驗(yàn)原理圖
vccH
vcc卜
89s52
-IH
六、實(shí)驗(yàn)步驟
1.打開Keil軟件,新建工程
2.將本節(jié)實(shí)驗(yàn)課所用的實(shí)驗(yàn)程序?qū)懭?C文件,調(diào)試并編譯
3.生產(chǎn)用于下載給單片機(jī)的hex文件
4.將單片機(jī)開發(fā)板正確于PC機(jī)連接,并使用下載軟件將上一步生成的
hex文件下載至單片機(jī)中
5.觀察實(shí)驗(yàn)結(jié)果
七、實(shí)驗(yàn)程序(或者電路圖)
#include<reg51.h>
#include<intrins.h>〃后面要用到它里面的_crol_(k,I)函數(shù)這個(gè)函
數(shù)的意思是把一
個(gè)字符變量k循環(huán)左移I位,關(guān)于它的說明請(qǐng)查看安裝KEIL目錄下的
\Keil\C51\HLP文件夾里面的c51lib,這個(gè)文件里面有各種用C語言封
裝好的函數(shù)庫,我們?cè)谝院笫褂闷渲心承┖瘮?shù)時(shí)可以直接使用而自己不
必再寫。
unsignedchara,b,k,j;〃定義四個(gè)字符變量
sbitbeep=P2人3;//定義蜂鳴器的接口
voiddelaylOms()〃延時(shí)子程序,大約延時(shí)10ms
(
for(a=100;a>0;a—)
for(b=225;b>0;b—);
)
voidmain()
(
k=Oxfe;〃先給k一個(gè)初值11111110等待移位
while(l)
delaylOmsQ;
beep=O;〃打開蜂鳴器
delaylOms();〃讓它響10ms
beep=l;〃關(guān)閉蜂鳴器
j=_crol_(k,l);〃把k循環(huán)左移一位
k=j;〃把移完的值再送給k
Pl=j;〃同時(shí)把值送到P1口點(diǎn)亮發(fā)光二極管
}〃再次循環(huán)
八、實(shí)驗(yàn)結(jié)果
單片機(jī)P1口相連的8個(gè)發(fā)光二極管中的一個(gè)循環(huán)移位點(diǎn)亮,同時(shí)蜂
鳴器發(fā)出滴滴的響聲。
九、實(shí)驗(yàn)結(jié)果討論
修改程序,使得流水燈按下表所示閃爍(1表示點(diǎn)亮,0表示熄滅)
11000000
01100000
00110000
00011000
實(shí)驗(yàn)3數(shù)碼管靜態(tài)顯示
一、實(shí)驗(yàn)?zāi)康?/p>
1.了解數(shù)碼管的結(jié)構(gòu)
2.掌握數(shù)碼管靜態(tài)顯示原理
二、實(shí)驗(yàn)內(nèi)容
根據(jù)共陰數(shù)碼管的功能結(jié)構(gòu),完成一組0~F的編碼,并按順序存放
建立程序數(shù)據(jù)表格。利用單片機(jī)串行口擴(kuò)展74LS164,完成串一并轉(zhuǎn)換
輸出,實(shí)現(xiàn)靜態(tài)顯示。
三、實(shí)驗(yàn)要求
使用Keil軟件編譯本節(jié)實(shí)驗(yàn)課所用程序,并將生成的hex文件下載
到單片機(jī)中,要求使開發(fā)板上的數(shù)碼管靜態(tài)顯示。
四、實(shí)瞼環(huán)境
1.軟件環(huán)境:Keil編輯編譯器
2.實(shí)驗(yàn)設(shè)備:PC機(jī)1臺(tái)、單片機(jī)開發(fā)板1個(gè)
五、實(shí)驗(yàn)原理
本開發(fā)板上數(shù)碼管為共陰極。靜態(tài)數(shù)碼管顯示原理(視頻中有詳細(xì)
介紹):這里就共陰極數(shù)碼管顯示原理進(jìn)行講解,一位數(shù)碼管內(nèi)一共有8
個(gè)發(fā)光二極管,對(duì)共陰極來說其8個(gè)發(fā)光二極管的陰極在數(shù)碼管內(nèi)部全
部接在一起,也就是“共陰"說法的來源,陽極是獨(dú)立的,設(shè)計(jì)電路時(shí)
一般把陰極接地,當(dāng)我們從外部給任一個(gè)陽極加一個(gè)高電平時(shí)這個(gè)發(fā)光
二極管就亮了,如果想要出一個(gè)8字,并且把右下角的小數(shù)點(diǎn)也點(diǎn)亮的
話,那可以給8個(gè)陽極全送高電平,想讓數(shù)碼管顯示幾就給相對(duì)應(yīng)的發(fā)
光二極管送高電平,因此我們?cè)陲@示數(shù)字的時(shí)候首先做的就是給0-9十
個(gè)數(shù)字編好碼,在要它亮什么數(shù)字的時(shí)候直接把這個(gè)編碼送到它的陽極
就行了。另外說一下,一般的數(shù)碼管每一段亮至少需要10個(gè)毫安的電
流,而單片機(jī)的10口送不出如此大的電流,所以我們需要加數(shù)碼管的驅(qū)
動(dòng)電路,可以用上拉電阻的方法,也可以使用專門的驅(qū)動(dòng)芯片,本開發(fā)
板使用的74HC573,其輸出電流較大,足夠點(diǎn)亮數(shù)碼管。本開發(fā)板上的
六位數(shù)碼管中每個(gè)相同段號(hào)(段指a,b,c,d,e,f,g,h)全部是接在一起的,
其中每一個(gè)位(陰極)是獨(dú)立的,所以在做靜態(tài)顯示的時(shí)候所有的數(shù)碼
管只能顯示相同的數(shù)字,當(dāng)然可以控制哪幾位顯示,如果讓它們顯示不
同的數(shù)字那就得給每一個(gè)數(shù)碼管加一套驅(qū)動(dòng)電路了。但這樣做是沒有必
要的,后面我們會(huì)講到關(guān)于數(shù)碼管動(dòng)態(tài)顯示原理。
下面給出本開發(fā)板共陰極數(shù)碼管數(shù)字編碼
“0”3FH“1”06H“2”5BH“3”4FH
“4”66H“5”6DH“6”7DH“7”07H
“8”7FH“9”6FH“A”77H“b”7CH
“C”39H"d"5EH“E”79H“F”71H
矩陣鍵盤的四行分別與P3.0-P3.3連接,四列分別與P3.4-P3.7連接。
六、實(shí)驗(yàn)步驟
1.打開Keil軟件,新建工程
2.將本節(jié)實(shí)驗(yàn)課所用的實(shí)驗(yàn)程序?qū)懭?C文件,調(diào)試并編譯
3.生產(chǎn)用于下載給單片機(jī)的hex文件
4.將單片機(jī)開發(fā)板正確于PC機(jī)連接,并使用下載軟件將上一步生成的
hex文件下載至單片機(jī)中
5.觀察實(shí)驗(yàn)結(jié)果
七、實(shí)驗(yàn)程序(或者電路圖)
#include<reg51.h>
sbitdula=P2人6;〃控制數(shù)碼管段選的鎖存器鎖存端
sbitwela=P2人7;〃控制數(shù)碼管位選的鎖存器鎖存端
unsignedchari=100;
unsignedcharj,k,temp,Key;
voiddelay(unsignedchari)〃可自定義延時(shí)長(zhǎng)短的延時(shí)函數(shù)
{〃當(dāng)i=10時(shí)大約為10毫秒
for(j=i;j>0;j-)
for(k=125;k>0;k—);
)
unsignedcharcodetable[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,
0x5e,0x79,0x71};//0-F編碼
display(unsignedcharnum)//顯示子函數(shù)
PO=table[num];〃將第num個(gè)顯示編碼送P0口
dula=l;〃一個(gè)下降沿將數(shù)據(jù)鎖存
dula=0;
P0=OxcO;〃位選通全部的數(shù)碼管
wela=1;〃一個(gè)下降沿將數(shù)據(jù)鎖存
wela=0;
)
voidmain()
(
dula=0;〃先關(guān)閉兩個(gè)鎖存器
wela=0;
Key=6
While(l):
(
display(Key);
)
)
八、實(shí)驗(yàn)結(jié)果
開發(fā)板上電后,數(shù)碼管顯示數(shù)字6
九、實(shí)驗(yàn)結(jié)果討論
理解程序后修改代碼使得數(shù)碼管顯示其他數(shù)字。
實(shí)驗(yàn)4數(shù)碼管動(dòng)態(tài)顯示
一、實(shí)驗(yàn)?zāi)康?/p>
1.了解數(shù)碼管的結(jié)構(gòu)
2.掌握數(shù)碼管動(dòng)態(tài)顯示原理
二、實(shí)驗(yàn)內(nèi)容
根據(jù)共陰數(shù)碼管的功能結(jié)構(gòu),完成一組0~F的編碼,并按順序存放
建立程序數(shù)據(jù)表格。利用單片機(jī)串行口擴(kuò)展74LS164,完成串一并轉(zhuǎn)換
輸出,實(shí)現(xiàn)動(dòng)態(tài)顯示。
三、實(shí)驗(yàn)要求
使用Keil軟件編譯本節(jié)實(shí)驗(yàn)課所用程序,并將生成的hex文件下載
到單片機(jī)中,要求使開發(fā)板上的數(shù)碼管動(dòng)態(tài)顯示。
四、實(shí)驗(yàn)環(huán)境
1.軟件環(huán)境:Keil編輯編譯器
2.實(shí)驗(yàn)設(shè)備:PC機(jī)1臺(tái)、單片機(jī)開發(fā)板1個(gè)
五、實(shí)驗(yàn)原理
動(dòng)態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控
制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動(dòng)態(tài)掃描顯示。所謂動(dòng)態(tài)掃描
顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝
和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時(shí)都在顯示。顯示
器的亮度既與導(dǎo)通電流有關(guān),也與點(diǎn)亮?xí)r間和間隔時(shí)間的比例有關(guān)。調(diào)
整電流和時(shí)間參數(shù),可實(shí)現(xiàn)亮度較高較穩(wěn)定的顯示。動(dòng)態(tài)顯示的亮度比
靜態(tài)顯示要差一些,所以在選擇限流電阻時(shí)應(yīng)略小于靜態(tài)顯示電路中
的。若顯示器的數(shù)目不大于8位,則控制顯示器公共極電位只需8位口
(稱為位選口),控制各位顯示器所顯示的字形也需一個(gè)8位口(成為
段選口)。
下面給出本開發(fā)板共陰極數(shù)碼管數(shù)字編碼
“0”3FH06H“2”5BH“3”4FH
“4”66H“5”6DH“6”7DH“7”07H
“8”7FH“9”6FH“A”77H“b”7CH
"C"39H"d”5EH“E”79H“F”71H
矩陣鍵盤的四行分別與P3.0-P3.3連接,四列分別與P3.4-P3.7連接。
六、實(shí)驗(yàn)步驟
1.打開Keil軟件,新建工程
2.將本節(jié)實(shí)驗(yàn)課所用的實(shí)驗(yàn)程序?qū)懭?C文件,調(diào)試并編譯
3.生產(chǎn)用于下載給單片機(jī)的hex文件
4.將單片機(jī)開發(fā)板正確于PC機(jī)連接,并使用下載軟件將上一步生成的
hex文件下載至單片機(jī)中
5.觀察實(shí)驗(yàn)結(jié)果
七、實(shí)驗(yàn)程序(或者電路圖)
#include<reg51.h>
#defineucharunsignedchar
ucharj,k,i,a,A,second;
sbitdula=P2人6;〃鎖存器控制端定義
sbitwela=P2A7;
ucharcodetable[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39
,0x5e,0x79,0x71};
〃數(shù)字編碼
voiddelay(uchari)〃延時(shí)函數(shù)
(
for(j=i;j>0;j-)
for(k=125;k>0;k—);
)
voiddisplay(ucharsh_c,ucharg_c)//顯示函數(shù)
(
dula=0;
PO=table[sh_c];〃顯示十位
dula=l;
dula=0;
wela=0;
P0=0xfe;
wela=l;
wela=O;
delay(5);〃亮5ms
PO=table[g_c];〃顯示個(gè)位
dula=l;
dula=O;
PO=Oxfd;
wela=l;
wela=O;
delay(5);〃亮5ms
)
voidmain()〃主函數(shù)
A=6;
while(l)
display(A,A);
}
八、實(shí)驗(yàn)結(jié)果
開發(fā)板上電后,數(shù)碼管顯示數(shù)字66
九、實(shí)驗(yàn)結(jié)果討論
理解程序后修改代碼,嘗試顯示更多位數(shù)字。
實(shí)驗(yàn)5-19999累加
一、實(shí)驗(yàn)?zāi)康?/p>
練習(xí)數(shù)碼管動(dòng)態(tài)顯示
二、實(shí)驗(yàn)內(nèi)容
如下圖所示,在AT89S52單片機(jī)的P0和P2端口分別接有
74HC573鎖存器U1與U2,兩個(gè)鎖存器的輸出端接有三個(gè)共陰極數(shù)碼
管,本次實(shí)驗(yàn)通過單片機(jī)操作74HC573鎖存器,使得數(shù)碼管完成9999
累加的效果。
三、實(shí)驗(yàn)要求
使用Keil軟件編譯本節(jié)實(shí)驗(yàn)課所用程序,并將生成的hex文件下載
到單片機(jī)中,要求開發(fā)板上數(shù)碼管達(dá)成9999累加的功能。
四、實(shí)驗(yàn)環(huán)境
1.軟件環(huán)境:Keil編輯編譯器
2.實(shí)驗(yàn)設(shè)備:PC機(jī)1臺(tái)、單片機(jī)開發(fā)板1個(gè)
五、實(shí)驗(yàn)原理
s
89微
」
ls:
l山
db
暹I
9S
VP
”<
ET
"
T1
?1T如O田
小.
9一見
包田
叩J田
驟
實(shí)驗(yàn)步
六、
建工程
件,新
il軟
開Ke
L打
并編譯
,調(diào)試
文件
寫入.C
驗(yàn)程序
用的實(shí)
驗(yàn)課所
本節(jié)實(shí)
2.將
文件
的hex
單片機(jī)
下載給
產(chǎn)用于
3.生
的
步生成
將上一
載軟件
使用下
接,并
機(jī)連
于PC
正確
發(fā)板
機(jī)開
單片
4.將
片機(jī)中
載至單
文件下
hex
果
驗(yàn)結(jié)
察實(shí)
5.觀
)
路圖
者電
序(或
實(shí)驗(yàn)程
七、
含
文件包
動(dòng),頭
要改
不需
情況
,一般
文件
含頭
〃包
.h>
reg52
ude<
#incl
義
器的定
能寄存
特殊功
#defineDataPortPO〃定義數(shù)據(jù)端口程序中遇到DataPort則用P0替
換
sbitLATCH1=P2人2;〃定義鎖存使能端口段鎖存
sbitLATCH2=P2A3;//位鎖存
unsignedcharcode
dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f};〃顯示段碼值0~9
unsignedcharcode
dofIy_WeiMa[]={Oxfe,Oxfd,Oxfb,Oxf7,Oxef,Oxdf,Oxbf,0x7f};//分別對(duì)應(yīng)
相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼
unsignedcharTempData[8];〃存儲(chǔ)顯示值的全局變量
voidDelay(unsignedintt);〃函數(shù)聲明
voidDisplay(unsignedcharFirstBit,unsignedcharNum);
/*--------------------------------------------------------------
主函數(shù)
--------------------------------------------------------------*/
main()
(
unsignedintnum;
unsignedintj;
while(l)
j++;
if(j==10)〃檢測(cè)當(dāng)前數(shù)值顯示了一小段時(shí)間后,需要顯示
的數(shù)值加1,實(shí)現(xiàn)數(shù)據(jù)顯示的變化
(
j=0;
num++;
if(num==10000)〃用于顯示0-9999
num=0;
)
TempData[0]=dofly_DuanMa[num/1000];〃分解顯示信
息,如要顯示68,則68/10=668%10=8
TempData[l]=dofly_DuanMa[(num%1000)/100];
TempData[2]=dofly_DuanMa[((num%1000)%100)/10];
TempData[3]=dofly_DuanMa[((num%1000)%100)%10];
Display(2,4);
)
)
/*------------------------------------------------
延時(shí)函數(shù),含有輸入?yún)?shù)unsignedintt,無返回值
unsignedint是定義無符號(hào)整形變量,其值的范圍是
0-65535
-----------------------------------------*/
voidDelay(unsignedintt)
(
while(--t);
)
/*-----------------------------------------
顯示函數(shù),用于動(dòng)態(tài)掃描數(shù)碼管
輸入?yún)?shù)FirstBit表示需要顯示的第一位,如賦值2表示從第三個(gè)數(shù)碼
管開始顯示
如輸入0表示從第一個(gè)顯示。
Num表示需要顯示的位數(shù),如需要顯示99兩位數(shù)值則該值輸入2
-----------------------------------------*/
voidDisplay(unsignedcharFirstBit,unsignedcharNum)
(
unsignedchari;
for(i=0;i<Num;i++)
(
DataPort=O;〃清空數(shù)據(jù),防止有交替重影
LATCH1=1;〃段鎖存
LATCH1=O;
DataPort=dofly_WeiMa[i+FirstBit];〃取位碼
LATCH2=1;//位鎖存
LATCH2=0;
DataPort=TempData[i];〃取顯示數(shù)據(jù),段碼
LATCH1=1;〃段鎖存
LATCH1=O;
Delay(200);//掃描間隙延時(shí),時(shí)間太長(zhǎng)會(huì)閃爍,太短會(huì)造
成重影
)
)
八、實(shí)驗(yàn)結(jié)果
用軟件延時(shí)的方法實(shí)現(xiàn)9999累加器,用數(shù)碼管顯示出來。
九、實(shí)驗(yàn)結(jié)果討論
修改程序,將9999累加器的步進(jìn)修改為2,即13579……這樣累加
實(shí)驗(yàn)5-259秒計(jì)數(shù)器
一、實(shí)驗(yàn)?zāi)康?/p>
練習(xí)數(shù)碼管動(dòng)態(tài)顯示
二、實(shí)驗(yàn)內(nèi)容
在AT89S52單片機(jī)的P0和P2端口分別接有74HC573鎖存器U1
與U2,兩個(gè)鎖存器的輸出端接有三個(gè)共陰極數(shù)碼管,本次實(shí)驗(yàn)通過單片
機(jī)操作74HC573鎖存器,使得數(shù)碼管完成59秒計(jì)數(shù)器的效果。
三、實(shí)驗(yàn)要求
使用Keil軟件編譯本節(jié)實(shí)驗(yàn)課所用程序,并將生成的hex文件下載
到單片機(jī)中,要求開發(fā)板上數(shù)碼管達(dá)成59秒計(jì)數(shù)器的功能。
四、實(shí)驗(yàn)環(huán)境
1.軟件環(huán)境:Keil編輯編譯器
2.實(shí)驗(yàn)設(shè)備:PC機(jī)1臺(tái)、單片機(jī)開發(fā)板1個(gè)
五、實(shí)驗(yàn)原理
£S£S££S£a,22£S22£
:券噩^患URIm8鰭:
離~'"fjf什川那荊£用1**
?去
六、實(shí)驗(yàn)步驟
L打開Keil軟件,新建工程
2.將本節(jié)實(shí)驗(yàn)課所用的實(shí)驗(yàn)程序?qū)懭?C文件,調(diào)試并編譯
3.生產(chǎn)用于下載給單片機(jī)的hex文件
4.將單片機(jī)開發(fā)板正確于PC機(jī)連接,并使用下載軟件將上一步生成的
hex文件下載至單片機(jī)中
5.觀察實(shí)驗(yàn)結(jié)果
七、實(shí)驗(yàn)程序(或者電路圖)
#include<reg51.h>
#defineucharunsignedchar
ucharj,k,i,a,Al,A2,second;
sbitdula=P2人6;〃鎖存器控制端定義
sbitwela=P2A7;
ucharcodetable[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39
,0x5e,0x79,0x71};
〃數(shù)字編碼
voiddelay(uchari)〃延時(shí)函數(shù)
(
for(j=i;j>0;j-)
for(k=125;k>0;k—);
)
voiddisplay(ucharsh_c,ucharg_c)〃顯示函數(shù)
(
dula=0;
PO=table[sh_c];〃顯示十位
dula=l;
dula=0;
wela=0;
P0=0xfe;
wela=l;
wela=O;
delay(5);〃亮5ms
PO=table[g_c];〃顯示個(gè)位
dula=l;
dula=O;
PO=Oxfd;
wela=l;
wela=O;
delay(5);〃亮Sms
)
voidmain()〃主函數(shù)
(
while(l)
(
second++;〃秒加一
if(second==60)〃判斷是否到60
second=0;〃如果到了則清零
Al=second/10;〃沒到則分離出十位和個(gè)位
A2=second%10;
for(a=50;a>0;a--)〃顯示部分,請(qǐng)用戶用軟件仿真看時(shí)間約等于
1秒
display(Al,A2);
)
)
)
八、實(shí)驗(yàn)結(jié)果
用軟件延時(shí)的方法實(shí)現(xiàn)0-59秒自動(dòng)計(jì)數(shù)器,用數(shù)碼管的前兩位顯示
出來。
九、實(shí)驗(yàn)結(jié)果討論
修改程序,將0-59秒自動(dòng)計(jì)數(shù)器改成0-50秒自動(dòng)計(jì)數(shù)器
實(shí)驗(yàn)6-1按鍵遞加和遞減
一、實(shí)驗(yàn)?zāi)康?/p>
獨(dú)立按鍵的識(shí)別方法、鍵盤消抖等。
二、實(shí)驗(yàn)內(nèi)容
每按一次獨(dú)立鍵盤的S2鍵,數(shù)碼管所顯示的數(shù)字加一。
注意:關(guān)于按鍵去抖動(dòng)的解釋,在手動(dòng)按鍵的時(shí)候,由于機(jī)械抖動(dòng)或
是其它一些非人為的因素很有可能會(huì)造成誤識(shí)別,一般手動(dòng)按下一次鍵
然后接著釋放,按鍵兩片金屬膜接觸時(shí)間大約為50ms左右,在按下瞬
間到穩(wěn)定的時(shí)間為5-10ms,在松開的瞬間到穩(wěn)定的時(shí)間也為5-10ms,如
果我們?cè)谑状螜z測(cè)到鍵被按下后延時(shí)10ms左右再去檢測(cè),這時(shí)如果是
干擾信號(hào)將不會(huì)被檢測(cè)到,如果確實(shí)是有鍵被按下,則可確認(rèn),以上為
按鍵識(shí)別去抖動(dòng)的原理。
三、實(shí)驗(yàn)要求
使用Keil軟件編譯本節(jié)實(shí)驗(yàn)課所用程序,并將生成的hex文件下載
到單片機(jī)中,要求使用開發(fā)板達(dá)成按鍵遞加的功能。
四、實(shí)驗(yàn)環(huán)境
1.軟件環(huán)境:Keil編輯編譯器
2.實(shí)驗(yàn)設(shè)備:PC機(jī)1臺(tái)、單片機(jī)開發(fā)板1個(gè)
五、實(shí)驗(yàn)原理
六、實(shí)驗(yàn)步驟
1.打開Keil軟件,新建工程
2.將本節(jié)實(shí)驗(yàn)課所用的實(shí)驗(yàn)程序?qū)懭?C文件,調(diào)試并編譯
3.生產(chǎn)用于下載給單片機(jī)的hex文件
4.將單片機(jī)開發(fā)板正確于PC機(jī)連接,并使用下載軟件將上一步生成的
hex文件下載至單片機(jī)中
5.觀察實(shí)驗(yàn)結(jié)果
七、實(shí)驗(yàn)程序(或者電路圖)
#include<reg52.h>
sbitBY1=P3A4;〃定義按鍵的輸入端S2鍵
unsignedcharcount;〃按鍵計(jì)數(shù),每按一下,count力口1
unsignedchartemp;
unsignedchara,b,Al,A2;
sbitdula=P2A6;〃鎖存器控制端定義
sbitwela=P2A7;
ucharcodetable[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39
,0x5e,0x79,0x71};
〃數(shù)字編碼
voiddisplay(ucharsh_c,ucharg_c)〃顯示函數(shù)
(
dula=0;
PO=table[sh_c];〃顯示十位
dula=l;
dula=0;
wela=0;
P0=0xfe;
wela=l;
wela=0;
delay(5);〃亮5ms
PO=table[g_c];〃顯示個(gè)位
dula=l;
dula=0;
P0=0xfd;
wela=l;
wela=0;
delay(5);〃亮5ms
)
voiddelaylOms(void)〃延時(shí)程序
unsignedchari,j;
for(i=20;i>0;i—)
for(j=248;j>0;j-);
)
key()〃按鍵判斷程序
if(BYl==O)〃判斷是否按下鍵盤,當(dāng)單片機(jī)上電時(shí)所有IO口為高
電平,S2鍵一端接地另一端接P3.4,所以當(dāng)鍵被按下時(shí)P3.4口直接接
地,此時(shí)檢測(cè)P3.4肯定為低電平。
delaylOmsQ;〃延時(shí),軟件去抖動(dòng)干擾
if(BYl==O)〃再次檢測(cè)確認(rèn)按鍵按下
count++;〃按鍵計(jì)數(shù)加1
Al=count/10;〃分離出十位和個(gè)位
A2=count%10;
)
while(BYl==O);〃等待按鍵釋放,如果鍵未釋放則一直在此等待。
)
)
main()
(
count=0;〃初始化參數(shù)設(shè)置
temp=Oxfe;
Pl=Oxff;
Pl=temp;
while(l)〃永遠(yuǎn)循環(huán),掃描判斷按鍵是否按下
(
key();〃調(diào)用按鍵識(shí)別函數(shù)
display(Al,A2);〃調(diào)用數(shù)碼管顯示函數(shù)
)
)
八、實(shí)驗(yàn)結(jié)果
每按一次獨(dú)立鍵盤的S2鍵,數(shù)碼管所顯示的數(shù)字加一。
九、實(shí)驗(yàn)結(jié)果討論
修改程序,增加功能使得每按一次獨(dú)立鍵盤的S1鍵,數(shù)碼管所顯示
的數(shù)字減一。
實(shí)驗(yàn)6-2單鍵識(shí)別
一、實(shí)驗(yàn)?zāi)康?/p>
獨(dú)立按鍵的識(shí)別方法、鍵盤消抖等。
二、實(shí)驗(yàn)內(nèi)容
每按一次獨(dú)立鍵盤的S2鍵,與P1口相連的八個(gè)發(fā)光二極管中點(diǎn)亮
的一個(gè)往下移動(dòng)一位。
注意:關(guān)于按鍵去抖動(dòng)的解釋,在手動(dòng)按鍵的時(shí)候,由于機(jī)械抖動(dòng)或
是其它一些非人為的因素很有可能會(huì)造成誤識(shí)別,一般手動(dòng)按下一次鍵
然后接著釋放,按鍵兩片金屬膜接觸時(shí)間大約為50ms左右,在按下瞬
間到穩(wěn)定的時(shí)間為5-10ms,在松開的瞬間到穩(wěn)定的時(shí)間也為5-10ms,如
果我們?cè)谑状螜z測(cè)到鍵被按下后延時(shí)10ms左右再去檢測(cè),這時(shí)如果是
干擾信號(hào)將不會(huì)被檢測(cè)到,如果確實(shí)是有鍵被按下,則可確認(rèn),以上為
按鍵識(shí)別去抖動(dòng)的原理。
三、實(shí)瞼要求
使用Keil軟件編譯本節(jié)實(shí)驗(yàn)課所用程序,并將生成的hex文件下載
到單片機(jī)中,要求使用開發(fā)板達(dá)成單鍵識(shí)別的功能。
四、實(shí)驗(yàn)環(huán)境
1.軟件環(huán)境:Keil編輯編譯器
2.實(shí)驗(yàn)設(shè)備:PC機(jī)1臺(tái)、單片機(jī)開發(fā)板1個(gè)
五、實(shí)驗(yàn)原理
六、實(shí)驗(yàn)步驟
1.打開Keil軟件,新建工程
2.將本節(jié)實(shí)驗(yàn)課所用的實(shí)驗(yàn)程序?qū)懭?C文件,調(diào)試并編譯
3.生產(chǎn)用于下載給單片
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國環(huán)保監(jiān)測(cè)設(shè)備行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025年醫(yī)療廢物管理制度試題及答案
- 2025年設(shè)備管理制度考試試題及答案
- 2025年皮內(nèi)皮下肌肉注射考試題(附答案)
- 2025年檢驗(yàn)檢測(cè)機(jī)構(gòu)資質(zhì)認(rèn)定(機(jī)構(gòu)和人員)試題及答案
- 2025年《醫(yī)療機(jī)構(gòu)消毒技術(shù)規(guī)范》培訓(xùn)考核試題及答案
- 2025年常見外科休克試題及答案
- 2025至2030裝飾裝潢行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025年ICU專科護(hù)士證考試考題及答案
- 2025至2030中國核磁共振光譜儀(NMR)(NMR光譜儀)行業(yè)運(yùn)營態(tài)勢(shì)與投資前景調(diào)查研究報(bào)告
- 腹痛 針灸治療
- 露天煤礦工程施工及驗(yàn)收規(guī)范
- 風(fēng)光電站網(wǎng)絡(luò)信息系統(tǒng)安全事故應(yīng)急演練方案
- 探究應(yīng)用新思維七年級(jí)數(shù)學(xué)練習(xí)題目初一
- 水封式排水器結(jié)構(gòu)、設(shè)置、操作步驟
- 基本醫(yī)療保險(xiǎn)參保人員轉(zhuǎn)診轉(zhuǎn)院報(bào)備表
- FZ/T 73009-2021山羊絨針織品
- 北師大版八年級(jí)上冊(cè)第一章勾股定理 導(dǎo)學(xué)案(無答案)
- 【詞匯】高中英語新教材詞匯總表(共七冊(cè))
- 噴射混凝土工藝性試驗(yàn)總結(jié)
- 古建亭子CAD施工圖集
評(píng)論
0/150
提交評(píng)論