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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9270|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用keil軟件C語言編寫的能夠在單片機(jī)上運行的簡易計算器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:211500 發(fā)表于 2017-6-15 13:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
使用keil軟件生成hex文件,燒錄進(jìn)單片機(jī)即可上電運行
下載:
簡易計算器.doc (42.5 KB, 下載次數(shù): 12)

源程序:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned  int
  5. #define LED P0                
  6. #define KEY P1                       
  7. sbit led1=P2^2;                
  8. sbit led2=P2^3;
  9. sbit led3=P2^4;
  10. sbit Beep=P1^5;
  11. sbit SRCLK=P3^6;
  12. sbit RCLK=P3^5;
  13. sbit SER=P3^4;
  14. unsigned char code CHARCODE[6][8]={                         
  15. {0x00,0x00,0x08,0x08,0x3e,0x08,0x08,0x00},           
  16. {0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x00},
  17. {0x00,0x00,0x22,0x14,0x08,0x14,0x22,0x00},
  18. {0x00,0x00,0x08,0x08,0x2a,0x08,0x08,0x00},
  19. {0x00,0x00,0x14,0x14,0x14,0x14,0x14,0x00},
  20. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},        
  21. };
  22. uchar code TAB[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};                                  
  23. uchar code shu[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   
  24. void zhifu(uchar q);                          
  25. void yinyue(uchar m);                          
  26. void xuehao(void);                                  
  27. void delay10ms(uchar c);                  
  28. uchar keyscan(void);                          
  29. void Hc595Byte(uchar dat);                  
  30. void lay(unsigned int i);                  
  31. int main()
  32. {     
  33.     uchar a=0x00,num1=0x00,num2=0x00,num3=0x00,w=0x00,w2=0x00,g,an,d,ans1,ans2,ans3,C,L;                        
  34.   while(1)                                                                  //++++++++++++++++++?a??????+++++++++++++++++++++++++++
  35.         {
  36.           xuehao();                                  
  37.               a=keyscan();                                   
  38.               if(a==16)
  39.                     break;
  40.         }
  41. while(1)                                                         
  42. {            
  43.         g=0x00;        // 存鍵入的第一個字符
  44. while(1)
  45. { num1=keyscan();       
  46.                            if(num1<10)
  47.                             break;
  48.                     }
  49. while(1)
  50. {   w2=w;   //存鍵入的第一個數(shù)
  51.     d=g;//+-*/
  52.         g=0;          
  53.         w=num1;//存鍵入的數(shù)
  54.         L=num1;        //   
  55. while(1)//顯示鍵入的第一位數(shù)
  56. {
  57. led3=0,led2=0,led1=0,LED=shu[num1],LED=0x00;
  58. num2=keyscan();
  59. if(num2<=16)
  60. break;
  61. }
  62. if(num2<10)
  63.          
  64. {   
  65.                
  66.         w=(num1)*10+num2;//當(dāng)前數(shù)值
  67.         while(1)
  68.                
  69.         {   
  70.        
  71.                 led3=0,led2=0,led1=0,LED=shu[num2],LED=0x00;
  72.                 led3=0,led2=0,led1=1,LED=shu[num1],LED=0x00;
  73.                 num3=keyscan();
  74.                 if(num3<=16)
  75.                 {   
  76.                         if(num3<10)
  77.                         {                       
  78.                                 w=(num1)*100+(num2)*10+num3;
  79.                                 while(1)
  80.                                 {
  81.                                         led3=0,led2=0,led1=0,LED=shu[num3],LED=0x00;
  82.                      led3=0,led2=0,led1=1,LED=shu[num2],LED=0x00;
  83.                                         led3=0,led2=1,led1=0,LED=shu[num1],LED=0x00;
  84.                                         g=keyscan();
  85.                                         if(g==15)               
  86.                                                 break;
  87.                                         if(g>10&&g<16)        //判斷是否為+-*/
  88.                                         {                     
  89.                                                 while(1)                  
  90.                                                 {                                
  91.                                                         led3=0,led2=0,led1=0,LED=shu[num3];
  92.                                                         lay(5);                                               
  93.                                                         LED=0x00;    //消隱
  94.                                                         led3=0,led2=0,led1=1,LED=shu[num2];
  95.                                                         lay(5);         
  96.                                                         LED=0x00;      
  97.                                                         led3=0,led2=1,led1=0,LED=shu[L];
  98.                                                         lay(5);         
  99.                                                         LED=0x00;               
  100.                                                         led3=1,led2=1,led1=1,zhifu(g),LED=0x00;
  101.                                                         num1=keyscan();
  102.                                                         if(num1<10)       
  103.                                                                 break;  
  104.                                                 }               
  105.                                         }
  106.                                         if(g>10&&g<16)
  107.                                                 break;
  108.                                 }               
  109.                         }       
  110.                         else       
  111.                         {        g=num3;  
  112.                         if(g==15)       
  113.                                 break;      
  114.                         while(1)                       
  115.                         {                               
  116.                                 led3=0,led2=0,led1=0,LED=shu[num2];
  117.                                 lay(5);           
  118.                                 LED=0x00;               
  119.                                 led3=0,led2=0,led1=1,LED=shu[L];
  120.                                 lay(5);            
  121.                                 LED=0x00;                  
  122.                                 led3=1,led2=1,led1=1,zhifu(g),LED=0x00;
  123.                                 num1=keyscan();  
  124.                                 if(num1<10)              
  125.                                         break;                 
  126.                         }               
  127.                         }       
  128.                         if(g==15)
  129.                                 break;
  130.     }
  131.     if(g>10)       
  132.     break;       
  133.   }
  134. }
  135. else
  136. { g=num2;
  137. w=num1;
  138. if(g==15)                        //================================================
  139.          break;                                //===============================================
  140. while(1)                                //===================================================
  141. {           
  142.          led3=0,led2=0,led1=0,LED=shu[L];
  143.          lay(5);
  144.          LED=0x00;
  145.          led3=1,led2=1,led1=1,zhifu(g),LED=0x00;
  146.          num1=keyscan();
  147.          if(num1!=17)
  148.                  break;
  149. }
  150. }
  151. if(g==15)
  152.          break;
  153. else
  154.          continue;
  155. }
  156.      switch(d)                                                          //+++++++++++++++++++++???????+++++++++++++++++++++++
  157.           {case 0x0b: an=w2+w; break;
  158.            case 0x0c: an=w2-w; break;
  159.            case 0x0d: an=w2*w; break;
  160.            case 0x0e: an=w2/w; break;
  161.            default: an=0;break;
  162.       }
  163.            while(1)               
  164.            {
  165.                    if(an<10)
  166.                    {  
  167.                            led3=0,led2=0,led1=0,LED=shu[an];
  168.                        lay(5);
  169.                        LED=0x00;
  170.                            led3=1,led2=1,led1=1,zhifu(g),LED=0x00;        }
  171.                  
  172.                    else
  173.                    {
  174.                           if(an<100)
  175.                           {
  176.                                    ans2=an/10;
  177.                                    ans1=an%10;
  178.                                    led3=0,led2=0,led1=0,LED=shu[ans1];
  179.                                    lay(5);
  180.                                    LED=0x00;
  181.                                    led3=0,led2=0,led1=1,LED=shu[ans2];
  182.                                    lay(5);//延時
  183.                                    LED=0x00;
  184.                                    led3=1,led2=1,led1=1,zhifu(g),LED=0x00;       
  185.                           }
  186.                           else
  187.                           {       
  188.                                   ans3=an/100;
  189.                                   ans2=(an%100 )/10;
  190.                                   ans1=an%10;
  191.                                   led3=0,led2=0,led1=0,LED=shu[ans1];
  192.                                   lay(5);
  193.                                   LED=0x00;
  194.                                   led3=0,led2=0,led1=1,LED=shu[ans2];       
  195.                                   lay(5);
  196.                                   LED=0x00;
  197.                                   led3=0,led2=1,led1=0,LED=shu[ans3];
  198.                                   lay(5);
  199.                                   LED=0x00;
  200.                                   led3=1,led2=1,led1=1,zhifu(g),LED=0x00;
  201.                           }
  202.                         }
  203.                    C=keyscan();
  204.                    if(C==16)
  205.                       break;
  206.                 }

  207. }   
  208. //======================================================


  209.    return 0;
  210. }

  211. //===================================
  212. void xuehao(void)
  213. {
  214. led3=0,led2=0,led1=0,LED=shu[1],LED=0x00;
  215. led3=0,led2=0,led1=1,LED=shu[2],LED=0x00;
  216. led3=0,led2=1,led1=0,LED=shu[0],LED=0x00;
  217. led3=0,led2=1,led1=1,LED=shu[3],LED=0x00;
  218. led3=1,led2=0,led1=0,LED=shu[2],LED=0x00;
  219. led3=1,led2=0,led1=1,LED=shu[3],LED=0x00;
  220. led3=1,led2=1,led1=0,LED=shu[0],LED=0x00;
  221. led3=1,led2=1,led1=1,LED=shu[3],LED=0x00;
  222. }
  223. //=====================================
  224. uchar keyscan(void)
  225. {   uchar Keyvalue=17;        
  226.         KEY=0x0f;
  227.         if(KEY!=0x0f)
  228.         {
  229.                 delay10ms(1);
  230.                 if(KEY!=0x0f)
  231.                 {       
  232.                         KEY=0x0F;
  233.                         switch(KEY)
  234.                         {
  235.                                 case(0x07):        Keyvalue=1;break;
  236.                                 case(0x0b):        Keyvalue=2;break;
  237.                                 case(0x0d): Keyvalue=3;break;
  238.                                 case(0x0e):        Keyvalue=4;break;
  239.                         }
  240.                         //2a?DD
  241.                         KEY=0xf0;
  242.                         switch(KEY)
  243.                         {
  244.                                 case(0x70):        Keyvalue=Keyvalue;   break;
  245.                                 case(0xb0):        Keyvalue=Keyvalue+4; break;
  246.                                 case(0xd0): Keyvalue=Keyvalue+8; break;
  247.                                 case(0xe0):        Keyvalue=Keyvalue+12;break;
  248.                         }
  249.                         while(KEY!=0xf0);         
  250.                                                   
  251.                 }
  252.                 yinyue(        Keyvalue);
  253.         }
  254.         if(Keyvalue==10)
  255.         {
  256.         Keyvalue=Keyvalue-10;
  257.         }
  258.            return Keyvalue;
  259. }
  260. //....................................................................................
  261. //.....................................................................................

  262. void delay10ms(uchar c)  
  263. {
  264.     uchar a,b;
  265.     for(;c>0;c--)
  266.         for(b=38;b>0;b--)
  267.             for(a=130;a>0;a--);
  268. }
  269. //............................................................................................
  270. void yinyue(uchar m)                         
  271. {
  272.      uchar k;
  273.      for(k=0;k<100;k++)
  274.         {
  275.                 Beep=0;
  276.          lay(m*2);
  277.                 Beep=1;
  278.         lay(m*2);
  279.         }
  280. }         
  281.     //=========================
  282. void Hc595Byte(unsigned char dat)
  283. {        unsigned char a;
  284.         SRCLK=0;
  285.         RCLK=0;
  286.         for(a=0;a<8;a++)
  287.         {
  288.                 SER=dat>>7;
  289.                 dat<<=1;

  290.                 SRCLK=1;
  291.                 _nop_();
  292.                 _nop_();
  293.                 SRCLK=0;       
  294.         }
  295.         RCLK=1;
  296.         _nop_();
  297.         _nop_();
  298.         RCLK=0;
  299. }
  300. //**********************************************
  301. void zhifu(uchar q)
  302. {
  303.           unsigned char tab,j;
  304.         j=q-11;
  305.                 for(tab=0;tab<8;tab++)
  306.                         {       
  307.                                 Hc595Byte(0x00);                                                                                                                                                   
  308.                                 LED= TAB[tab];                               
  309.                                 Hc595Byte(CHARCODE[j][tab]);
  310.                         }          
  311. }
  312. void lay(unsigned int i)
  313. {
  314.         char j;
  315.         for(i; i > 0; i--)
  316.                 for(j = 200; j > 0; j--);
  317. }


復(fù)制代碼


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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人免费观看男女羞羞视频 | 91精品国产乱码久久久久久 | 国产精品无 | 黄色欧美视频 | 欧美a在线| 国产精品高清在线 | 毛片.com| 中文字幕av一区二区三区 | 91人人澡人人爽 | 伊人一二三 | 久久久久久国产一区二区三区 | 成人在线视频免费看 | 久久69精品久久久久久久电影好 | 国产精品久久久久久久久久 | 在线看片国产 | 在线色网| 欧美成视频 | 精品久久国产 | 亚洲成人精品 | 久久精品国产一区二区三区不卡 | 国产资源网 | 欧美日韩视频在线播放 | 中文字幕第一页在线 | 精品日韩一区 | 国产精品毛片无码 | 国产精品一区二区电影 | 亚洲精品456 | 日韩成人在线观看 | 成人二区 | 黑人久久久 | 国产超碰人人爽人人做人人爱 | 日韩精品在线一区 | 999re5这里只有精品 | 欧美日韩精品免费观看 | 国产亚洲精品久久久久久豆腐 | 一区二区三区四区在线视频 | 亚洲综合大片69999 | www.99精品| 欧美日韩高清一区二区三区 | 亚洲精品国产偷自在线观看 | 精品一区二区三区在线观看国产 |