51單片機(jī)動(dòng)態(tài)數(shù)碼管程序掃描顯示和中斷顯示_第1頁
51單片機(jī)動(dòng)態(tài)數(shù)碼管程序掃描顯示和中斷顯示_第2頁
51單片機(jī)動(dòng)態(tài)數(shù)碼管程序掃描顯示和中斷顯示_第3頁
51單片機(jī)動(dòng)態(tài)數(shù)碼管程序掃描顯示和中斷顯示_第4頁
51單片機(jī)動(dòng)態(tài)數(shù)碼管程序掃描顯示和中斷顯示_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、/以下程序都是在VC+6.0上調(diào)試運(yùn)行過的程序,沒有錯(cuò)誤,沒有警告。單片機(jī)是STC89C52RC,但是在所有的51 52單片機(jī)上都是通用的。51只是一個(gè)學(xué)習(xí)的基礎(chǔ) 平臺(tái),你懂得。程序在關(guān)鍵的位置添加了注釋。/用/111111111111U111 代表第一個(gè)程序。Z/2222222222222222222222222 代表第二個(gè)程序, 以此類推*實(shí)驗(yàn)名*使用的IO*實(shí)驗(yàn)效果*注 意掃描顯示中的按鍵位移顯示2是掃描顯示的動(dòng)態(tài)顯示數(shù)字3是中斷顯示動(dòng)態(tài)顯示數(shù)碼管實(shí)驗(yàn)數(shù)碼管使用P0,P2.2,P2.3,P2.4鍵盤使用P1按矩陣鍵盤分別顯示在數(shù)碼管上面顯示十六進(jìn)制的0到Fo*#iiiclude #def

2、ine GPIO_DIG PO#define GPIO_KEYP1 sbit LSA=P2A2;sbit LSB=P2A3;sbit LSC=P2A4;unsigned char code DIG_CODE17=0 x3f,0 x06.0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77.0 x7c,0 x39,0 x5e,0 x79,0 x71);0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F 的顯示碼unsigned char KeyValue;/用來存放讀取到的鍵值unsigned char KeyState; 記錄按

3、鍵的狀態(tài),0沒有,1有unsigned char DisplayData8;/用來存放要顯示的8位數(shù)的值void Delay!0nis(); 延時(shí) 10msvoid KeyDown();檢測按鍵函數(shù)void DigDisplay(); 動(dòng)態(tài)顯示函數(shù)J*mam主函數(shù) 無 無*函數(shù)名*函數(shù)功能*輸入*輸出*void main(void)KeyState=O;wlule(l)jKeyDown();if(KeyState=l)DisplayData7=DisplayData6;DisplayData6=DisplayData5;DisplayData5=DisplayData4;DisplayData

4、4=DisplayData3;DisplayData3=DisplayData2;DisplayData2=DisplayDatal;DisplayData l=DisplayDataO;DisplayData0=DIG_CODEKeyValue;KeyState=O;)DigDisplayQ;,性*4:*4:* * *c*4:*4:*4:*4:*4:*4:*函數(shù)名*函數(shù)功能*輸入*輸出DigDisplay使用數(shù)碼管顯示無無* void DigDisplay()unsigned char i;unsigned mt j;fbr(i=O;i8;i+)jswitch(i) 位選,選擇點(diǎn)亮的數(shù)碼管,

5、case(O):LSA=0;LSB=0;LSC=0; break;/顯示第 0 位case(l):LSA=1;LSB=O;LSC=O; break;/顯示第 1 位case(2):LSA=O;LSB=1;LSC=O; break;/顯示第 2 位 case(3):LSA=1;LSB=1;LSC=O; break;/顯示第 3 位 case(4):LSA=O;LSB=O;LSC=1; break;/顯示第 4 位 case(5):LSA=1;LSB=O;LSC=1; break;/顯示第 5 位 case(6):LSA=O;LSB=1;LSC=1; break;/顯示第 6 位 case(7):

