欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

    標題: 基于51單片機的簡易計算器帶PCB文件與原理圖 [打印本頁]

    作者: 菜菜菜鳥    時間: 2017-12-13 16:29
    標題: 基于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)





    作者: 425683638    時間: 2018-1-15 10:03
    你好,可以私聊發我一份么?VX425683638
    作者: lhl.    時間: 2019-11-26 14:10
    有仿真圖嗎




    歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1