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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求注釋這個單片機程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:449881 發表于 2018-12-27 10:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include "reg52.h"
  2. typedef unsigned int uint;         
  3. typedef unsigned char uchar;

  4. sbit rw=P0^6;
  5. sbit rs=P0^7;
  6. sbit e=P0^5;
  7. uint fuhao,flag,k,i,j,num;
  8. uchar disp[]="rorrE";
  9. uchar wel[]="    Welcome!";
  10. long a,b,c,x;

  11. void delay(long i)  //延時
  12. {
  13.         while(i--);
  14. }
  15. void lcdwrc(uint c) //設置LCD寫命令
  16. {
  17.         delay(1000);
  18.         rs=0;
  19.         rw=0;
  20.         e=0;
  21.         P2=c;
  22.         e=1;
  23.         delay(1000);
  24.         e=0;
  25. }
  26. void lcdwrd(uint dat) //設置LCD寫數據
  27. {
  28.         delay(1000);
  29.         rs=1;
  30.         rw=0;
  31.         e=0;
  32.         P2=dat;
  33.         e=1;
  34.         delay(1000);
  35.         e=0;
  36.         rs=0;
  37. }
  38. void lcdinit()          //初始化LCD
  39. {
  40.         delay(1500);
  41.         lcdwrc(0x38);
  42.         delay(500);
  43.         lcdwrc(0x38);
  44.         delay(500);
  45.         lcdwrc(0x38);
  46.         delay(500);
  47.         lcdwrc(0x38); //功能設定指令
  48.         lcdwrc(0x08);  
  49.         lcdwrc(0x01); //清屏
  50.         lcdwrc(0x06);  //設置LCD顯示
  51.         lcdwrc(0x0c); //顯示開關控制指令
  52.     num=0;
  53.         fuhao=0;
  54.         flag=0;
  55.         a=0;
  56.         b=0;
  57.         c=0;
  58.         x=0;
  59.         k=0;
  60.         j=0;
  61. }

  62. void KeyDown()
  63. {
  64.     k=0;
  65.         P3=0x0f;
  66.         if(P3!=0x0f)
  67.         {
  68.                 delay(1000);
  69.                   if(P3!=0x0f)
  70.                 {
  71.                         P3=0x0f;
  72.                         switch(P3)
  73.                         {
  74.                                 case 0x07:
  75.                                 {
  76.                                         P3=0xf0;
  77.                                         switch(P3)
  78.                                        {
  79.                                      case 0x70: k=1; break;
  80.                                      case 0xb0: k=4; break;
  81.                                          case 0xd0: k=7; break;
  82.                                          case 0xe0: k=0; break;
  83.                                 }         
  84.                                     if(fuhao==0)
  85.                                      a=a*10+k;
  86.                                     else
  87.                                       b=b*10+k;        
  88.                              }
  89.                                  lcdwrd(0x30+k);
  90.                              while(P3!=0xf0);break;

  91.                     case 0x0b:
  92.                                          {
  93.                                            P3=0xf0;
  94.                                switch(P3)
  95.                                              {
  96.                                          case 0x70: num=2;k=2; break;
  97.                                      case 0xb0: num=6;k=5; break;
  98.                                      case 0xd0: num=10;k=8; break;
  99.                                          case 0xe0: num=14; break;
  100.                                        }  
  101.                                                  if(num!=14)
  102.                                                 {        
  103.                                              if(fuhao==0)
  104.                                                     a=a*10+k;
  105.                                                  else
  106.                                                    b=b*10+k;        
  107.                                                    lcdwrd(0x30+k);
  108.                                                 }        
  109.                                                  if(num==14)
  110.                                                 {         
  111.                                                   lcdwrc(0x01);        //清屏指令                        
  112.                                                  lcdinit();
  113.                                             }
  114.                                           }
  115.                                           while(P3!=0xf0); break;

  116.                                  case 0x0d:
  117.                                      {
  118.                                                  P3=0xf0;
  119.                                     switch(P3)
  120.                                        {
  121.                                      case 0x70: num=3;  k=3;  break;
  122.                                      case 0xb0: num=7;  k=6;  break;
  123.                                      case 0xd0: num=11; k=9;  break;
  124.                                      case 0xe0: num=15;       break;
  125.                                     }        
  126.                                                 if(num!=15)
  127.                                             {        
  128.                                               if(fuhao==0)
  129.                                                    a=a*10+k;
  130.                                                   else
  131.                                                   b=b*10+k;        
  132.                                                   lcdwrd(0x30+k);
  133.                                              }
  134.                                                  if(num==15)
  135.                                                 {
  136.                                                     switch(flag)
  137.                                                         {
  138.                                                                 case 1:
  139.                                                                 {
  140.                                                                  c=a+b;
  141.                                                                  lcdwrc(0x4f+0x80);
  142.                                                      lcdwrc(0x04);
  143.                                                                  if(c==0)
  144.                                                                  lcdwrd(0x30);
  145.                                                              while(c!=0)         
  146.                                                      {
  147.                                                                    lcdwrd(0x30+c%10);
  148.                                                             c=c/10;
  149.                                                          }
  150.                                                                    lcdwrd(0x3d);
  151.                                                                    }break;

  152.                                                                 case 2:
  153.                                                                 {
  154.                                                                   if(a>b)
  155.                                                                c=a-b;
  156.                                                           else
  157.                                                                c=b-a;

  158.                                                                   lcdwrc(0x4f+0x80);
  159.                                               lcdwrc(0x04);

  160.                                                                   if(c==0)
  161.                                                                    lcdwrd(0x30);

  162.                                                                   while(c!=0)
  163.                                                       {
  164.                                                                    lcdwrd(0x30+c%10);
  165.                                                                    c=c/10;
  166.                                                              }
  167.                                                                if(a<b)
  168.                                                                          lcdwrd(0x2d);

  169.                                                         lcdwrd(0x3d);
  170.                                                                  }break;

  171.                                                              case 3:
  172.                                                             {
  173.                                                                       c=a*b;
  174.                                                                     lcdwrc(0x4f+0x80);
  175.                                                 lcdwrc(0x04);
  176.                                                                         if(c==0)
  177.                                                                         lcdwrd(0x30);
  178.                                                              while(c!=0)         
  179.                                                                         {                                                                     
  180.                                                               lcdwrd(0x30+c%10);
  181.                                                        c=c/10;
  182.                                                             }
  183.                                                                  lcdwrd(0x3d);
  184.                                                                   }    break;

  185.                                                                 case 4:        
  186.                                                                 {        
  187.                                                                     if(b==0)
  188.                                                                         {
  189.                                                                             lcdwrc(0x4f+0x80);
  190.                                                                  lcdwrc(0x04);
  191.                                                                             for(i=0;i<5;i++)
  192.                                                                         lcdwrd(disp[i]);
  193.                                                                   }
  194.                                                                         else
  195.                                                                      {        
  196.                                                                            c=(long)(((float)a/b)*10000);
  197.                                                                    x=c;
  198.                                                                             lcdwrc(0x4f+0x80);
  199.                                                                 lcdwrc(0x04);
  200.                                                                while(c!=0)         //一位一位顯示
  201.                                                               {
  202.                                                                     k++;
  203.                                                                     lcdwrd(0x30+c%10);//顯示結果的最后一位在0x4f的位置
  204.                                                                       c=c/10;//取前面的結果數據
  205.                                                                          if(x>0&&x<=9)
  206.                                                                     {
  207.                                                                               if(k==1)
  208.                                                                      {        
  209.                                                                                lcdwrd(0x30);
  210.                                                                            lcdwrd(0x30);
  211.                                                                        lcdwrd(0x30);
  212.                                                                            lcdwrd(0x2e);
  213.                                                                              k=0;
  214.                                                                         }
  215.                                                                     }
  216.                                                                      if(x>9&&x<=99)
  217.                                                                    {        
  218.                                                                               if(k==2)
  219.                                                                      {        
  220.                                                                                    lcdwrd(0x30);
  221.                                                                        lcdwrd(0x30);
  222.                                                                             lcdwrd(0x2e);
  223.                                                                            k=0;
  224.                                                                     }
  225.                                                                    }
  226.                                                                     if(x>99&&x<=999)
  227.                                                                    {
  228.                                                                              if(k==3)
  229.                                                                 {
  230.                                                                        lcdwrd(0x30);
  231.                                                                        lcdwrd(0x2e);
  232.                                                                            k=0;
  233.                                                                     }        
  234.                                                                    }
  235.                                                                        else
  236.                                                                   if(k==4)
  237.                                                                   {
  238.                                                                          lcdwrd(0x2e);
  239.                                                                          k=0;
  240.                                                               }               
  241.                                                                 }
  242.                                    if(x<10000)
  243.                                                                                 lcdwrd(0x30);
  244.                                                                 lcdwrd(0x3d);         
  245.                                                      }
  246.                                                    }        break;
  247.                                                    }
  248.                                                 }
  249.                                    }while(P3!=0xf0);break;
  250.                                    case 0x0e:
  251.                                          {        
  252.                                              fuhao=1;
  253.                                                 P3=0xf0;
  254.                                     switch(P3)
  255.                                       {
  256.                                             case 0x70: flag=1;lcdwrd(0x2b);   break;
  257.                                             case 0xb0:flag=2; lcdwrd(0x2d);  break;
  258.                                              case 0xd0: flag=3;lcdwrd(0x2a);  break;
  259.                                             case 0xe0: flag=4; lcdwrd(0x2f); break;
  260.                                     }         
  261.                         }  while(P3!=0xf0);  break;
  262.                         }
  263.                  }
  264.          }
  265. }

  266. void main()
  267. {        
  268.     uint x;
  269.         lcdinit();
  270.         for(x=0;x<12;x++)
  271.         lcdwrd(wel[x]);
  272.         delay(50000);
  273.         lcdwrc(0x01);
  274.         while(1)               
  275.            KeyDown();
  276. }

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

