版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、/* 實 驗 名 : 動態(tài)顯示數(shù)碼管實驗* 使用的IO : 數(shù)碼管使用P0,P2.2,P2.3,P2.4鍵盤使用P1* 實驗效果 : 按矩陣鍵盤分別顯示在數(shù)碼管上面顯示十六進制的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;/用來存放讀取到的鍵值unsigned char KeyState;/記錄按鍵的狀態(tài),0沒有,1有unsigned char DisplayData8;/用來存放要顯示的8位數(shù)的值unsigned char Num;/用來存放中斷的時候顯示的第位數(shù)值void Delay50us(); /延時50usvoid KeyDown(); /檢測按鍵函數(shù)void DigDisplay(); /動態(tài)顯示函數(shù)void
3、 TimerConfiguration();/定時器初始化設(shè)置/* 函 數(shù) 名 : main* 函數(shù)功能 : 主函數(shù)* 輸 入 : 無* 輸 出 : 無*/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ù)功能 : 定時器初始化* 輸 入 : 無* 輸 出 : 無*/void TimerConfiguration()TMOD=0X02;/選擇為定時器0模式,工作方式2,僅用TRX打開啟動。TH0=0X9C;/給定時器賦初值,定時100usTL0=0X9C;ET0=1;/打開定時器0中斷允許EA=1;/打開總中斷TR0=1;/打
5、開定時器/* 函 數(shù) 名 : DigDisplay* 函數(shù)功能 : 使用數(shù)碼管顯示* 輸 入 : 無* 輸 出 : 無*/void DigDisplay()unsigned char i,j;/for(i=0;i<8;i+)/GPIO_DIG=0x00;/消隱switch(i) /位選,選擇點亮的數(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è)定/while(j-)/Delay50us();/GPIO_DIG=0x00;/消隱/* 函 數(shù) 名 : KeyDown* 函數(shù)功能 : 檢測有按鍵按下并讀取鍵值* 輸 入 : 無* 輸 出 : 無*/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)定時器中斷KeyState=1;/有按鍵按下/測試列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;/檢測出錯回復(fù)1
8、7意思是把數(shù)碼管全滅掉。/測試行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;/開定時器中斷while(a<5000)&&(GPIO_KEY!=0xf0) /檢測按鍵松手檢測Delay50u
9、s();a+;a=0;/* 函 數(shù) 名 : Delay50us* 函數(shù)功能 : 延時函數(shù),延時50us* 輸 入 : 無* 輸 出 : 無*/void Delay50us(void) /延時50us誤差 0us unsigned char a,b; for(b=1;b>0;b-) for(a=22;a>0;a-);/* 函 數(shù) 名 : Delay50us* 函數(shù)功能 : 延時函數(shù),延時50us* 輸 入 : 無* 輸 出 : 無*/void Timer() interrupt 1DigDisplay();/* 實 驗 名 : 動態(tài)顯示數(shù)碼管實驗* 使用的IO : 數(shù)碼管使用P0,P
10、2.2,P2.3,P2.4* 實驗效果 : 數(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、用來存放要顯示的8位數(shù)的值void DigDisplay(); /動態(tài)顯示函數(shù)/* 函 數(shù) 名 : main* 函數(shù)功能 : 主函數(shù)* 輸 入 : 無* 輸 出 : 無*/void main(void)unsigned char i;for(i=0;i<8;i+)DisplayDatai=DIG_CODEi;while(1)DigDisplay();/* 函 數(shù) 名 : DigDisplay* 函數(shù)功能 : 使用數(shù)碼管顯示* 輸 入 : 無* 輸 出 : 無*/void DigDisplay()unsigned char i;unsigned int j;for(i=0;i<8;i
12、+)switch(i) /位選,選擇點亮的數(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è)定while(j-);GPIO_DIG=0x00;/消隱/* 實 驗 名 : 動態(tài)顯示數(shù)碼管實驗* 使用的IO : 數(shù)碼管使用P0,P2.2,P2.3,P2.4鍵盤使用P1* 實驗效果 : 按矩陣鍵盤分別顯示在數(shù)碼管上面顯示十六進制的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;/用來存放讀取到的鍵值unsigned char KeyState;/記錄按鍵的狀態(tài),0沒有,1有unsigned char DisplayData8;/用來存放要顯示的8位數(shù)的值void Delay10ms(); /延時10msvoid Key
15、Down(); /檢測按鍵函數(shù)void DigDisplay(); /動態(tài)顯示函數(shù)/* 函 數(shù) 名 : main* 函數(shù)功能 : 主函數(shù)* 輸 入 : 無* 輸 出 : 無*/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ù)碼管顯示* 輸 入 : 無* 輸 出 : 無*/void DigDisplay()unsigned char i;unsigned int j;for(i=0;i<8;i+)switch(i) /位選,選擇點亮的數(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è)定while(j-);GPIO_DI
18、G=0x00;/消隱/* 函 數(shù) 名 : KeyDown* 函數(shù)功能 : 檢測有按鍵按下并讀取鍵值* 輸 入 : 無* 輸 出 : 無*/void KeyDown(void)unsigned int a=0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f) Delay10ms();a+;a=0;if(GPIO_KEY!=0x0f)KeyState=1;/有按鍵按下/測試列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;/檢測出錯回復(fù)17意思是把數(shù)碼管全滅掉。/測試行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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高考化學(xué)一輪復(fù)習(xí)第十一章有機化學(xué)基礎(chǔ)第三講烴的含氧衍生物規(guī)范演練含解析新人教版
- 2024高考地理一輪復(fù)習(xí)第七章區(qū)域產(chǎn)業(yè)活動第24講工業(yè)區(qū)位因素與工業(yè)地域聯(lián)系教案湘教版
- DB42-T 2341-2024 綜合管廊頂管工程技術(shù)規(guī)程
- 二零二五年版環(huán)保建材板材買賣合同范本3篇
- 2024年海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2024年海南體育職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 危險化學(xué)品典型案例課件
- 2024年河南對外經(jīng)濟貿(mào)易職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 二零二五年城市夜景照明設(shè)施改造與維護服務(wù)合同范本3篇
- 2024年長葛市公費醫(yī)療醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 彈性模量自動生成記錄
- 老年癡呆患者安全護理
- 管理制度醫(yī)療器械質(zhì)量管理制度
- 顱腦損傷的高壓氧治療
- 公司章程模板五篇
- 汽車行走的藝術(shù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2025屆山東省菏澤市部分重點學(xué)校高一上數(shù)學(xué)期末統(tǒng)考模擬試題含解析
- 2025屆云南省昆明市祿勸縣第一中學(xué)數(shù)學(xué)高二上期末復(fù)習(xí)檢測試題含解析
- 機械工程師招聘筆試題及解答
- 2023年基礎(chǔ)會計學(xué)課后習(xí)題及參考答案
- 2024年時事新聞及點評【六篇】
評論
0/150
提交評論