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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機簡易計算器proteus仿真+代碼+原理圖文件

[復制鏈接]
跳轉到指定樓層
樓主


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


單片機源程序如下:
  1. /*******************************************************************************************/
  2. //   單片機原理與應用課程設計
  3. //   要點:1、能實現加、減、乘、除功能
  4. //       2、數碼0-9及運算符號通過按鍵盤輸入,并在液晶顯示器上顯示算式及運算結果
  5. //       4、用PROTEUS仿真
  6. //       5、焊接電路板并調試運行
  7. //   出品:濰坊學院信息與控制工程學院
  8. //   日期:2014年12月
  9. //   注意:該程序僅供參考
  10. /*******************************************************************************************/

  11. #include <reg51.h>
  12. #define uint unsigned int
  13. #define uchar unsigned char

  14. #define     LCDIO      P0  //1602數據口

  15. uchar code temp[]="0123456789";
  16. uchar  temp1[8],mm[4],temp2[8];
  17. float q;
  18. uchar num,num1,k,r=0,n,h,d,w;
  19. float  sum;
  20. long uu;
  21. sbit  rw=P2^1;
  22. sbit  rs=P2^0;
  23. sbit  ep=P2^2;

  24. sbit p10=P1^0;
  25. sbit p11=P1^1;
  26. sbit p12=P1^2;
  27. sbit p13=P1^3;
  28. sbit p14=P1^4;
  29. sbit p15=P1^5;
  30. sbit p16=P1^6;
  31. sbit p17=P1^7;
  32. void delayms(uint m)
  33. {
  34.           uint i,j;
  35.           for (i=0;i<m;i++)
  36.           for (j=0;j<120;j++);
  37. }

  38. void write_com(uchar com)
  39. {
  40.            rw=0;
  41.            rs=0;
  42.            ep=0;
  43.            LCDIO =com;
  44.            delayms(5);
  45.            ep=1;
  46.            delayms(5);
  47.            ep=0;   
  48. }
  49. void write_date(uchar date)
  50. {
  51.            rw=0;
  52.            rs=1;
  53.            ep=0;
  54.            LCDIO =date;
  55.            delayms(5);
  56.            ep=1;
  57.            delayms(5);
  58.            ep=0;
  59. }
  60. void init()
  61. {
  62.      
  63.          rs=0;
  64.          rw=0;
  65.          ep=0;
  66.          write_com(0x38);
  67.          write_com(0x0c);
  68.          write_com(0x06);         
  69. }
  70. void shaomiao()
  71. {
  72.   uchar i,s;
  73.   for (i=0,s=0xfe;i<4;i++)
  74.      {
  75.            P1=s;
  76.            if(p14==0|p15==0|p16==0|p17==0)
  77.              {
  78.                    delayms(10);
  79.                    if(p14==0|p15==0|p16==0|p17==0)
  80.                      {
  81.                 if(p14==0)
  82.                                   {
  83.                                     if(p10==0)
  84.                                           num=7;
  85.                                           if(p11==0)
  86.                                           num=4;
  87.                                           if(p12==0)
  88.                                           num=1;
  89.                                           if(p13==0)
  90.                                           num=10;
  91.                                   }                        
  92.                                 if(p15==0)
  93.                                   {
  94.                                     if(p10==0)
  95.                                           num=8;
  96.                                           if(p11==0)
  97.                                           num=5;
  98.                                           if(p12==0)
  99.                                           num=2;
  100.                                           if(p13==0)
  101.                                           num=0;
  102.                                   }        
  103.                                 if(p16==0)
  104.                                   {
  105.                                     if(p10==0)
  106.                                           num=9;
  107.                                           if(p11==0)
  108.                                           num=6;
  109.                                           if(p12==0)
  110.                                           num=3;
  111.                                           if(p13==0)
  112.                                           num=11;
  113.                                   }
  114.                                 if(p17==0)
  115.                                   {
  116.                                     if(p10==0)
  117.                                           num=15;
  118.                                           if(p11==0)
  119.                                           num=14;
  120.                                           if(p12==0)
  121.                                           num=13;
  122.                                           if(p13==0)
  123.                                           num=12;
  124.                                   }
  125.                          while(p14==0|p15==0|p16==0|p17==0);                  
  126.                          }
  127.                   if(num<10)
  128.                   {
  129.                   k++;
  130.           w=0;
  131.                   }                  

  132.             if(d==1)
  133.    {
  134.      d=0;
  135.          sum=-sum;
  136.          
  137.    }
  138.                   
  139.   }
  140.    
  141.    s=s<<1|0x01;
  142.    s=s|0xf0;         
  143. }  
  144. }
  145. void display1()
  146. {

  147.          uchar i;
  148.          uu=(long)(sum);
  149.          temp1[7]=uu/10000000;
  150.          temp1[6]=uu%10000000/1000000;
  151.          temp1[5]=uu%10000000%1000000/100000;
  152.          temp1[4]=uu%10000000%1000000%100000/10000;
  153.          temp1[3]=uu%10000000%1000000%100000%10000/1000;
  154.          temp1[2]=uu%10000000%1000000%100000%10000%1000/100;
  155.          temp1[1]=uu%10000000%1000000%100000%10000%1000%100/10;
  156.          temp1[0]=uu%10;
  157.   
  158.           if(h==1)
  159.                    {
  160.                      h=2;
  161.                             write_com(0x80+15-k);
  162.                          write_date(0x2d);
  163.                    }
  164.           if(r==0)
  165.                  write_com(0x80+15);
  166.           if(r==1)
  167.                  write_com(0xc0+15);
  168.           write_com(0x04);
  169.          for (i=0;i<k;i++)
  170.                  {  
  171.                    write_date(temp[temp1[i]]);
  172.                    delayms(5);
  173.                  }
  174.    
  175. }
  176. void display2()
  177. {
  178.          uchar i;
  179.          temp2[7]=uu%10000000/1000000;
  180.          temp2[6]=uu%10000000%1000000/100000;
  181.          temp2[5]=uu%10000000%1000000%100000/10000;
  182.          temp2[4]=uu%10000000%1000000%100000%10000/1000;
  183.          temp2[2]=uu%10000000%1000000%100000%10000%1000/100;
  184.          temp2[1]=uu%10000000%1000000%100000%10000%1000%100/10;
  185.          temp2[0]=uu%10;
  186.   
  187.   
  188.           if(h==1)
  189.                    {
  190.                      h=2;
  191.                             write_com(0x80+15-k-4);
  192.                          write_date(0x2d);
  193.                    }
  194.           if(r==0)
  195.                  write_com(0x80+15);
  196.           if(r==1)
  197.                  write_com(0xc0+15);
  198.           write_com(0x04);
  199.          for (i=0;i<k+4;i++)
  200.                  {  
  201.                   
  202.                             if(i==3)
  203.                            {
  204.                            write_date(0x2e);
  205.                            i++;
  206.                            }        
  207.                            write_date(temp[temp2[i]]);
  208.                            delayms(5);
  209.                  }         
  210. }      
  211. void panduan()
  212. {
  213.    
  214.     if(n==1&num==0)
  215.      {
  216.       write_com(0x01);
  217.           write_com(0x80+15);
  218.           write_date(temp[0]);
  219.           k=0;
  220.           n=0;

  221.      }
  222.         if(num==10)
  223.                  {
  224.                    write_com(0x01);
  225.                    k=0;
  226.                    n=0;
  227.                    r=0;               
  228.                  }
  229.         if(n==1&num>=1&num<10)
  230.                  {
  231.                    write_com(0x01);
  232.                    k=1;
  233.                    n=0;
  234.                    r=0;
  235.                  }  
  236.    if(num<10&k==1)
  237.          {
  238.                sum=num;
  239.                mm[0]=num;
  240.                if(num==0)
  241.                k=0;
  242.          }
  243.    if(num<10&k==2)
  244.              {
  245.                sum=mm[0]*10+num;
  246.                mm[1]=num;         
  247.              }  
  248.    if(num<10&k==3)
  249.              {
  250.                sum=mm[0]*100+mm[1]*10+num;
  251.                mm[2]=num;
  252.              }
  253.    if(num<10&k==4)
  254.              {
  255.                sum=mm[0]*1000+mm[1]*100+mm[2]*10+num;
  256.                mm[3]=num;
  257.              }
  258.    if(num<10&k==5)
  259.              {
  260.                   
  261.                         num=10;
  262.              }
  263.    
  264.    if (num>=12&num<16)
  265.          {
  266.                   
  267.                   r=1;
  268.                k=0;
  269.                q=sum;
  270.                     
  271.                    if(num==12)
  272.                      {
  273.                           write_com(0xc0);
  274.                           write_date(0x2b);
  275.                          }
  276.                    if(num==13)
  277.                      {
  278.                           write_com(0xc0);
  279.                           write_date(0x2d);
  280.                          }
  281.                    if(num==14)
  282.                      {
  283.                           write_com(0xc0);
  284.                           write_date(0x2a);
  285.                          }
  286.                    if(num==15)
  287.                      {
  288.                           write_com(0xc0);
  289.                           write_date(0xfd);
  290.                          }
  291.                     num1=num;
  292.                         n=0;
  293.        }

  294.    if(num==11&w==0)
  295.         {
  296.           w=1;
  297.           n=1;
  298.           r=0;         
  299.           num=16;  
  300.           write_com(0x01);
  301.           if(num1==12)            
  302.                 sum=q+sum;
  303.           if(num1==13)                 
  304.              sum=q-sum;         
  305.           if(num1==14)
  306.                 sum=q*sum;
  307.           if(num1==15)
  308.             sum=q/sum;           
  309.          
  310.           if(sum>=0)
  311.             h=0;
  312.           else
  313.            {
  314.            h=1;
  315.            sum=-sum;
  316.            d=1;
  317.            }
  318.       if(sum<100000000)
  319.                  k=8;
  320.           if(sum<10000000)
  321.                  k=7;
  322.           if(sum<1000000)
  323.                  k=6;
  324.           if(sum<100000)
  325.                  k=5;
  326.           if(sum<10000)
  327.                  k=4;
  328.           if(sum<1000)
  329.                  k=3;
  330.           if(sum<100)
  331.                  k=2;  
  332.           if(sum<10)
  333.                  k=1;
  334.         
  335.         if(sum!=(long)(sum))
  336.           {
  337.                   uu=sum*1000;
  338.          
  339.             display2();
  340.                  
  341.           }

  342.   }   
  343. if(sum==(long)(sum))
  344.           display1();         
  345.                           
  346. }                 
  347.         
  348.                  void main()
  349. {  
  350.    init();
  351.    while(1)
  352.    {
  353.     shaomiao();
  354.         panduan();        
  355.    }
  356.   
  357. }
