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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的簡易計算器帶PCB文件與原理圖

[復制鏈接]
跳轉到指定樓層
樓主
Altium Designer畫的單片機計算器原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機源程序如下:
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<math.h>
  5. #define PI        3.1415926
  6. #define uint unsigned int
  7. #define uchar unsigned char
  8. #define ulong        unsigned long
  9. uchar table[20]="";
  10. float a=0;
  11. sbit dula=P2^6;
  12. sbit wela=P2^7;
  13. sbit lcden=P2^5;
  14. sbit lcdrs=P1^0;
  15. sbit ledrw=P1^1;
  16. sbit k1=P1^4;
  17. sbit k2=P1^5;
  18. sbit k3=P1^6;
  19. sbit k4=P1^7;

  20. uchar shift;//shift鍵
  21. uchar saojiao;//三角函數flag   sin 1,cox 2,tan 3,asin 4,acos 5,atan 6
  22. int flag1=0; //判斷是否之前輸出了等號,繼續計算改為第一行
  23. uchar num;
  24. uint t=0;
  25. uchar temp;
  26. float p=0.1;
  27. int q=0;
  28. //int o;          判斷等號運算后是否為整數
  29. //float p;    判斷等號運算后是否為整數
  30. void keyscan();
  31. void dulianjian();
  32. void delay(uint z)
  33. {
  34.         uint x,y;
  35.         for(x=z;x>0;x--)
  36.                 for(y=110;y>0;y--);
  37. }
  38. void write_com(uchar com)
  39. {
  40.         lcdrs=0;
  41.         P0=com;
  42.         delay(5);
  43.         lcden=1;
  44.         delay(5);
  45.         lcden=0;
  46. }

  47. void write_data(uchar date)
  48. {
  49.         lcdrs=1;
  50.         P0=date;
  51.         delay(5);
  52.         lcden=1;
  53.         delay(5);
  54.         lcden=0;
  55. }
  56. void init()
  57. {
  58.         ledrw=0;
  59.         dula=0;
  60.         wela=0;
  61.         lcden=0;
  62.         write_com(0x38);
  63.         write_com(0x0e);
  64.         write_com(0x06);
  65.         write_com(0x01);

  66. }

  67. void main()
  68. {
  69.                         init();
  70.     while(1)
  71.         {
  72.                         keyscan();
  73.                         dulianjian();
  74.         }

  75. }
  76. void dulianjian()
  77. {
  78.                 if(k1==0)
  79.                 {
  80.                         delay(20);                 //消抖
  81.                         if(k1==0)
  82.                         {
  83.                           while(!k1);
  84.                           if(shift==0)
  85.                           {
  86.                                 saojiao=1;
  87.                                 write_data('s');q++;if(q>16)write_com(0x18);
  88.                                 write_data('i');q++;if(q>16)write_com(0x18);
  89.                                 write_data('n');q++;if(q>16)write_com(0x18);
  90.                           }
  91.                           if(shift==1)
  92.                           {
  93.                                 saojiao=4;
  94.                                 write_data('a');q++;if(q>16)write_com(0x18);
  95.                                 write_data('s');q++;if(q>16)write_com(0x18);
  96.                                 write_data('i');q++;if(q>16)write_com(0x18);
  97.                                 write_data('n');q++;if(q>16)write_com(0x18);
  98.                                 shift=0;
  99.                           }
  100.                         }
  101.                 }
  102.                 if(k2==0)
  103.                 {
  104.                         delay(20);                 //消抖
  105.                         if(k2==0)
  106.                         {
  107.                           while(!k2);
  108.                            if(shift==0)
  109.                           {
  110.                                 saojiao=2;
  111.                                 write_data('c');q++;if(q>16)write_com(0x18);
  112.                                 write_data('o');q++;if(q>16)write_com(0x18);
  113.                                 write_data('s');q++;if(q>16)write_com(0x18);
  114.                           }
  115.                           if(shift==1)
  116.                           {
  117.                                 saojiao=5;
  118.                                 write_data('a');q++;if(q>16)write_com(0x18);
  119.                                 write_data('c');q++;if(q>16)write_com(0x18);
  120.                                 write_data('o');q++;if(q>16)write_com(0x18);
  121.                                 write_data('s');q++;if(q>16)write_com(0x18);
  122.                                 shift=0;
  123.                           }
  124.                           
  125.                         }
  126.                 }
  127.                 if(k3==0)
  128.                 {
  129.                         delay(20);                 //消抖
  130.                         if(k3==0)
  131.                         {
  132.                           while(!k3);
  133.                            if(shift==0)
  134.                           {
  135.                                 saojiao=3;
  136.                                 write_data('t');q++;if(q>16)write_com(0x18);
  137.                                 write_data('a');q++;if(q>16)write_com(0x18);
  138.                                 write_data('n');q++;if(q>16)write_com(0x18);
  139.                           }
  140.                           if(shift==1)
  141.                           {
  142.                                 saojiao=6;
  143.                                 write_data('a');q++;if(q>16)write_com(0x18);
  144.                                 write_data('t');q++;if(q>16)write_com(0x18);
  145.                                 write_data('a');q++;if(q>16)write_com(0x18);
  146.                                 write_data('n');q++;if(q>16)write_com(0x18);
  147.                                 shift=0;
  148.                           }
  149.                         }
  150.                 }
  151.                 if(k4==0)
  152.                 {
  153.                         delay(20);                 //消抖
  154.                         if(k4==0)
  155.                         {
  156.                           while(!k4);
  157.                                 shift=1;
  158.                         }
  159.                 }


  160. }
  161. void keyscan()
  162. {
  163. char size;
  164. float shu_1,shu_2;
  165. uint num;
  166. uchar m;


  167.                         P3=0xfe;
  168.                         temp=P3;
  169.                         temp=temp&0xf0;
  170.                         while(temp!=0xf0)
  171.                                 {
  172.                                         delay(5);
  173.                                         temp=P3;
  174.                                         temp=temp&0xf0;
  175.                                         while(temp!=0xf0)
  176.                                         {
  177.                                                 temp=P3;
  178.                                         switch(temp)
  179.                                                 {
  180.                                                         case 0xee:num=1;write_data('1');q++;if(q>16)write_com(0x18);
  181.                                                                 break;
  182.                                                         case 0xde:num=2; write_data('2');q++;if(q>16)write_com(0x18);
  183.                                                                 break;
  184.                                                         case 0xbe:num=3; write_data('3');q++;if(q>16)write_com(0x18);
  185.                                                                 break;
  186.                                                         case 0x7e: num=11;;
  187.                                                         if(flag1==1){
  188.                                                                                 init();flag1=0;q=strlen(table);for(num=0;table[num]!='\0';num++)
  189.                                                                                                                         {
  190.                                                                                                                                 write_data(table[num]);
  191.                                                                                                                                 delay(5);         
  192.                                                                                                                                 }
  193.                                                                                  }
  194.                                                                         write_data('+'); p=0.1;m=0;q++;if(q>16)write_com(0x18);
  195.                                                                                 {                  
  196.                                                                                         t++;
  197.                                                                                         if(t==1&&saojiao==0)shu_1=a;
  198.                                                                                           if(t>=2&&saojiao==0)
  199.                                                                                   {
  200.                                                                                     if(size=='+')shu_1+=a;
  201.                                                                                         if(size=='-')shu_1-=a;
  202.                                                                                         if(size=='*')shu_1*=a;
  203.                                                                                         if(size=='/')shu_1/=a;
  204.                                                                                   }

  205.                                                                                   if(saojiao==1)
  206.                                                                                   {
  207.                                                                                          shu_1=sin(a*(2*PI/360));
  208.                                                                                          saojiao=0;
  209.                                                                                   }
  210.                                                                                  if(saojiao==2)
  211.                                                                                   {
  212.                                                                                          shu_1=cos(a*(2*PI/360));
  213.                                                                                          saojiao=0;
  214.                                                                                   }
  215.                                                                                   if(saojiao==3)
  216.                                                                                   {
  217.                                                                                          shu_1=tan(a*(2*PI/360));
  218.                                                                                          saojiao=0;
  219.                                                                                   }
  220.                                                                                  if(saojiao==4)
  221.                                                                                   {
  222.                                                                                          
  223. ……………………

  224. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
計算器PCB最終.rar (1006.77 KB, 下載次數: 60)
計算器實驗程序.zip (58.02 KB, 下載次數: 29)




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

使用道具 舉報

沙發
ID:274291 發表于 2018-1-15 10:03 | 只看該作者
你好,可以私聊發我一份么?VX425683638
回復

使用道具 舉報

板凳
ID:649892 發表于 2019-11-26 14:10 | 只看該作者
有仿真圖嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费国产视频 | 中文字幕1区| 成人av一区二区三区 | 亚洲精品一二三区 | 久久久久亚洲精品 | 成人免费视频网站在线看 | 在线观看www高清视频 | 欧美一区二区三区在线播放 | 亚洲欧美激情网 | 精品国产乱码久久久久久图片 | 国产毛片毛片 | av激情影院 | 欧美黄页| 久久久久亚洲视频 | 国产亚洲精品久久久优势 | 视频一区在线 | www日韩| 在线毛片网 | 久久在线 | 国产欧美精品一区二区 | 国产成人精品综合 | 日韩欧美精品 | 亚洲高清在线观看 | 在线免费黄色 | 成人网在线 | 久久视频免费观看 | 久久噜噜噜精品国产亚洲综合 | 91最新视频 | 亚洲精品一区二区三区中文字幕 | 国产精品不卡 | 日日干天天操 | 亚洲综合大片69999 | 国产欧美精品在线观看 | 91视频观看| 亚洲电影在线播放 | 成人免费视频在线观看 | 一色一黄视频 | 9191在线观看 | 精品二区 | 久久久久久久国产 | 91精品一区二区三区久久久久 |