标题: 51单片机基于六位数码管的简易加法计算器Proteus仿真程序 [打印本页]

作者: SAFASDF    时间: 2020-5-8 21:12
标题: 51单片机基于六位数码管的简易加法计算器Proteus仿真程序
自己用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, 下载次数: 108)

作者: 善良的大学生    时间: 2020-5-18 15:56
不带仿真图吗?

作者: SAFASDF    时间: 2020-5-21 10:26
善良的大学生 发表于 2020-5-18 15:56
不带仿真图吗?

(.pdsprj)文件在里面啊
作者: 。1532    时间: 2020-6-1 11:56
没有proteus仿真图




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1