使用道具 舉報

沙發
ID:454000 發表于 2018-12-28 15:42 | 只看該作者
這是最基本的,你上網看看LCD1602與矩陣按鍵的視頻,LCD1602就4個函數,判忙(他這兒沒有,這個看情況)函數,初始化LCD函數,LCD寫命令(確定你要寫東西的位置),LCD寫數據。KeyDown()矩陣按鍵函數,別看他又臭又長,他只是判斷出0-15共記16個鍵(4*4鍵盤).按鍵按下給個地址,例如lcdwrc(0x4f+0x80);跟著就放數據

評分

參與人數 2黑幣 +30 收起 理由
還有誰? + 15
找人PK + 15

查看全部評分

回復

使用道具 舉報

板凳
ID:449525 發表于 2018-12-28 16:58 | 只看該作者
網上1602的代碼一堆,各種注釋都有的,你自己去看下就行了
回復

使用道具 舉報

地板
ID:454000 發表于 2018-12-28 18:30 | 只看該作者
先看視頻,視頻懂了就跟著視頻敲幾下關鍵代碼。LCD1602有靜態與動態顯示,動態很重要,另外就是顯示漢字,不能急,一步步來!莫聽一些無聊之人扯,新手光看代碼是看不出什么意義的!

評分

參與人數 2黑幣 +50 收起 理由
還有誰? + 15
yoxi + 35