復制代碼

所有資料51hei提供下載:
http://www.zg4o1577.cn/bbs/dpj-142615-1.html


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

使用道具 舉報

沙發
ID:793700 發表于 2020-7-1 08:55 | 只看該作者
誒作者在嗎有個問題想請教一下
回復

使用道具 舉報

板凳
ID:863934 發表于 2020-12-20 14:37 | 只看該作者
有個問題想請教一下
回復

使用道具 舉報

地板
ID:939070 發表于 2021-6-17 08:09 | 只看該作者
有個問題想請教一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产ts人妖系列高潮 | 国产在线永久免费 | 日本欧美国产 | 成人免费在线 | 黄色av观看 | 黄色永久免费 | 久久久久久久一区二区 | 欧美久久久久 | 国产精品免费一区二区三区四区 | 欧美a级成人淫片免费看 | 亚洲国产一区二区视频 | 极品的亚洲 | 国产精品久久久久久吹潮日韩动画 | 日韩淫片免费看 | 亚洲网站在线观看 | 中文字幕亚洲精品 | 国产成人精品久久二区二区91 | 久久草视频 | 亚洲精品大片 | 精品福利在线 | 久草视频在 | 日本一区二区三区精品视频 | 综合久久综合久久 | 国产免费一区二区 | 久久久久9999亚洲精品 | 亚洲欧美精品国产一级在线 | 成人精品国产 | 91福利网 | 久久久久久久久久久久一区二区 | 日韩精品在线观看一区二区三区 | 最近中文字幕在线视频1 | 成人免费毛片片v | 久久精品国产一区二区三区 | a毛片 | 99精品一区二区三区 | 亚洲精品一区二区在线观看 | 韩国av电影网 | 偷拍自拍网 | 国产欧美精品一区二区三区 | www亚洲一区 | 国产精品欧美精品 |