6、LSA=1;LSB=1;LSC=1; break;/顯示第 7 位)GPIO_DIG=DisplayDatai;/ 發(fā)送段碼j=io;/掃描間隔時(shí)間設(shè)定while(j);GPIO_DIG=OxOO; 消隱*函數(shù)名*函數(shù)功能*輸入*輸出KeyDown檢測有按鍵按下并讀取鍵值 無無void KeyDown(void)unsigned mt a=0:GPIO_KEY=OxOf;iRGPIO_KEY!=OxOf)Delay lOmsQ;a+;a=0;iRGPIO_KEY!=OxOf)KeyState=l;/W按鍵按 F測試列GPIO_KEY=OXOF;/Delay! OmsQ;switch(GPIO_

7、KEY)case(0X07): KeyValue=O;break;case(OXOb): KeyValue=l ;break;case(OXOd): KeyValue=2;break;case(OXOe): KeyValue=3 ;break;default: KeyValue=17;/Z檢測出錯(cuò)回復(fù)17意思是把數(shù)碼管全滅掉。 )測試行GPIO_KEY=OXFO;Delay lOmsQ;switch(GPIO_KEY)(case(OX7O): KeyValue=KeyValue;break;case(OXbO): KeyValue=KeyValue+4; break;case(OXdO): K

8、eyValue=KeyValued-8;break:case(OXeO): KeyValue=KeyValue+12;break;IIdefault: KevValue=17;J7)wlule(aO;c)for(b=38;b0;b-)for(a=130;a0;a-);/Z22222222222222222222222222222222222222222222222222222222227/2222222222222222222222222222222222222222222222222222222222*實(shí)驗(yàn)名*使用的IO*實(shí)驗(yàn)效果*注 意動(dòng)態(tài)顯示數(shù)碼管實(shí)驗(yàn)數(shù)碼管使用P0,P2.2,P2.3,

9、P2.4數(shù)碼管顯示76543210。*#iiiclude #define GPIO_DIG P0 sbit LSA=P2A2;sbit LSB=P2 八3;sbit LSC=P2A4;unsigned char code DIG_CODE17=0 x3f,0 x06.0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07, 0 x70 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71);0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F 的顯示碼unsigned char DisplayData8;用來存放要顯示的8位數(shù)的值void D

10、igDisplayQ; 動(dòng)態(tài)顯示函數(shù),藤*:$:*:$:* *:$:*:$:*:$:*:$:*:$:*:$:*:$:*:$:*:$:*函數(shù)名*函數(shù)功能*輸入*輸出mam主函數(shù) 無 無*void main(void)unsigned char i;fbr(i=0;i8;i+)jDisplayDatai=DIG_CODEi;wlule(l)jDigDisplayQ;*函數(shù)名*函數(shù)功能*輸入*輸出DigDisplay使用數(shù)碼管顯示無無*void DigDisplay()unsigned char i;unsigned mt j;fbr(i=O;i8;i+)fswitch(i) 位選,選擇點(diǎn)亮的數(shù)碼管

11、,case(O):LSA=0;LSB=0;LSC=0; break;/顯示第 0 位case(l):LSA=1;LSB=O;LSC=O; break;/顯示第 1 位case(2):LSA=O;LSB=1;LSC=O; break;/顯示第 2 位case(3):LSA=1;LSB=1;LSC=O; break;/顯示第 3 位case(4):LSA=O;LSB=O;LSC=1; break;/顯示第 4 位case(5):LSA=1;LSB=O;LSC=1; break;/顯示第 5 位case(6):LSA=O;LSB=1;LSC=1; break;/顯示第 6 位case(7):LSA=