查看全部評分

回復

使用道具 舉報

5#
ID:356526 發表于 2018-12-28 19:56 | 只看該作者
外設這種東西,看看使用手冊就行了,不想看的話,網上也有很多教學視頻什么的,樓主可以去學習一下
回復

使用道具 舉報

6#
ID:449881 發表于 2019-2-6 10:43 | 只看該作者
shuisheng 發表于 2018-12-28 18:30
先看視頻,視頻懂了就跟著視頻敲幾下關鍵代碼。LCD1602有靜態與動態顯示,動態很重要,另外就是顯示漢字, ...

嗯啊,謝謝
回復

使用道具 舉報

7#
ID:460466 發表于 2019-2-6 18:36 | 只看該作者
其實你這個“注釋語句”不失為一個初學編程的好辦法,可惜沒有這樣做的,就是不愿捅破這層窗戶紙!莫名其妙?
回復

使用道具 舉報

8#
ID:474670 發表于 2019-2-7 03:38 | 只看該作者
用心的人一點就通明,整天夸夸其談之人白費功,多說無益!

評分

參與人數 3黑幣 +62 收起 理由
zhengchong60 + 15
鉆牛尖滴劉尖尖 + 12
#include51.h + 35

查看全部評分

回復

使用道具 舉報

9#
ID:460466 發表于 2019-2-7 12:47 | 只看該作者
站著說話不腰疼 發表于 2019-2-7 03:38
用心的人一點就通明,整天夸夸其談之人白費功,多說無益!

