數(shù)碼管動(dòng)態(tài)顯示的三種實(shí)驗(yàn)_第1頁(yè)
數(shù)碼管動(dòng)態(tài)顯示的三種實(shí)驗(yàn)_第2頁(yè)
數(shù)碼管動(dòng)態(tài)顯示的三種實(shí)驗(yàn)_第3頁(yè)
數(shù)碼管動(dòng)態(tài)顯示的三種實(shí)驗(yàn)_第4頁(yè)
數(shù)碼管動(dòng)態(tài)顯示的三種實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、/* 實(shí) 驗(yàn) 名 : 動(dòng)態(tài)顯示數(shù)碼管實(shí)驗(yàn)* 使用的IO : 數(shù)碼管使用P0,P2.2,P2.3,P2.4鍵盤(pán)使用P1* 實(shí)驗(yàn)效果 : 按矩陣鍵盤(pán)分別顯示在數(shù)碼管上面顯示十六進(jìn)制的0到F。* 注 意 :*/#include<reg51.h>/#include<intrins.h>#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P22;sbit LSB=P23;sbit LSC=P24;unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x

2、7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼unsigned char KeyValue;/用來(lái)存放讀取到的鍵值unsigned char KeyState;/記錄按鍵的狀態(tài),0沒(méi)有,1有unsigned char DisplayData8;/用來(lái)存放要顯示的8位數(shù)的值unsigned char Num;/用來(lái)存放中斷的時(shí)候顯示的第位數(shù)值void Delay50us(); /延時(shí)50usvoid KeyDown(); /檢測(cè)按鍵函數(shù)void DigDisplay(); /動(dòng)態(tài)顯示函數(shù)void

3、 TimerConfiguration();/定時(shí)器初始化設(shè)置/* 函 數(shù) 名 : main* 函數(shù)功能 : 主函數(shù)* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void main(void)TimerConfiguration();KeyState=0; /初始化按鍵狀態(tài)while(1)KeyDown(); if(KeyState=1)DisplayData7=DisplayData6;DisplayData6=DisplayData5;DisplayData5=DisplayData4;DisplayData4=DisplayData3;DisplayData3=DisplayData2;Dis

4、playData2=DisplayData1;DisplayData1=DisplayData0;DisplayData0=DIG_CODEKeyValue;KeyState=0;/DigDisplay();/* 函 數(shù) 名 : TimerConfiguration* 函數(shù)功能 : 定時(shí)器初始化* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void TimerConfiguration()TMOD=0X02;/選擇為定時(shí)器0模式,工作方式2,僅用TRX打開(kāi)啟動(dòng)。TH0=0X9C;/給定時(shí)器賦初值,定時(shí)100usTL0=0X9C;ET0=1;/打開(kāi)定時(shí)器0中斷允許EA=1;/打開(kāi)總中斷TR0=1;/打

5、開(kāi)定時(shí)器/* 函 數(shù) 名 : DigDisplay* 函數(shù)功能 : 使用數(shù)碼管顯示* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void DigDisplay()unsigned char i,j;/for(i=0;i<8;i+)/GPIO_DIG=0x00;/消隱switch(i) /位選,選擇點(diǎn)亮的數(shù)碼管,case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=

6、0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;GPIO_DIG=DisplayDatai;i+;if(i>7)i=0;/j=10; /掃描間隔時(shí)間設(shè)定/while(j-)/Delay50us();/GPIO_DIG=0x00;/消隱/* 函 數(shù) 名 : KeyDown* 函數(shù)功能 : 檢測(cè)有按鍵按下并讀取鍵值* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void KeyDown(void)unsigne

7、d int a=0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f) Delay50us();a+;a=0;if(GPIO_KEY!=0x0f)ET0=0;/關(guān)定時(shí)器中斷KeyState=1;/有按鍵按下/測(cè)試列GPIO_KEY=0X0F;/ Delay50us();switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=1;break;case(0X0d): KeyValue=2;break;case(0X0e):KeyValue=3;break;/default:KeyValue=17;/檢測(cè)出錯(cuò)回復(fù)1

8、7意思是把數(shù)碼管全滅掉。/測(cè)試行GPIO_KEY=0XF0;Delay50us();switch(GPIO_KEY)case(0X70):KeyValue=KeyValue;break;case(0Xb0):KeyValue=KeyValue+4;break;case(0Xd0): KeyValue=KeyValue+8;break;case(0Xe0):KeyValue=KeyValue+12;break;/default:KeyValue=17;ET0=1;/開(kāi)定時(shí)器中斷while(a<5000)&&(GPIO_KEY!=0xf0) /檢測(cè)按鍵松手檢測(cè)Delay50u

9、s();a+;a=0;/* 函 數(shù) 名 : Delay50us* 函數(shù)功能 : 延時(shí)函數(shù),延時(shí)50us* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void Delay50us(void) /延時(shí)50us誤差 0us unsigned char a,b; for(b=1;b>0;b-) for(a=22;a>0;a-);/* 函 數(shù) 名 : Delay50us* 函數(shù)功能 : 延時(shí)函數(shù),延時(shí)50us* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void Timer() interrupt 1DigDisplay();/* 實(shí) 驗(yàn) 名 : 動(dòng)態(tài)顯示數(shù)碼管實(shí)驗(yàn)* 使用的IO : 數(shù)碼管使用P0,P

10、2.2,P2.3,P2.4* 實(shí)驗(yàn)效果 : 數(shù)碼管顯示76543210。* 注 意 :*/#include<reg51.h>#define GPIO_DIG P0sbit LSA=P22;sbit LSB=P23;sbit LSC=P24;unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼unsigned char DisplayData8;/

