Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1593|回复: 5

20光信万龙腾组:简易计算器设计

[复制链接]

3

主题

6

帖子

35

积分

新手上路

Rank: 1

积分
35
发表于 2022-11-3 18:20:46 | 显示全部楼层 |阅读模式
仿真负责人:岳红玲
进度:代码出错;
         仿真时lcd板不能显示计算结果,只能显示算式;
问题: 现在代码基础上加上sprinf语句,编译报错
         


  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;
  6. sbit Icden=P1^2;                       //        液晶使能端 E
  7. sbit Icdrs=P1^4;
  8. sbit mh=P1^3;
  9. uint key;
  10. uint num,i;                           
  11. uchar table3[30];
  12. uchar table4[30];                                  //液晶数据命令选择端        RS
  13. uint table2[]={0x31,0x32,0x33,0x2b,
  14.                0x34,0x35,0x36,0x2d,
  15.                            0x37,0x38,0x39,0x2a,
  16.                            0x30,0x3d,0x01,0x2f};  //LCD显示
  17. void delay(uint xms)
  18. {uint i,j;
  19. for(i=xms;i>0;i--)
  20.   for(j=110;j>0;j--);
  21. }
  22. void write_com(uchar com)
  23. {       
  24.     Icdrs=0;
  25.     P0=com;
  26.         delay(5);
  27.         Icden=1;
  28.         delay(5);
  29.         Icden=0;
  30.        
  31. }
  32. void write_data(uint data1)
  33. {   Icdrs=1;
  34.     P0=data1;
  35.         delay(5);
  36.         Icden=1;
  37.         delay(5);
  38.         Icden=0;
  39. }
  40. void init()
  41. {   dula=0;
  42.         wela=0;
  43.         Icden=0;
  44.     write_com(0x38);
  45.         write_com(0x0c);
  46.         write_com(0x06);
  47.         write_com(0x01);
  48. }

  49. void ji_suan(void)
  50. {  uint sum=0,shu=0,shu2=0,mer=1;
  51.    double guo1=0,guo2=0,jie=0;

  52.    for(num=0;num<30;num++)
  53.          { if(table3[num]<='9'||table3[num]>='0')
  54.                    {        sum=sum*10;
  55.                   sum=table3[num]-'0'; }
  56.            else
  57.            {table4[shu]=sum;
  58.            shu=shu+1;
  59.            table4[shu]=table3[num];
  60.            shu++;
  61.          }
  62.          }
  63.   for(shu2=0;shu2<shu;shu2++)
  64.          {         
  65.          if(table4[shu2]=='*')
  66.          {         if(mer==1)
  67.                  {
  68.             guo1=table4[shu2-1]-'0';
  69.                 guo2=table4[shu2+1]-'0';
  70.                  jie=guo1*guo2;
  71.            }
  72.                 else {
  73.                 guo1=table4[shu2+1]-'0';
  74.                 jie=jie*guo1;
  75.             }
  76.      }
  77.          if(table4[shu2]=='/')
  78.          {         if(mer==1)
  79.                  {
  80.             guo1=table4[shu2-1]-'0';
  81.                 guo2=table4[shu2+1]-'0';
  82.                  jie=guo1/guo2;
  83.            }
  84.                 else {
  85.                 guo1=table4[shu2+1]-'0';
  86.                 jie=jie/guo1;
  87.             }
  88.      }
  89.          if(table4[shu2]=='+')
  90.          {         if(mer==1)
  91.                  {
  92.             guo1=table4[shu2-1]-'0';
  93.                 guo2=table4[shu2+1]-'0';
  94.                  jie=guo1+guo2;
  95.            }
  96.                 else {
  97.                 guo1=table4[shu2+1]-'0';
  98.                 jie=jie+guo1;
  99.             }
  100.      }
  101.           if(table4[shu2]=='-')
  102.          {         if(mer==1)
  103.                  {
  104.             guo1=table4[shu2-1]-'0';
  105.                 guo2=table4[shu2+1]-'0';
  106.                  jie=guo1*guo2;
  107.            }
  108.                 else {
  109.                 guo1=table4[shu2+1]-'0';
  110.                 jie=jie-guo1;
  111.             }
  112.      }
  113.           }                                                        //计算完成
  114.         write_data(jie);                                                   //输出函数
  115. }

  116. void matrixkeyscan()
  117. {  uchar temp;
  118.    P3=0xfe;
  119.    temp=P3;
  120.    temp=temp&0xf0;
  121.    if(temp!=0xf0)
  122.    { delay(10);
  123.      temp=P3;
  124.          temp=temp&0xf0;
  125.          if(temp!=0xf0)
  126.          {temp=P3;
  127.          switch(temp)
  128.            {case 0xee:         key=0;table3[i]='1';break;
  129.             case 0xde:  key=1;table3[i]='2';break;
  130.                 case 0xbe:  key=2;table3[i]='3';             break;
  131.                 case 0x7e:  key=3;table3[i]='+';break;}
  132.      while(temp!=0xf0)
  133.          { temp=P3;
  134.            temp=temp&0xf0;
  135.      }
  136.          write_data(table2[key]);
  137.          }  
  138.    }
  139.    P3=0xfd;
  140.    temp=P3;
  141.    temp=temp&0xf0;
  142.    if(temp!=0xf0)
  143.    { delay(10);
  144.      temp=P3;
  145.          temp=temp&0xf0;
  146.          if(temp!=0xf0)
  147.          {temp=P3;
  148.          switch(temp)
  149.            {case 0xed:         key=4;table3[i]='4';break;
  150.             case 0xdd:  key=5;table3[i]='5';break;
  151.                 case 0xbd:  key=6;table3[i]='6';break;
  152.                 case 0x7d:  key=7;table3[i]='-';break;}
  153.      while(temp!=0xf0)
  154.          { temp=P3;
  155.            temp=temp&0xf0;
  156.      }
  157.          write_data(table2[key]);
  158.          }
  159.    }
  160.     P3=0xfb;
  161.    temp=P3;
  162.    temp=temp&0xf0;
  163.    if(temp!=0xf0)
  164.    { delay(10);
  165.      temp=P3;
  166.          temp=temp&0xf0;
  167.          if(temp!=0xf0)
  168.          {temp=P3;
  169.          switch(temp)
  170.            {case 0xeb:         key=8;table3[i]='7';break;
  171.             case 0xdb:  key=9;table3[i]='8';break;
  172.                 case 0xbb:  key=10;table3[i]='9';break;
  173.                 case 0x7b:  key=11;table3[i]='*';break;}
  174.      while(temp!=0xf0)
  175.          { temp=P3;
  176.            temp=temp&0xf0;
  177.      }
  178.          write_data(table2[key]);
  179.          }  
  180.    }
  181.    P3=0xf7;
  182.    temp=P3;
  183.    temp=temp&0xf0;
  184.    if(temp!=0xf0)
  185.    { delay(10);
  186.      temp=P3;
  187.          temp=temp&0xf0;
  188.          if(temp!=0xf0)
  189.          {temp=P3;
  190.          switch(temp)
  191.            {case 0xe7:         key=12;table3[i]='0';write_data(table2[key]);break;
  192.                 case 0x77:  key=15;table3[i]='/';write_data(table2[key]);break;}
  193.          if(temp!=0xf0)
  194.          {temp=P3;
  195.          if(temp==0xb7)
  196.          { key=13;
  197.           write_com(0x10);
  198.           write_data(0x20);
  199.           write_com(0x10);
  200.           i=i-3; }
  201.          if(temp==0xd7)
  202.          {key=14;
  203.          ji_suan();
  204.          i=-1; }

  205.      while(temp!=0xf0)
  206.          { temp=P3;
  207.            temp=temp&0xf0;
  208.      }
  209.          
  210.          }  write_com(0x06);
  211.    }
  212.                                                                              
  213.          

  214.           }}
  215. void main()
  216. { mh=0;init();write_com(0x80);
  217. while(1){
  218.     matrixkeyscan();
  219.            delay(5);
  220.                   i++;         
  221.        
  222.           

  223.         }}
  224.        
复制代码







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

399

主题

1251

帖子

4020

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4020
发表于 2022-11-4 23:07:27 | 显示全部楼层
做的不错
一个小建议:在仿真键盘的旁边用文字标注按键含义,这样更直观些。
回复

使用道具 举报

399

主题

1251

帖子

4020

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4020
发表于 2022-11-24 10:53:42 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

3

主题

6

帖子

35

积分

新手上路

Rank: 1

积分
35
 楼主| 发表于 2022-11-25 11:57:29 | 显示全部楼层
本帖最后由 20光信本 于 2022-11-25 12:02 编辑

修改后已上传

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

3

主题

6

帖子

35

积分

新手上路

Rank: 1

积分
35
 楼主| 发表于 2022-11-25 21:04:27 | 显示全部楼层
答辩PPT上交

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

399

主题

1251

帖子

4020

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4020
发表于 2022-11-25 23:39:19 | 显示全部楼层
第三章图片排版混乱,修改完后可以打印
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-6-8 16:06 , Processed in 0.040205 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表