




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 運(yùn)動(dòng)服裝生產(chǎn)中的快速響應(yīng)生產(chǎn)模式考核試卷
- 草原割草與草地碳氮平衡考核試卷
- 紙品加工技術(shù)考核試卷
- 實(shí)踐中遇到的嵌入式問題試題及答案
- 碳酸飲料配方設(shè)計(jì)考核試卷
- 數(shù)據(jù)庫性能監(jiān)控的關(guān)鍵指標(biāo)試題及答案
- 公路工程資本運(yùn)作試題及答案
- 納米技術(shù)在印刷包裝中的應(yīng)用考核試卷
- 行政組織理論的統(tǒng)計(jì)分析方法及2025年試題及答案
- 嵌入式技術(shù)的改進(jìn)與趨勢試題及答案
- 眼球的結(jié)構(gòu)與功能
- 《社會(huì)主義制度在中國的確立》示范課教學(xué)設(shè)計(jì)【高中思想政治人教版必修1中國特色社會(huì)主義】
- 立方米臥式濃硫酸儲(chǔ)罐設(shè)計(jì)
- 三乙胺安全標(biāo)簽
- GB/T 4490-2021織物芯輸送帶寬度和長度
- GB/T 28650-2012公路防撞桶
- GB/T 17793-1999一般用途的加工銅及銅合金板帶材外形尺寸及允許偏差
- ICU常見檢查項(xiàng)目及課件
- 土地荒漠化的防治(公開課)課件
- MSA量測系統(tǒng)分析RMSA量測系統(tǒng)分析課件
- 中考備考應(yīng)對(duì)中考?xì)v史學(xué)科的復(fù)習(xí)策略和解題技巧課件
評(píng)論
0/150
提交評(píng)論