12、1;LSB=1;LSC=1; break;/顯示第 7 位)GPIO_DIG=DisplayDatai;/ 發(fā)送段碼j=10;掃描間隔時(shí)間設(shè)定while(j);GPIO_DIG=OxOO; 消隱333333333333333333333333333333333333333333333333333333333 333333333333333333333333333333333333333333333333333333333,*:$:*實(shí)驗(yàn)名:動(dòng)態(tài)顯示數(shù)碼管實(shí)驗(yàn)*使用的IO :數(shù)碼管使用P0,P2.2,P2.3,P2.4鍵盤使用P1*實(shí)驗(yàn)效果:按矩陣鍵盤分別顯示在數(shù)碼管上面顯示十六進(jìn)制的0到Fo*

13、注 意 :*/#iiicludelude#define GPIO_DIG PO#define GPIO.KEYP1sbit LSA=P2A2;sbit LSB=P2A3;sbit LSC=P2A4;unsigned char code DIG_CODE17=0 x3f,0 x06.0 x5b.0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77.0 x7c,0 x39,0 x5e,0 x79,0 x71);1、2、3、4、5、6、7、8、9、A、b、C、d、E、F 的顯示碼unsigned char KeyValue;用來存放讀取到的鍵值unsigne

14、d char KeyState; 記錄按鍵的狀態(tài),0沒有,1肯unsigned char DisplayData8;用來存放要顯示的8位數(shù)的值unsigned char Num;/用來存放中斷的時(shí)候顯示的第位數(shù)值void Delay50usQ; 延時(shí) 50usvoid KeyDown();檢測按鍵函數(shù)void DigDisplay(); 動(dòng)態(tài)顯示函數(shù)void Timei-C onfiguiatioiiO -J!定時(shí)器初始化設(shè)置J*mam主函數(shù) 無 無*函數(shù)名*函數(shù)功能*輸入*輸出*void main(void)TmieiCoiifiguiationQ;KeyState=O;初始化按鍵狀態(tài)wlu

15、le(l)KeyDown();if(KeyState=l)(DisplayData7=DisplayData6;DisplayData6=DisplayData5;DisplayData5=DisplayData4;DisplayData4=DisplayData3;DisplayData3=DisplayData2;DisplayData2=DisplayDatal;DisplayData 1 =DisplayDataO;DisplayData0=DIG_CODEKeyValue;KeyState=O;)/ DigDisplayQ;,,* * *函數(shù)名*函數(shù)功能*輸入*輸出TmierConf

16、iguration 定時(shí)器初始化 無 無*void Timei-Configuiation()TMOD=0X02;選擇為定時(shí)器0模式,工作方式2,僅用TRX打開啟動(dòng)。THOOX9C; /給定時(shí)器賦初值,定時(shí)lOOusTL0=0X9C;ETO=1;/打開定時(shí)器0中斷允許EA=1;/打開總中斷TRO=1;/打開定時(shí)器*函數(shù)名*函數(shù)功能*輸入*輸出DigDisplay使用數(shù)碼管顯示無無*void DigDisplay()unsigned char ij;fbr(i=0;i7)1=0;/J=1O;掃描間隔時(shí)間設(shè)定/while(j)/Delay50us();/GPIO_DIG=OxOO; 消隱 *函數(shù)名

17、*函數(shù)功能*輸入*輸出KeyDown檢測有按鍵按下并讀取鍵值 無無void KeyDown(void)unsigned mt a=0: GPIO_KEY=OxOf;iRGPIO_KEY!=OxOf)Delay50us();a+;a=0;iRGPIO_KEY!=OxOf)ETO=O;關(guān)定時(shí)器中斷KeyState=l;/W 按鍵按下測試列GPIO_KEY=OXOF; /Delay50us();switch(GPIO_KEY) ( case(0X07): KeyValue=O;break; case(OXOb): KeyValue=l ;break; case(OXOd): KeyValue=2;bieak; case(OXOe): KeyValue=3 ;break; /default: KeyValue=17;/檢測出錯(cuò)回復(fù)17意思是把數(shù)碼管全滅掉。) 測試行 GPIO_KEY=OXFO; Delay5Ous(); switch(GPIO_KEY) ( case(OX7O): KeyValue=KeyValue;break; case(OXbO): KeyValue=KeyVal

溫馨提示

  • 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)論