找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机按键识别程序与proteus仿真

[复制链接]
跳转到指定楼层
楼主
一个最简单的单片机应用 按键识别的proteus仿真,原理图如下:

单片机源程序:
  1. /********************************************************************
  2.                             51黑电子论坛
  3. *********************************************************************/
  4. #include<reg52.h>                 //库文件
  5. #define uchar unsigned char//宏定义无符号字符型
  6. #define uint unsigned int  //宏定义无符号整型
  7. /********************************************************************
  8.                             初始定义
  9. *********************************************************************/
  10. uchar count;   //按键计数,每按一下,count 加1
  11. uchar a,b;           //定义字符型变量
  12. uchar temp;    //定义字符型变量
  13. sbit BY1=P2^1; //定义按键的输入端(为单片机P2口的P2.1按键)
  14. /********************************************************************
  15.                             延时函数
  16. *********************************************************************/
  17. void delay10ms(void) //延时程序
  18. {
  19. uchar i,j;
  20. for(i=20;i>0;i--)
  21. for(j=248;j>0;j--);
  22. }
  23. /********************************************************************
  24.                            按键判断函数
  25. *********************************************************************/
  26. void key() //按键判断程序
  27. {
  28.         if(BY1==0) //判断是否按下键盘
  29.         {
  30.                 delay10ms(); //延时,软件去干扰
  31.                 if(BY1==0) //确认按键按下
  32.                 {
  33.                         count++; //按键计数加1
  34.                         if(count==8) //计8次重新计数
  35.                         {
  36.                                 count=0;//将count 清零
  37.                         }
  38.                 }
  39.         while(BY1==0);//按键锁定,每按一次count 只加1.
  40.         }
  41. }
  42. /********************************************************************
  43.                             主函数
  44. *********************************************************************/
  45. void main()
  46. {
  47.         temp=0xfe; //定义为11111110
  48.         while(1)
  49.         {
  50.                 key(); //调用按键判断函数
  51.                 a=temp<<count;//左移count位
  52.                 b=temp>>(8-count);//右移8-count位
  53.                 P0=a|b;        //求值
  54.         }
  55. }
  56.         
  57. /********************************************************************
  58.                               结束
  59. *********************************************************************/
复制代码


所有资料下载:
按键识别.rar (56.31 KB, 下载次数: 14)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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