设为首页 收藏本站
开启辅助访问 切换到宽版

  找回密码
  立即注册

QQ登录

只需一步,快速开始

快捷导航
  • 论坛
  • 问答区
  • 单片机教程
  • 单片机DIY
  • 电子DIY
  • 帮助

热门: 51单片机 | 24小时必答区 | 单片机教程 | 单片机DIY制作 | STM32 | Cortex M3 | 模数电子 | 电子DIY制作 | 音响/功放 | 拆机乐园 | Arduino | 嵌入式OS | 程序设计

搜索
» 论坛 嵌入式/单片机论坛 51单片机 51单片机基于六位数码管的简易加法计算器Proteus仿真程 ...
返回列表 发新帖
查看: 4089|回复: 3
打印 上一主题 下一主题
收起左侧

51单片机基于六位数码管的简易加法计算器Proteus仿真程序

[复制链接]
跳转到指定楼层
楼主
ID:711823 发表于 2020-5-8 21:12 | 显示全部楼层 | 只看大图 回帖奖励 | 倒序浏览 | 阅读模式
自己用4*4矩阵键盘与六位数码管仿真的加法计算器(已经做好啦,按键消抖 ,数码管鬼影现象)


  1. void LedScan()   //六位数码管动态扫描
  2. {  
  3.           static unsigned char i=0;
  4.     P0 = 0xFF;   //显示消隐
  5.                 switch(i)       //每过1ms从低到高位刷新一个数码管
  6.                 {
  7.                         case 0:P2=0x01;i++; P0=        LedBuff[0]; break;
  8.                         case 1:P2=0x02;i++; P0=        LedBuff[1]; break;
  9.                         case 2:P2=0x04;i++; P0=        LedBuff[2]; break;
  10.                         case 3:P2=0x08;i++; P0=        LedBuff[3]; break;
  11.                         case 4:P2=0x10;i++; P0=        LedBuff[4]; break;
  12.                         case 5:P2=0x20;i=0; P0=        LedBuff[5]; break;
  13.                         default :break;
  14.                 }
  15. }
  16. void KeyScan()    //矩阵按键动态扫描
  17. {
  18.         unsigned char i;
  19.         static unsigned char keyout = 0;
  20.         static unsigned char keybuf[4][4] = {
  21.         {0xff,0xff,0xff,0xff},
  22.         {0xff,0xff,0xff,0xff},
  23.         {0xff,0xff,0xff,0xff},
  24.         {0xff,0xff,0xff,0xff},        
  25.         };
  26.               /******按键消抖***************/
  27.         keybuf[keyout][0] = (keybuf[keyout][0] <<1)|KEY_INT_1;
  28.         keybuf[keyout][1] = (keybuf[keyout][1] <<1)|KEY_INT_2;
  29.         keybuf[keyout][2] = (keybuf[keyout][2] <<1)|KEY_INT_3;
  30.         keybuf[keyout][3] = (keybuf[keyout][3] <<1)|KEY_INT_4;
  31.         for(i=0;i<4;i++)
  32.                 {
  33.                         if((keybuf[keyout][i] & 0x0F) == 0x00)
  34.                         {
  35.                                 KeySta[keyout][i] = 0;
  36.                         }
  37.                         else if ((keybuf[keyout][i] & 0x0F) == 0x0f)
  38.                         {
  39.                                 KeySta[keyout][i] = 1;
  40.                         }
  41.                         
  42.                 }
  43.           keyout++;
  44.           keyout=keyout & 0x03;
  45.                
  46.                 switch(keyout)    //扫描矩阵键盘
  47.                 {
  48.                         case 0: KEY_OUT_4 = 1;KEY_OUT_1 = 0;break;
  49.                         case 1: KEY_OUT_1 = 1;KEY_OUT_2 = 0;break;
  50.                         case 2: KEY_OUT_2 = 1;KEY_OUT_3 = 0;break;
  51.                         case 3: KEY_OUT_3 = 1;KEY_OUT_4 = 0;break;
  52.                         default:break;
  53.                 }
复制代码
全部资料51hei下载地址:
简单加法器.rar (70.2 KB, 下载次数: 107)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:711823 发表于 2020-5-21 10:26 | 显示全部楼层
善良的大学生 发表于 2020-5-18 15:56
不带仿真图吗?

(.pdsprj)文件在里面啊
回复

使用道具 举报

返回列表 发新帖
高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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