“一點就通”,說得非常對!!關鍵就缺這一點。
回復

使用道具 舉報

10#
ID:475247 發表于 2019-2-8 04:02 | 只看該作者
海闊天空8 發表于 2019-2-7 12:47
“一點就通”,說得非常對!!關鍵就缺這一點。

不對呵!關鍵是少了靈犀,無靈犀(后天不努力務實上進者)點廢也點不出結果

評分

參與人數 4黑幣 +77 收起 理由
春風十里吹 + 12 贊一個!
站著說話不腰疼 + 15
找人PK + 15
shuisheng60 + 35

查看全部評分

回復

使用道具 舉報

11#
ID:474670 發表于 2019-2-8 12:39 | 只看該作者
說的對極了!所謂師傅領進門,修行靠個人 !

評分

參與人數 1黑幣 +15 收起 理由
zhengchong60 + 15

查看全部評分

回復

使用道具 舉報

12#
ID:96682 發表于 2019-2-8 17:24 | 只看該作者
海闊天空8 發表于 2019-2-7 12:47
“一點就通”,說得非常對!!關鍵就缺這一點。

缺么?缺的是用心的人

zl2168

張志良編著《80C51單片機仿真設計實例教程——基于Keil C和Proteus》清華大學出版社ISBN 978-7-302-41682-1.書中電路和程序設計有詳細說明,程序語句條條有注解。仿真電路和Hex文件能在清華出版社網站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網上書店打折購買。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91麻豆精品国产91久久久更新资源速度超快 | 国产一级一级毛片 | 久久久国产一区二区三区 | 国产一级一级毛片 | 美女久久久久久久久 | 国产精品特级毛片一区二区三区 | 国产美女黄色 | 久久久成人网 | 成年人视频在线免费观看 | 久久激情网 | 国产成人jvid在线播放 | 日本黄色的视频 | 在线视频亚洲 | 久久香蕉精品视频 | 台湾佬久久 | 国产精品美女久久久久久免费 | 日韩视频在线播放 | 蜜桃综合在线 | 97精品超碰一区二区三区 | 亚洲欧洲精品在线 | 激情视频网站 | 日韩免费一级 | 中文字幕在线不卡 | 一级毛片在线播放 | 午夜一区二区三区在线观看 | 精品国产青草久久久久96 | 亚洲国产一区二区三区四区 | 久久99精品久久久久久 | 国产九一精品 | 国产三级在线观看播放 | 在线国产小视频 | a级网站 | 欧美淫片| 亚洲三区在线观看 | 精品九九久久 | 99精品国产一区二区三区 | 日本久久久久久久久 | 欧美九九| 伊人免费视频二 | 国产在线1 | av电影手机版 |