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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為啥單片機下載燒錄成功但是LCD上什么都沒有?求指導

[復制鏈接]
跳轉到指定樓層
樓主
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit lcden=P2^1;         //定義E口
  6. sbit lcdrs=P2^0;         //定義RS口
  7. sbit beep=P2^2;          //定義蜂鳴器
  8. uchar code table[]={'0','1','2','3','4','5','6',           //創建鍵位數組,數字,運算符號,等于號,清零(小數點)
  9.                                 '7','8','9','+','-','*','/','=','.'};                                       
  10. uchar key,flag1,js,k1,k2;
  11. uchar a[20],b[20];
  12. float jieguo=0;
  13. void delay(uchar z) //延遲函數
  14. {
  15.         uchar x,y;
  16.         for(x=z;x>0;x--)
  17.                 for(y=110;y>0;y--);
  18. }
  19. void write_cmd(uchar cmd) //寫命令函數
  20. {
  21.         lcdrs=0;
  22.         P1=cmd;
  23.         delay(5);
  24.         lcden=1;
  25.         delay(4);
  26.         lcden=0;
  27. }
  28. void write_data(uchar date) //寫數據函數
  29. {
  30.         lcdrs=1;
  31.         P1=date;
  32.         delay(5);
  33.         lcden=1;
  34.         delay(5);
  35.         lcden=0;
  36. }
  37. void init()        //LCD初始化函數
  38. {
  39.         lcden=0;
  40.         write_cmd(0x38); //設置16x2顯示,8位數據接口
  41.         write_cmd(0x0c); //設置開顯示,不顯示光標(關顯示是0x08)
  42.         write_cmd(0x06); //寫一個字符后地址指針加1
  43.         write_cmd(0x01); //清屏
  44. }        
  45. void keyscan()
  46. {
  47.         uchar temp,uu=0xf7;
  48.         uint i;
  49.         for(i=0;i<4;i++)
  50.         {
  51.                 uu=_crol_(uu,1); //左移
  52.                 P3=uu;
  53.                 temp=P3;
  54.                 temp=temp&0x0f;
  55.                 if(temp!=0x0f)
  56.                 {
  57.                         delay(10);
  58.                         temp=P3;
  59.                         temp=temp&0x0f;
  60.                         if(temp!=0x0f)
  61.                         {
  62.                                 temp=P3;
  63.                                 switch(temp)
  64.                                 {
  65.                                         case 0xee:key=1;beep=0;delay(200);beep=1;break;                          //延遲200響聲
  66.                                         case 0xde:key=2;beep=0;delay(200);beep=1;break;
  67.                                         case 0xbe:key=3;beep=0;delay(200);beep=1;break;
  68.                                         case 0x7e:key=10;beep=0;delay(200);beep=1;break;
  69.                                         case 0xed:key=4;beep=0;delay(200);beep=1;break;
  70.                                         case 0xdd:key=5;beep=0;delay(200);beep=1;break;
  71.                                         case 0xbd:key=6;beep=0;delay(200);beep=1;break;
  72.                                         case 0x7d:key=11;beep=0;delay(200);beep=1;break;
  73.                                         case 0xeb:key=7;beep=0;delay(200);beep=1;break;
  74.                                         case 0xdb:key=8;beep=0;delay(200);beep=1;break;
  75.                                         case 0xbb:key=9;beep=0;delay(200);beep=1;break;
  76.                                         case 0x7b:key=12;beep=0;delay(200);beep=1;break;
  77.                                         case 0xe7:key=0;beep=0;delay(200);beep=1;break;
  78.                                         case 0xd7:key=15;beep=0;delay(200);beep=1;
  79.                             beep=0;delay(200);beep=1;beep=0;delay(200);beep=1;break;                //清零長響聲
  80.                                         case 0xb7:key=13;beep=0;delay(200);beep=1;break;
  81.                                         case 0x77:key=14;beep=0;delay(180);beep=1;delay(100);
  82.                              beep=0;delay(180);beep=1;break;                 //等于按鍵兩聲短響,中間較短間隔
  83.                                 }
  84.                                 while(temp!=0x0f)
  85.                                 {
  86.                                         temp=P3;
  87.                                         temp=temp&0x0f;
  88.                                 }
  89.                                 flag1=1;
  90.                         }
  91.                 }
  92.         }
  93. }
  94. void jscl() //計算顯示函數
  95. {
  96.         uchar i,j,n;
  97.         float s,temp2;
  98.         long int s1,s2,a1,b1,c1,temp1;
  99.         a1=1;
  100.         b1=1;
  101.         s1=0;
  102.         s2=0;
  103.         s=0;
  104.         if(k2!=0)
  105.         {
  106.                 for(j=0;j<k1+1;j++)        //存放第一操作數
  107.                 {
  108.                         for(i=0;i<k1-j;i++)
  109.                                 a1=a1*10;
  110.                         s1=s1+a[j]*a1;
  111.                         a1=1;
  112.                 }
  113.                 for(j=k1+1;j<k2+1;j++) //存放第二操作數
  114.                 {
  115.                         for(i=0;i<k2-j;i++)
  116.                                 b1=b1*10;
  117.                         s2=s2+a[j]*b1;
  118.                         b1=1;
  119.                 }
  120.                 if(js==10)          //判斷運算符號
  121.                 {
  122.                         s=s1+s2;
  123.                 }
  124.                 if(js==11)
  125.                 {
  126.                         s=s1-s2;
  127.                 }
  128.                 if(js==12)
  129.                 {
  130.                         s=s1*s2;
  131.                 }
  132.                 if(js==13)
  133.                 {
  134.                         s=(s1*0.1)/(s2*0.1);
  135.                 }
  136.                 jieguo=s;
  137.         }
  138.         else
  139.                 s=jieguo;
  140.         if(jieguo>9999||s>=9999)
  141.         {
  142.                 write_data('E');
  143.         }
  144.         else                                                                   //運算結果小數的處理
  145.         {
  146.                 c1=(long int)(s*1000)%10;
  147.                 if(c1>=5)
  148.                         s=s+0.01;
  149.                 temp1=(long int)(s);
  150.                 temp2=s-temp1;
  151.                 n=0;
  152.                 while(temp1)
  153.                 {
  154.                         b[n]=temp1%10;
  155.                         temp1=temp1/10;
  156.                         n++;
  157.                 }
  158.                 b[n]=temp2*10;
  159.                 b[n+1]=(uchar)(temp2*100)%10;
  160.                 for(i=n;i>0;i--)
  161.                 {
  162.                         write_data(table[b[i-1]]);
  163.                 }
  164.                 if(jieguo<1)
  165.                 {
  166.                         write_data(table[0]);
  167.                         write_data(table[15]);
  168.                         write_data(table[b[n]]);
  169.                     write_data(table[b[n+1]]);
  170.                 }
  171.                 else
  172.                 {
  173.                         write_data(table[15]);
  174.                         write_data(table[b[n]]);
  175.                         write_data(table[b[n+1]]);
  176.                 }
  177.         }
  178. }
  179. void main()
  180. {
  181.         uchar i,j;
  182.         init();
  183.         write_cmd(0x80); //將液晶指針定位在第一行第一個單元
  184.         key=15;
  185.         i=0;
  186.         flag1=0;
  187.         while(1)
  188.         {
  189.                 keyscan();
  190.                 if(flag1==1)
  191.                 {
  192.                         if(key==15)                  //判斷為清零操作
  193.                         {
  194.                                 write_cmd(0x01);
  195.                                 i=0;
  196.                                 for(j=0;j<20;j++)
  197.                                 {
  198.                                         a[j]=0;
  199.                                         b[j]=0;
  200.                                 }
  201.                                 k1=0;
  202.                                 k2=0;
  203.                         }
  204.                         else if(key<10)                 //判斷為數字
  205.                         {
  206.                                 write_data(table[key]);
  207.                                 a[i]=key;
  208.                                 i++;
  209.                         }
  210.                         else if(key<14)                 //判斷為運算符號
  211.                         {
  212.                                 write_data(table[key]);
  213.                                 k1=i-1;
  214.                                 js=key;
  215.                         }
  216.                         else                                                //判斷為等于操作
  217.                         {
  218.                                 write_data(table[key]);
  219.                                 if(i==0)
  220.                                 k2=0;
  221.                                 else
  222.                                         k2=i-1;
  223.                                 write_cmd(0x80+0x40);
  224.                                 jscl();
  225.                         }
  226.                         flag1=0;
  227.                 }
  228.         }
  229. }
