無線單片機(jī)實(shí)驗(yàn)-預(yù)作報(bào)告(物聯(lián)網(wǎng))_第1頁
無線單片機(jī)實(shí)驗(yàn)-預(yù)作報(bào)告(物聯(lián)網(wǎng))_第2頁
無線單片機(jī)實(shí)驗(yàn)-預(yù)作報(bào)告(物聯(lián)網(wǎng))_第3頁
無線單片機(jī)實(shí)驗(yàn)-預(yù)作報(bào)告(物聯(lián)網(wǎng))_第4頁
無線單片機(jī)實(shí)驗(yàn)-預(yù)作報(bào)告(物聯(lián)網(wǎng))_第5頁
已閱讀5頁,還剩144頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論