四乘四鍵盤(pán)顯示_第1頁(yè)
四乘四鍵盤(pán)顯示_第2頁(yè)
四乘四鍵盤(pán)顯示_第3頁(yè)
四乘四鍵盤(pán)顯示_第4頁(yè)
四乘四鍵盤(pán)顯示_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、四乘四鍵盤(pán)顯示一、設(shè)計(jì)要求4*4 矩陣鍵盤(pán)共 16 個(gè)鍵,每按一次鍵,數(shù)碼管就顯示一次按鍵代表的值。二、元件選取單片機(jī): STC89C52RC;電阻: 470;發(fā)光二極管; 4*4 鍵盤(pán);共陽(yáng)極七段數(shù)碼管三、設(shè)計(jì)思想本設(shè)計(jì)硬件上采用STC89C52RC 單片機(jī)的最小系統(tǒng),單片機(jī)的P1 口與鍵盤(pán)相連, P1.0P1.3 管腳分別與鍵盤(pán)的四行連接,P1.4P1.7 管腳分別與鍵盤(pán)的四列相連;P0 口 P1.0P1.7 管腳與數(shù)碼管 1 的 adp 相連, P2 口 P2.0P2.7 管腳分別與數(shù)碼管2 的 adp 相連,數(shù)碼管的公共端接 +5V 電源,控制數(shù)碼管的顯示;發(fā)光二極管的陰極與單片機(jī)的P

2、3.0 管腳連接,陽(yáng)極與 +5V 電源連接,低電平有效,控制二極管發(fā)光;程序上采用定時(shí)掃描方式,利用定時(shí)T0 產(chǎn)生 50ms 定時(shí)中斷, CPU 響應(yīng)中斷后進(jìn)入Scan_Key()子程序?qū)︽I盤(pán)進(jìn)行掃描,對(duì)P1 口初值 0xf7 掃描第一行,進(jìn)入延時(shí)程序消抖動(dòng)后,進(jìn)入 switch()語(yǔ)句,屏蔽行的低四位,取列的高四位,檢測(cè)哪一列有鍵按下,若有鍵按下,標(biāo)志位 FLAG0=1 ,發(fā)光二極管的到低電平發(fā)光;令 P1 口的初值右移一位后或 0x80 進(jìn)行高位補(bǔ)一,掃描第二行,如此循環(huán)右移,四行便全都檢測(cè)到了。 當(dāng)有鍵按下時(shí), m!=0xf0,進(jìn)入 while 循環(huán)不停地執(zhí)行 m&0xf0 語(yǔ)句

3、,使 m=0xf0 ;按鍵松開(kāi)后, m=0xf0 跳出 while 循環(huán),執(zhí)行中斷程序,顯示按鍵的值。如此軟件與硬件結(jié)合,能合理的完成設(shè)計(jì)要求,每按一次鍵,數(shù)碼管就顯示一次按鍵代表的值。四、原理圖四、程序流程開(kāi)始開(kāi)定時(shí)器中斷,定時(shí)器 0 初始化鍵盤(pán)掃描是否有鍵按下?NY發(fā)光二極管發(fā)光,確定按鍵值按鍵是否放開(kāi)?NY中斷程序開(kāi)始數(shù)碼管顯示按鍵值定時(shí)器 0 重裝初值中斷返回?cái)?shù)碼管顯示按鍵值五、調(diào)試過(guò)程調(diào)試過(guò)程中,遇到了以下問(wèn)題 :一是數(shù)碼管不能正常顯示, 經(jīng)檢查是數(shù)碼管公共端未接電源,連接后數(shù)碼管還是不能正常顯示,經(jīng)檢查是單片機(jī)接觸不良,將單片機(jī)拔出,對(duì)照底座重新插入,然后在仿真數(shù)碼管顯示正常;二是

4、發(fā)光二極管在按鍵按下后不能正常發(fā)光,經(jīng)檢查是軟件編程存在缺陷,定時(shí)時(shí)間短,單片機(jī)接收不到二極管的低電平,故不發(fā)光。經(jīng)改進(jìn)后,將二極管管腳賦低電平的語(yǔ)句嵌入到鍵盤(pán)掃描程序中,二極管工作正常。六、程序清單#include<reg52.h>#define RELOAD_H #define RELOAD_L( 65536-50000)/256; /定義定時(shí)器 ( 65536-50000)%256;0 重裝值extern void Timer0_Init(void); / 定時(shí)器初始化子函數(shù) extern void Delay(unsigned int n); extern void Sca

5、n_Key(void);unsigned char dispcode2;unsigned char dofly16;unsigned char ptr,m;unsigned int t,c;bit FLAG0=0; / 定義是否有鍵按下sbit Beep = P30;/發(fā)光二極管管腳void main(void)Timer0_Init();while(1)Scan_Key();/掃描鍵盤(pán)void Timer0_Init(void)/定時(shí)器0 初始化TMOD=0x01;/定時(shí)器0,方式1TL0=RELOAD_L;/TL0定時(shí)器0 低8 位計(jì)數(shù)器TH0=RELOAD_H;/TH0定時(shí)器0 高8 位

6、計(jì)數(shù)器TR0=1;/定時(shí)器 /計(jì)數(shù)器0啟動(dòng)位./TR0=1:開(kāi)始計(jì)時(shí)或計(jì)數(shù)ET0=1;/定時(shí)器 /計(jì)數(shù)器0 中斷使能EA=1;/全局中斷使能void Timer0_ISR(void) interrupt 1/定時(shí)器0 中斷服務(wù)程序P0=doflyc;P2=doflyt;TL0=RELOAD_L;/定時(shí)器0 初值重裝TH0=RELOAD_H;void Delay(unsigned int n)/延時(shí)unsigned int i,j;for(i=0;i<n;i+)for(j=0;j<80;j+);unsigned char dofly16=0xc0,0xf9,0xa4,0xb0,0x9

7、9,0x92,0x82,0xf8,0x80,0x90; / 數(shù)碼管顯示程序void Scan_Key(void)/ 鍵盤(pán)掃描程序char a1,i;bit FLAG0=0;a1=0xf7;ptr=0;/列掃描初值for(i=0;i<4;i+)/鍵盤(pán)4 個(gè)掃描列P1=a1;Delay(10);m=P1;switch(m&0xf0)/取行的高4 位,偵測(cè)哪一行有按鍵被按下case 0x70:ptr=i*4;/第一行被按否?如有則是tabi*4鍵FLAG0=1;Beep=0;/表示有按鍵break;case 0xb0:ptr=i*4+1;/第二行被按否?如有則是tabi*4+1鍵FLAG0=1;Beep=0;break;case 0xd0:ptr=i*4+2;/第三行被按否 ? 如有則是 tabi*4+2 鍵FLAG0=1; Beep=0;break;case 0xe0: ptr=i*4+3;/第四行被按否 ?如有則是 tabi*4+3 鍵FLAG0=1; Beep=0;break;default:break;a1=(a1>>1)|0x80;while(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論