11、用來(lái)存放要顯示的8位數(shù)的值void DigDisplay(); /動(dòng)態(tài)顯示函數(shù)/* 函 數(shù) 名 : main* 函數(shù)功能 : 主函數(shù)* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void main(void)unsigned char i;for(i=0;i<8;i+)DisplayDatai=DIG_CODEi;while(1)DigDisplay();/* 函 數(shù) 名 : DigDisplay* 函數(shù)功能 : 使用數(shù)碼管顯示* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void DigDisplay()unsigned char i;unsigned int j;for(i=0;i<8;i

12、+)switch(i) /位選,選擇點(diǎn)亮的數(shù)碼管,case(0):LSA=0;LSB=0;LSC=0; break;/顯示第0位case(1):LSA=1;LSB=0;LSC=0; break;/顯示第1位case(2):LSA=0;LSB=1;LSC=0; break;/顯示第2位case(3):LSA=1;LSB=1;LSC=0; break;/顯示第3位case(4):LSA=0;LSB=0;LSC=1; break;/顯示第4位case(5):LSA=1;LSB=0;LSC=1; break;/顯示第5位case(6):LSA=0;LSB=1;LSC=1; break;/顯示第6位ca

13、se(7):LSA=1;LSB=1;LSC=1; break;/顯示第7位GPIO_DIG=DisplayDatai;/發(fā)送段碼j=10; /掃描間隔時(shí)間設(shè)定while(j-);GPIO_DIG=0x00;/消隱/* 實(shí) 驗(yàn) 名 : 動(dòng)態(tài)顯示數(shù)碼管實(shí)驗(yàn)* 使用的IO : 數(shù)碼管使用P0,P2.2,P2.3,P2.4鍵盤(pán)使用P1* 實(shí)驗(yàn)效果 : 按矩陣鍵盤(pán)分別顯示在數(shù)碼管上面顯示十六進(jìn)制的0到F。* 注 意 :*/#include<reg51.h>#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P22;sbit LSB=P23;sbit

14、LSC=P24;unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼unsigned char KeyValue;/用來(lái)存放讀取到的鍵值unsigned char KeyState;/記錄按鍵的狀態(tài),0沒(méi)有,1有unsigned char DisplayData8;/用來(lái)存放要顯示的8位數(shù)的值void Delay10ms(); /延時(shí)10msvoid Key

15、Down(); /檢測(cè)按鍵函數(shù)void DigDisplay(); /動(dòng)態(tài)顯示函數(shù)/* 函 數(shù) 名 : main* 函數(shù)功能 : 主函數(shù)* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void main(void)KeyState=0;while(1)KeyDown(); if(KeyState=1)DisplayData7=DisplayData6;DisplayData6=DisplayData5;DisplayData5=DisplayData4;DisplayData4=DisplayData3;DisplayData3=DisplayData2;DisplayData2=DisplayDat

16、a1;DisplayData1=DisplayData0;DisplayData0=DIG_CODEKeyValue;KeyState=0;DigDisplay();/* 函 數(shù) 名 : DigDisplay* 函數(shù)功能 : 使用數(shù)碼管顯示* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void DigDisplay()unsigned char i;unsigned int j;for(i=0;i<8;i+)switch(i) /位選,選擇點(diǎn)亮的數(shù)碼管,case(0):LSA=0;LSB=0;LSC=0; break;/顯示第0位case(1):LSA=1;LSB=0;LSC=0; break

17、;/顯示第1位case(2):LSA=0;LSB=1;LSC=0; break;/顯示第2位case(3):LSA=1;LSB=1;LSC=0; break;/顯示第3位case(4):LSA=0;LSB=0;LSC=1; break;/顯示第4位case(5):LSA=1;LSB=0;LSC=1; break;/顯示第5位case(6):LSA=0;LSB=1;LSC=1; break;/顯示第6位case(7):LSA=1;LSB=1;LSC=1; break;/顯示第7位GPIO_DIG=DisplayDatai;/發(fā)送段碼j=10; /掃描間隔時(shí)間設(shè)定while(j-);GPIO_DI

18、G=0x00;/消隱/* 函 數(shù) 名 : KeyDown* 函數(shù)功能 : 檢測(cè)有按鍵按下并讀取鍵值* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void KeyDown(void)unsigned int a=0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f) Delay10ms();a+;a=0;if(GPIO_KEY!=0x0f)KeyState=1;/有按鍵按下/測(cè)試列GPIO_KEY=0X0F;/ Delay10ms();switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=1;break;case(0X0d): KeyValue=2;break;case(0X0e):KeyValue=3;break;/default:KeyValue=17;/檢測(cè)出錯(cuò)回復(fù)17意思是把數(shù)碼管全滅掉。/測(cè)試行GPIO_KEY=0XF0;Delay10ms();switch(GPIO_KEY)case(0X70):KeyValue=KeyValue;break;case(0Xb0):KeyValue=KeyValue+4;break;case(0Xd0): KeyValue=KeyValue+8;break;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論