注意:在總線上加入標號AD[0..7]和RL[0..7],另外在導(dǎo)線上也要加上標號AD0~AD7和RL0~RL7
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:
- #include<reg51.h>
- #include<ABSACC.H>
- #define uchar unsigned char
- #define uint unsigned int
- #define com XBYTE[0x7fff] //A15=0(cs=0),A14=1(A0=1),命令狀態(tài)口
- #define dat XBYTE[0x3fff] //A15=0(cs=0),A14=0(A0=0),數(shù)據(jù)口
- uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共陰極字型碼
- uchar temp;
- bit key;
- void delay(uint z){
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- int main(void){
- temp=0;
- EA=1;
- EX0=1;
- IT0=0;
- delay(10);
- com=0xd2; //11010010,清除RAM
- delay(10);
- com=0x00; //00000000,8位字符顯示——左邊輸入,編碼掃描鍵盤,雙鍵鎖定
- delay(10);
- com=0x34; //00110100,時鐘編碼命令,20分頻,晶振12MHz,ALE輸入2MHZ,8279經(jīng)20分頻后得到100KHz工作頻率
- delay(10);
- com=0x90; //從單元0開始寫要顯示的數(shù)據(jù),每次寫完后自動地址加1
- delay(10);
- com=0x70; //從單元0開始讀要顯示的數(shù)據(jù),每次讀完后自動地址加1
- key=0;
- while(1){ //等中斷
- if(key){
- com=0x40; //01000000,讀FIFO/傳感器RAM命令字
- delay(1);
- temp=dat&0x3f; //去鍵盤數(shù)據(jù)低6位,即為鍵值
- dat=table[temp]; //送數(shù)碼管顯示
- key=0; //按鍵標志復(fù)位
- }
- }
- }
- void time() interrupt 0{
- key=1; //有鍵按下
- }
復(fù)制代碼
Keil5代碼與Proteus8.8仿真下載:
51單片機8279芯片構(gòu)成8行2列鍵盤接口電路.zip
(96.95 KB, 下載次數(shù): 18)
2022-5-10 19:47 上傳
點擊文件名下載附件
|