復制代碼


111.png (34.29 KB, 下載次數: 32)

電路圖

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

使用道具 舉報

沙發
ID:752974 發表于 2021-12-14 17:29 | 只看該作者
編譯成功,語法沒有問題,但不能證明邏輯的正確性。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩中文字幕在线 | 国产精品国产精品国产专区不蜜 | 婷婷综合色 | 一级片子 | 国产成人免费网站 | 视频三区 | 国产精品久久久久久一级毛片 | 久久久在线视频 | 色婷婷国产精品 | 精品国产高清一区二区三区 | 国产夜恋视频在线观看 | 精品国产一区二区三区久久影院 | 中日韩毛片 | 国产亚洲精品久久yy50 | 天天天天操 | 国产精品美女久久久久久久网站 | 一级毛片中国 | 精品国产一区二区三区性色av | 翔田千里一区二区 | 日韩精品无码一区二区三区 | 操久久| 九九热在线视频 | 久久久久久毛片免费观看 | 国产精品1区2区 | 国产日韩精品视频 | 欧美 日韩 国产 成人 | 国产亚洲精品精品国产亚洲综合 | 欧美一区在线视频 | 欧美国产精品一区二区三区 | 亚洲国产精品久久人人爱 | 国产中文字幕在线观看 | 欧美 日韩 国产 成人 在线 | 毛片免费观看 | 女女百合av大片一区二区三区九县 | 成人一区二 | 成人免费看黄网站在线观看 | 国产精品久久久久永久免费观看 | 亚洲iv一区二区三区 | 成人免费视频网站在线看 | 97精品国产一区二区三区 | 中文字幕免费 |