久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 51單片機四位數碼管計算器 Proteus仿真程序 [打印本頁]

作者: abscond    時間: 2023-12-30 16:26
標題: 51單片機四位數碼管計算器 Proteus仿真程序
4位數加法計算器的設計
1.系統通過4x4的矩陣鍵盤輸入數字及運算符。 (40分)
2.可以進行4位十進制數以內的加法運算,如果計算結果超過4位十進制數,則屏幕顯示E(30分)
3.可以進行加法以外的計算 (乘、除、減) 。 (20 )。4@,其他功能 (創新部分 10分)

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <REGX52.H>               
  2. void display(int num1);                       
  3. void DelayXms(unsigned int x);       
  4. void keyScan();                                       
  5. void keyAdd();                                       
  6. void pd();                                               
  7. int n1, n2, n3, n4, numKey=10000, num=0, num0=0;
  8. char fuhao='0',fuhao0='0';               
  9. unsigned char duan[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x86};
  10. void main(){
  11.         while(1){
  12.                 keyScan();                       
  13.                 pd();                                       
  14.                 display(num);                       
  15.         }
  16. }
  17. void keyAdd(){              
  18.         if(numKey<10000){
  19.                 num=num*10+numKey;
  20.                 numKey=10000;
  21.         }
  22. }
  23. void pd(){
  24.         keyAdd();                               
  25.         if(fuhao=='c'){                       
  26.                 num=0;
  27.                 num0=0;
  28.                 fuhao0='0';
  29.                 fuhao='0';
  30.         }
  31.         if(fuhao=='+'){                       
  32.                 fuhao0='+';                       
  33.                 fuhao='0';                       
  34.                 num0=num;                       
  35.                 num=0;
  36.         }
  37.         if(fuhao=='-'){                               
  38.                 fuhao0='-';
  39.                 fuhao='0';
  40.                 num0=num;
  41.                 num=0;
  42.         }       
  43.         if(fuhao=='*'){                               
  44.                 fuhao0='*';
  45.                 fuhao='0';
  46.                 num0=num;
  47.                 num=0;
  48.         }       
  49.         if(fuhao=='/'){                       
  50.                 fuhao0='/';
  51.                 fuhao='0';
  52.                 num0=num;
  53.                 num=0;
  54.         }
  55.         if(fuhao=='='){                       
  56.                 if(fuhao0=='+')num=num0+num;
  57.                 else if(fuhao0=='-')num=num0-num;
  58.                 else if(fuhao0=='*')num=num0*num;
  59.                 else if(fuhao0=='/')num=num0/num;
  60.                 fuhao='0';
  61.                 num0=0;
  62.         }
  63. }
  64. void keyScan(){
  65.         P3=0xef;//1110 1111
  66.         if(!P3_3){numKey=7;while(!P3_3);}if(!P3_2){numKey=8;while(!P3_2);}if(!P3_1){numKey=9;while(!P3_1);}if(!P3_0){fuhao='/';while(!P3_0);}
  67.         P3=0xdf;
  68.         if(!P3_3){numKey=4;while(!P3_3);}if(!P3_2){numKey=5;while(!P3_2);}if(!P3_1){numKey=6;while(!P3_1);}if(!P3_0){fuhao='*';while(!P3_0);}
  69.         P3=0xbf;
  70.         if(!P3_3){numKey=1;while(!P3_3);}if(!P3_2){numKey=2;while(!P3_2);}if(!P3_1){numKey=3;while(!P3_1);}if(!P3_0){fuhao='-';while(!P3_0);}
  71.         P3=0x7f;
  72.         if(!P3_3){fuhao='c';while(!P3_3);}if(!P3_2){numKey=0;while(!P3_2);}if(!P3_1){fuhao='=';while(!P3_1);}if(!P3_0){fuhao='+';while(!P3_0);}
  73. }
  74. void display(int num1){
  75.         if(num1<= 9999)       
  76.         {
  77.                 n4=num1%10;
  78.                 n3=num1/10%10;
  79.                 n2=num1/100%10;
  80.                 n1=num1/1000%10;
  81.                 P2=0x01;
  82.                 P0=duan[n1];
  83.                 DelayXms(4);
  84.                 P2=0x02;
  85.                 P0=duan[n2];
  86.                 DelayXms(4);
  87.                 P2=0x04;
  88.                 P0=duan[n3];
  89.                 DelayXms(4);
  90.                 P2=0x08;
  91.                 P0=duan[n4];
  92.                 DelayXms(4);
  93.         }
  94.         else
  95.         {
  96.                 P2=0x01;
  97.                 P0=duan[10];
  98.                 DelayXms(4);
  99.                 P2=0x02;
  100.                 P0=duan[10];
  101.                 DelayXms(4);
  102.                 P2=0x04;
  103.                 P0=duan[10];
  104.                 DelayXms(4);
  105.                 P2=0x08;
  106.                 P0=duan[10];
  107.                 DelayXms(4);
  108.        
  109.         }
  110.                
  111. }
  112. void DelayXms(unsigned int x)               
  113. {        unsigned char i, j;
  114.         while(x--)
  115.         {        i = 2;
  116.                 j = 239;
  117.                 do{while (--j);
  118.                 }while (--i);
  119.         }
  120. }
復制代碼

仿真程序: 四位數碼管計算器.7z (51.33 KB, 下載次數: 31)





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本成人综合 | 欧美午夜精品久久久久久浪潮 | 欧美一区二区在线播放 | 在线日韩欧美 | 天天操天天射综合 | 欧美精品91 | 国产高清在线观看 | 亚洲在线免费观看 | 美女亚洲一区 | 亚洲国产精品一区二区久久 | 日本精品一区二区三区视频 | 99婷婷 | 欧美日韩国产一区二区 | 国产精品久久久久久久久久久久冷 | 日本成人中文字幕在线观看 | 亚洲欧美一区二区三区在线 | 日韩高清一区 | 国产高清一二三区 | 国产免费av在线 | 亚洲免费视频在线观看 | 国产一区欧美 | 国产精品美女视频 | 亚洲欧美日韩网站 | 男人的天堂中文字幕 | 阿v视频在线观看 | 欧美一区二区三区在线 | 日韩美女在线看免费观看 | 一级国产精品一级国产精品片 | 国产精品视频一区二区三区四区国 | 亚洲国产一区二区三区, | 99日韩 | 精品99在线 | www97影院 | 欧美黑人激情 | 99热热热热 | 麻豆va | 亚洲一区二区久久久 | 精品福利在线 | 成人动漫一区二区 | 中文字幕亚洲精品在线观看 | 激情a |