找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机和8255扩展16矩形键盘仿真与源程序

  [复制链接]
跳转到指定楼层
楼主
这是自己最近研究的单片机和8255扩展的连接方法
组成了一个16个按键的矩形键盘
用LCD来显示按键的数字和一些小小的功能
新手初来乍到,不足之处还请各位多多指点。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <REGX52.H>
  2. #include<intrins.h>
  3. #include<absacc.h>
  4. #define uchar unsigned char
  5. #define uint  unsigned int
  6. //ABC口,控制定义
  7. #define PA  XBYTE[0X7CFF]
  8. #define PB  XBYTE[0X7DFF]  
  9. #define PC  XBYTE[0X7EFF]  
  10. #define COM XBYTE[0X7FFF]
  11. //定义键盘
  12. uchar code JP[]={       
  13.                                         0xe7,0xeb,0xed,0xee,
  14.                                         0xd7,0xdb,0xdd,0xde,
  15.                                         0xb7,0xbb,0xbd,0xbe,
  16.                                         0x77,0x7b,0x7d,0x7e,
  17.                 };
  18. uchar code lcd[]={        '0','1','2','3',
  19.                                         '4','5','6','7',
  20.                                         '8','9', '+','-',
  21.                                         '*','/', '=',
  22.                                   
  23.                                 };
  24. //定义控制引脚
  25. sbit RS=P3^0;
  26. sbit RW=P3^1;
  27. sbit EN=P3^2;
  28. sbit WR1=P3^6;
  29. sbit RD1=P3^7;
  30. //延时
  31. void DelayMS(uint ms)
  32. {
  33.         uchar i;
  34.         while(ms--)
  35.         {
  36.                 for(i=0;i<120;i++);
  37.         }
  38. }
  39. //1602写指令
  40. void Write_LCD_Command(uchar cmd)
  41. {
  42.          RS=0;RW=0;EN=0;
  43.          P1=cmd;
  44.          DelayMS(5);
  45.          EN=1;
  46.          DelayMS(5);
  47.          EN=0;
  48. }
  49. //1602写数据
  50. void Write_LCD_data(uchar dat)
  51. {
  52.         RS=1;RW=0;EN=0;
  53.         P1=dat;
  54.         DelayMS(5);
  55.         EN=1;
  56.         DelayMS(5);
  57.         EN=0;
  58. }
  59. //1602读数据
  60. void read(uchar rea)
  61. {
  62.         RS=1;RW=1;EN=1;
  63.         P1=rea;
  64.         DelayMS(5);
  65.         EN=0;
  66.         DelayMS(5);
  67.         EN=1;       
  68. }
  69. //1602初始化
  70. void Ini_LCD()
  71. {
  72.         Write_LCD_Command(0x0F);DelayMS(5);//设置功能
  73.         Write_LCD_Command(0x38);DelayMS(5);
  74.         Write_LCD_Command(0x06);DelayMS(5);//AC+1
  75.         Write_LCD_Command(0x01);DelayMS(5);//清屏
  76.         Write_LCD_Command(0x0c);DelayMS(5);//显示功能               
  77. }
  78. //1602显示位置
  79. void WAdd( uchar x,uchar y)
  80. {
  81.         Write_LCD_Command(0x80+x);
  82.         Write_LCD_data(y);       
  83. }
  84. //主函数
  85. void main()
  86. {

  87.         COM=0X90;
  88.         Ini_LCD();
  89.         while(1)
  90.         {       
  91.          uchar key,temp,num,a;
  92.                 PC=0X0F;
  93.                 if(PC!=0X0F)
  94.                 {
  95.                         DelayMS(10);
  96.                         if(PC!=0X0F)
  97.                         {
  98.                                 temp=PC;
  99.                                 PC=0xf0;
  100.                                 key=temp|PC;
  101.                                 if(key==0x7e)
  102.                                 {
  103.                                                 Write_LCD_Command(0x01);DelayMS(5);//清屏       
  104. ……………………

  105. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
8255 16按键.rar (61.55 KB, 下载次数: 279)


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

使用道具 举报

沙发
ID:92810 发表于 2018-3-16 22:13 | 只看该作者
非常需要这个程序啊
回复

使用道具 举报

板凳
ID:92810 发表于 2018-3-16 22:14 | 只看该作者
非常需要这个程序啊!!!!
回复

使用道具 举报

地板
ID:92810 发表于 2018-3-16 22:19 | 只看该作者
我也不会这个呢
回复

使用道具 举报

5#
ID:92810 发表于 2018-3-19 10:02 | 只看该作者
仿真可以,但是用到实际就不可以的
回复

使用道具 举报

6#
ID:92810 发表于 2018-3-19 10:03 | 只看该作者
我试过了,下载单片机试验箱就不可以
回复

使用道具 举报

7#
ID:92810 发表于 2018-11-15 14:50 | 只看该作者
谢谢分享了,楼主,学习下
回复

使用道具 举报

8#
ID:92810 发表于 2018-11-15 14:50 | 只看该作者
刚好不懂,可以下载学习学习先
回复

使用道具 举报

9#
ID:278679 发表于 2020-3-29 20:44 | 只看该作者
谢谢!!刚好需要
回复

使用道具 举报

10#
ID:723392 发表于 2020-5-4 17:41 | 只看该作者
谢谢分享
回复

使用道具 举报

11#
ID:415338 发表于 2020-12-23 19:57 | 只看该作者
可以编译和仿真,楼主应该是准备写个计算器吧,后续还有待补全,等于后面的东东还没有写
回复

使用道具 举报

12#
ID:456196 发表于 2021-5-24 12:22 | 只看该作者
请问楼主软件是用的什么软件写的
回复

使用道具 举报

13#
ID:1057970 发表于 2022-12-17 20:44 | 只看该作者
怎么让最后一个键显示f
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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