找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1850|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机8279芯片构成8行2列键盘接口电路+Proteus仿真

[复制链接]
跳转到指定楼层
楼主
注意:在总线上加入标号AD[0..7]和RL[0..7],另外在导线上也要加上标号AD0~AD7和RL0~RL7
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)



单片机源程序如下:
  1. #include<reg51.h>
  2. #include<ABSACC.H>

  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define com XBYTE[0x7fff] //A15=0(cs=0),A14=1(A0=1),命令状态口
  6. #define dat XBYTE[0x3fff] //A15=0(cs=0),A14=0(A0=0),数据口

  7. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  //共阴极字型码
  8. uchar temp;
  9. bit key;

  10. void delay(uint z){
  11. uint x,y;
  12. for(x=z;x>0;x--)
  13. for(y=110;y>0;y--);
  14. }

  15. int main(void){
  16. temp=0;
  17. EA=1;
  18. EX0=1;
  19. IT0=0;
  20. delay(10);
  21. com=0xd2;  //11010010,清除RAM
  22. delay(10);
  23. com=0x00;  //00000000,8位字符显示——左边输入,编码扫描键盘,双键锁定
  24. delay(10);
  25. com=0x34;  //00110100,时钟编码命令,20分频,晶振12MHz,ALE输入2MHZ,8279经20分频后得到100KHz工作频率
  26. delay(10);
  27. com=0x90;  //从单元0开始写要显示的数据,每次写完后自动地址加1
  28. delay(10);
  29. com=0x70;  //从单元0开始读要显示的数据,每次读完后自动地址加1
  30. key=0;
  31. while(1){  //等中断
  32. if(key){
  33. com=0x40;  //01000000,读FIFO/传感器RAM命令字
  34. delay(1);
  35. temp=dat&0x3f;  //去键盘数据低6位,即为键值
  36. dat=table[temp];  //送数码管显示
  37. key=0;  //按键标志复位
  38. }
  39. }
  40. }

  41. void time() interrupt 0{
  42. key=1;  //有键按下
  43. }
复制代码



Keil5代码与Proteus8.8仿真下载: 51单片机8279芯片构成8行2列键盘接口电路.zip (96.95 KB, 下载次数: 17)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表