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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3753|回復: 0
打印 上一主題 下一主題
收起左側

單片機四位數碼管與4*4矩陣鍵盤計算器源代碼與Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg52.h>
  2. unsigned char code Table[10]=
  3. {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//定義一個char型一維數組(coed:存儲數據ROM)
  4. char key;//
  5. void delay()//延時函數
  6. {
  7.         char i;//
  8.         for(i=0;i<50;i++);         
  9. }

  10. void display(int num)//
  11. {
  12.         P3=0X00;//清屏;千位
  13.         P2=Table[num/1000];//送顯示
  14.         P3=0X01;//單獨供電
  15.         delay();//短延時
  16.        
  17.         P3=0X00;//清屏;百位
  18.         P2=Table[num/100%10];//送顯示
  19.         P3=0X02;//單獨供電
  20.         delay();//短延時
  21.        
  22.         P3=0X00;//清屏;十位
  23.         P2=Table[num/10%10];//送顯示
  24.         P3=0X04;//單獨供電
  25.         delay();//短延時
  26.        
  27.         P3=0X00;//清屏;個位
  28.         P2=Table[num%10];//送顯示
  29.         P3=0X08;//單獨供電
  30.         delay();//短延時
  31.        
  32. }

  33. char key_scan(void)//
  34. {
  35.         key=0;
  36.         P1=0XFE;//
  37.         //一
  38.         if(P1 !=0XFE)
  39.         {
  40.                 delay();
  41.                 if(P1 !=0XFE)
  42.                 {
  43.                         switch(P1)
  44.                         {
  45.                                 case 0x7E:key=1;break;
  46.                                 case 0xBE:key=2;break;
  47.                                 case 0xDE:key=3;break;
  48.                                 case 0xEE:key=4;break;
  49.                         }
  50.                 }
  51.                   while(P1 !=0XFE);
  52.         }
  53.        
  54.                 //二
  55.         P1=0XFD;
  56.         if(P1!=0XFD)
  57.         {
  58.                 delay();
  59.                 if(P1!=0XFD)
  60.                 {
  61.                         switch(P1)
  62.                         {
  63.                                 case 0x7D:key=5;break;
  64.                                 case 0xBD:key=6;break;
  65.                                 case 0xDD:key=7;break;
  66.                                 case 0xED:key=8;break;
  67.                         }
  68.                 }
  69.                         while(P1!=0XFD);
  70.         }

  71.                 //三
  72.         P1=0XFB;
  73.         if(P1!=0XFB)
  74.         {
  75.                 delay();
  76.                 if(P1!=0XFB)
  77.                 {
  78.                         switch(P1)
  79.                         {
  80.                                 case 0x7B:key=9;break;
  81.                                 case 0xBB:key=10;break;
  82.                                 case 0xDB:key=11;break;
  83.                                 case 0xEB:key=12;break;
  84.                         }
  85.                 }
  86.                 while(P1!=0XFB);
  87.         }
  88.        
  89.                 //四
  90.         P1=0XF7;
  91.         if(P1!=0XF7)
  92.         {
  93.                 delay();
  94.                 if(P1!=0XF7)
  95.                 {
  96.                         switch(P1)
  97.                         {
  98.                                 case 0x77:key=13;break;
  99.                                 case 0xB7:key=14;break;
  100.                                 case 0xD7:key=15;break;
  101.                                 case 0xE7:key=16;break;
  102.                         }
  103.                 }
  104.                         while(P1!=0XF7);
  105.         }
  106.         return key;
  107. }

  108. void main()//主函數
  109. {
  110.         char key_value;//按鍵信息 0代表無按鍵 1-16代表有按鍵
  111.         int a1=0;//
  112.         int a2=0;//
  113.         char ys_flag=0;//運算符
  114.         int result;//計算結果
  115.         int show;//顯示內容
  116.         while(1)
  117.         {
  118.                 display(show);
  119.                 key_value=key_scan();
  120.                
  121.                 //a1輸入
  122.                 if((key_value>0)&&(key_value<11)&&(ys_flag==0))
  123.                 {
  124.                         if(key_value==10)
  125.                         key_value=0;
  126.                         a1=a1*10+key_value;
  127.                         show=a1;
  128.                 }
  129.                
  130.                 if((key_value>12)&&(key_value<17))
  131.                 {
  132.                         ys_flag=key_value;
  133.                 }
  134.                
  135.                 //a2輸入
  136.                 if((key_value>0)&&(key_value<11)&&(ys_flag!=0))
  137.                 {
  138.                         if(key_value==10)
  139.                         key_value=0;
  140.                         a2=a2*10+key_value;
  141.                         show=a2;
  142.                 }
  143.                
  144.                 if(key_value==12)//輸入運算符
  145.                 {
  146.                         switch(ys_flag)
  147.                         {
  148.                                 case 13:result=a1+a2;break;
  149.                                 case 14:result=a1-a2;break;
  150.                                 case 15:result=a1*a2;break;
  151.                                 case 16:result=a1/a2;break;
  152.                         }
  153.                         show=result;
  154.                 }
  155.                
  156.                 if(key_value==11)//復位
  157.                 {
  158.                         show=0;
  159.                         result=0;
  160.                         a1=0;
  161.                         a2=0;
  162.                         ys_flag=0;
  163.                 }
  164.         }
  165. }
復制代碼

所有資料51hei提供下載:
四位簡易計算器.zip (114.03 KB, 下載次數: 107)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄视频在线网站 | 欧美淫片 | 国产精品久久久乱弄 | 国产激情视频 | 亚洲97 | 国产一区不卡在线观看 | 韩三级在线观看 | 精品在线一区二区三区 | 黄视频国产 | 中文字幕亚洲精品 | 亚洲一区二区av在线 | 青青草原综合久久大伊人精品 | 国产在线资源 | 中午字幕在线观看 | 中文字幕亚洲一区 | 国产精品免费观看视频 | 国产精品久久九九 | 日韩专区中文字幕 | 精品国产一区二区三区久久 | 久久成人免费视频 | 一级a爱片久久毛片 | 欧美精品久久 | 国产三区在线观看视频 | 久久久91精品国产一区二区精品 | 亚洲精品一二三 | 综合久久av | 天堂一区 | 亚洲福利网 | 国产日韩欧美电影 | 久久精品视频免费观看 | 国产三区在线观看视频 | 韩国毛片一区二区三区 | 亚洲午夜精品 | 日韩欧美二区 | 久久99国产精一区二区三区 | 国产日韩久久久久69影院 | 久久久亚洲精品视频 | 精品一区av | 亚洲一区亚洲二区 | 特级黄一级播放 | 久久国产免费看 |