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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4967|回復: 10
收起左側

求助12864液晶屏顯示實時數據問題

[復制鏈接]
ID:261451 發表于 2018-7-24 15:24 | 顯示全部樓層 |閱讀模式
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include "delay.h"
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6.         
  7. uchar code table2[]= "    氣象站      ";
  8. uchar code table3[]= "光照:           ";
  9. uchar code table4[]= "風速:           ";
  10. uchar code table5[]= "風向:           ";
  11. uchar code table6[]= "溫度:           ";
  12. uchar code table7[]= "濕度:           ";
  13. uchar code table8[]= "土溫:           ";
  14. uchar code table9[]= "土濕:           ";
  15. uchar code table10[]="時:             ";
  16. uchar code table11[]="天:             ";
  17. uchar code table12[]="月:             ";
  18. uchar code table13[]="年:             ";
  19. uchar code table19[]="    降雨量      ";

  20. sbit LCD_SID=P0^6;
  21. sbit LCD_SCLK=P0^5;
  22. sbit key1=P1^1;       //確認
  23. sbit key2=P1^2;       //按鍵減一
  24. sbit key3=P1^3;       //按鍵加一
  25. sbit key4=P1^4;       //返回
  26. uint  guang,fengsu,fengxiang,wendu,wendu1,shidu,tuwen,tuwen1,tushi,yu_shi,yu_tian;//

  27. 實時數據
  28. long  yu_yue,yu_nian;//實時數據
  29. uchar fanye;
  30. void sendbyte(unsigned char bbyte) //發送一個字節
  31. {
  32. unsigned char i;
  33. for(i=0;i<8;i++)
  34.    {
  35.    LCD_SID=bbyte&0x80; //取出最高位
  36.    LCD_SCLK=1;
  37.    LCD_SCLK=0;
  38.    bbyte<<=1; //左移
  39.    }  
  40. }

  41. /**1ms延時**/
  42. void delay_ms(uint z)
  43. {
  44.    uint x,y;
  45.         for(x=z;x>0;x--)
  46.                 for(y=125;y>0;y--);
  47. }
  48. void delay_s(uint s)
  49. {
  50.         while(s--)
  51.         delay_ms(1000);
  52. }
  53. void write(bit start, unsigned char ddata) //寫指令或數據
  54. {
  55.   unsigned char start_data,Hdata,Ldata;
  56.   if(start==0)
  57.     start_data=0xf8;  //寫指令
  58.   else      
  59.         start_data=0xfa;  //寫數據
  60.   
  61.   Hdata=ddata&0xf0;    //取高四位
  62.   Ldata=(ddata<<4)&0xf0;  //取低四位
  63.   sendbyte(start_data);   //發送起始信號
  64.   DelayMs(1); //延時是必須的
  65.   sendbyte(Hdata);       //發送高四位
  66.   DelayMs(1);  //延時是必須的
  67.   sendbyte(Ldata);    //發送低四位
  68.   DelayMs(1);  //延時是必須的
  69. }

  70. /**********一行顯示16個字母***********
  71. ***********英文數字顯示***************
  72. ***X為行Y為列,K為字的個數,*P為數組**
  73. *************************************/
  74. void english(uchar x,uchar y,uchar k,uchar *p)
  75. {
  76.         uchar hang,out,i;
  77.         y=y-1;
  78.         switch(x)
  79.         {
  80.                 case 1:hang=0x80;break;
  81.                 case 2:hang=0x90;break;
  82.                 case 3:hang=0x88;break;
  83.                 case 4:hang=0x98;break;        
  84.         }
  85.         out=hang+y;        
  86.         write(0,out);
  87.         for(i=0;i<k;i++)  {
  88.                  write(1,*p);
  89.                   p++;
  90.                        }               
  91.      //   write(1,p);
  92. }
  93.   void display_start()
  94.         {
  95.         write(0,0x01);
  96.         english(2,1,15,table2);//開始界面
  97.         }
  98.         void display1()
  99.     {
  100.                         write(0,0x01);
  101.                           english(2,1,15,table3);//光照
  102.                           guang=1234;
  103.                           write(0,0x93);
  104.                           write(1,0x30+guang/10000);
  105.                           write(1,0x30+guang/1000%10);
  106.                           write(0,0x94);
  107.                           write(1,0x30+guang/100%10);
  108.                           write(1,0x30+guang/10%10);
  109.                           write(0,0x95);
  110.                           write(1,0x30+guang%10);
  111.                            write(1,0x30);
  112.                           write(0,0x96);
  113.                           write(1,0x20);
  114.                           write(1,0x4c);
  115.                           write(0,0x97);
  116.                           write(1,0x78);
  117.                                  }
  118.                 void display2()
  119.                     {
  120.                         write(0,0x01);
  121.                         english(2,1,15,table4);//風速
  122.                         fengsu=1230;
  123.                         write(0,0x93);
  124.                         write(1,0x30+fengsu/1000);
  125.                         write(1,0x30+fengsu/100%10);
  126.                         write(0,0x94);                        
  127.                         write(1,0x2e);
  128.                         write(1,0x30+fengsu/10%10);
  129.                         write(0,0x95);
  130.                         write(1,0x30+fengsu%10);
  131.                         write(0,0x96);
  132.                         write(1,0x6d);
  133.                         write(1,0x2f);
  134.                         write(0,0x97);
  135.                         write(1,0x73);
  136.                         english(4,1,15,table5);//風向
  137.                         fengxiang=1800;
  138.                         write(0,0x9b);
  139.                         write(1,0x30+fengxiang/1000);
  140.                         write(1,0x30+fengxiang/100%10);
  141.                         write(0,0x9c);
  142.                         write(1,0x30+fengxiang/10%10);
  143.                         write(1,0x2e);
  144.                         write(0,0x9d);
  145.                         write(1,0x30+fengxiang%10);
  146.                         write(0,0x9e);
  147.                         write(1,0xa1);
  148.                         write(1,0xe3);
  149.                                  }
  150.                 void display3()
  151.                 {
  152.                         write(0,0x01);
  153.                         english(2,1,15,table6);//空氣溫度
  154.                         wendu=120;
  155.                         //wendu=0xfff0;
  156.                         if(wendu<8000)
  157.                                 {
  158.                           write(0,0x93);
  159.                            write(1,0x30+wendu/100);
  160.                                  write(1,0x30+wendu/10%10);
  161.                            write(0,0x94);
  162.                            write(1,0x2e);
  163.                                  write(1,0x30+wendu%10);
  164.                                  write(0,0x96);
  165.                                  write(1,0xa1);
  166.                                  write(1,0xe6);
  167.                                 }
  168.                         if(wendu>=8000)
  169.                                 {
  170.                                  wendu1=0xffff-wendu+1;
  171.                                  write(0,0x93);
  172.                                  write(1,0x2d);
  173.                            write(1,0x30+wendu1/100);
  174.                                  write(0,0x94);
  175.                                  write(1,0x30+wendu1/10%10);
  176.                            write(1,0x2e);
  177.                                  write(0,0x95);
  178.                                  write(1,0x30+wendu1%10);
  179.                                  write(1,0x20);
  180.                                  write(0,0x96);
  181.                                  write(1,0xa1);
  182.                                  write(1,0xe6);
  183.                                 }
  184.                         english(4,1,15,table7);//空氣濕度
  185.                                 shidu=120;
  186.                                 write(0,0x9b);
  187.                                 write(1,0x30+shidu/100);
  188.                                 write(1,0x30+shidu/10%10);
  189.                                 write(0,0x9c);
  190.                                 write(1,0x2e);
  191.                                 write(1,0x30+shidu%10);
  192.                                 write(0,0x9e);
  193.                                 write(1,0xa3);
  194.                                 write(1,0xa5);
  195.                                  }
  196.                 void display4()
  197.                   {
  198.                         write(0,0x01);
  199.                            english(2,1,15,table8);//土壤溫度
  200.                         //tuwen=120;
  201.                         tuwen=0xfff0;
  202.                         if(tuwen<8000)
  203.                                 {
  204.                          write(0,0x93);
  205.                            write(1,0x30+tuwen/100);
  206.                                  write(1,0x30+tuwen/10%10);
  207.                            write(0,0x94);
  208.                            write(1,0x2e);
  209.                                  write(1,0x30+tuwen%10);
  210.                                  write(0,0x96);
  211.                                  write(1,0xa1);
  212.                                  write(1,0xe6);
  213.                                 }
  214.                         if(tuwen>=8000)
  215.                                 {
  216.                                  tuwen1=0xffff-tuwen+1;
  217.                                  write(0,0x93);
  218.                                  write(1,0x2d);
  219.                            write(1,0x30+tuwen1/100);
  220.                                  write(0,0x94);
  221.                                  write(1,0x30+tuwen1/10%10);
  222.                            write(1,0x2e);
  223.                                  write(0,0x95);
  224.                                  write(1,0x30+tuwen1%10);
  225.                                  write(1,0x20);
  226.                                  write(0,0x96);
  227.                                  write(1,0xa1);
  228.                                  write(1,0xe6);
  229.                                 }
  230.                               english(4,1,15,table9);//土壤濕度
  231.                                 tushi=210;
  232.                                 write(0,0x9b);
  233.                                 write(1,0x30+tushi/100);
  234.                                 write(1,0x30+tushi/10%10);
  235.                                 write(0,0x9c);
  236.                                 write(1,0x2e);
  237.                                 write(1,0x30+tushi%10);
  238.                                 write(0,0x9e);
  239.                                 write(1,0xa3);
  240.                                 write(1,0xa5);
  241.                                  }
  242.                 void display5()
  243.                       {
  244.                         write(0,0x01);
  245.                          english(1,1,15,table19);
  246.                          english(2,1,15,table10);//小時雨量
  247.                          yu_shi=120;
  248.                          write(0,0x92);
  249.                          write(1,0x30+yu_shi/100);
  250.                          write(1,0x30+yu_shi/10%10);
  251.                          write(0,0x93);
  252.                          write(1,0x2e);
  253.                          write(1,0x30+yu_shi%10);
  254.                          write(0,0x95);
  255.                          write(1,0x6d);
  256.                          write(1,0x6d);
  257.                          english(4,1,15,table11);//天雨量
  258.                          yu_tian=2100;
  259.                          write(0,0x9a);
  260.                          write(1,0x30+yu_tian/1000);
  261.                          write(1,0x30+yu_tian/100%10);
  262.                          write(0,0x9b);
  263.                          write(1,0x30+yu_tian/10%10);
  264.                          write(1,0x2e);
  265.                          write(0,0x9c);
  266.                          write(1,0x30+yu_tian%10);
  267.                          write(1,0x20);
  268.                          write(0,0x9d);
  269.                          write(1,0x6d);
  270.                          write(1,0x6d);
  271.                                  }
  272.                 void display6()
  273.                       {
  274.                         write(0,0x01);
  275.                          english(1,1,15,table19);
  276.                          english(2,1,15,table12);//月雨量
  277.                          yu_yue=11110;
  278.                          write(0,0x92);
  279.                          write(1,0x30+yu_yue/10000);
  280.                          write(1,0x30+yu_yue/1000%10);
  281.                          write(0,0x93);
  282.                          write(1,0x30+yu_yue/100%10);
  283.                          write(1,0x30+yu_yue/10%10);
  284.                          write(0,0x94);
  285.                          write(1,0x2e);
  286.                          write(1,0x30+yu_yue%10);
  287.                          write(0,0x96);
  288.                          write(1,0x6d);
  289.                          write(1,0x6d);
  290.                          english(4,1,15,table13);//年雨量
  291.                          yu_nian=201422;
  292.                          write(0,0x9a);
  293.                          write(1,0x30+yu_nian/100000);
  294.                          write(1,0x30+yu_nian/10000%10);
  295.                          write(0,0x9b);
  296.                          write(1,0x30+yu_nian/1000%10);
  297.                          write(1,0x30+yu_nian/100%10);
  298.                          write(0,0x9c);
  299.                          write(1,0x30+yu_nian/10%10);
  300.                          write(1,0x2e);
  301.                          write(0,0x9d);
  302.                          write(1,0x30+yu_nian%10);
  303.                          write(0,0x9f);
  304.                          write(1,0x6d);
  305.                          write(1,0x6d);
  306.                                  }

  307. void lcd_init()
  308. {
  309.         write(0,0x30);  //8 位介面,基本指令集
  310.         write(0,0x0c);  //顯示打開,光標關,反白關
  311.         write(0,0x01);  //清屏,將DDRAM的地址計數器歸零
  312.         DelayMs(10);
  313. }

  314. void main()
  315. {
  316.         lcd_init();
  317.         DelayMs(100);
  318.         display_start();
  319.         while(1)
  320.         {
  321.                 if(key3==0)
  322.                 {
  323.                        delay_ms(50);
  324.                           if(key3==0) //key3向右翻頁
  325.                                 {
  326.                                     if(fanye<6)
  327.                                         {
  328.                                           fanye++;
  329.                                         }
  330.                                 }
  331.                                 while(!key3);
  332.                                 if(fanye==1){display1();delay_ms(50);}
  333.                                 if(fanye==2){display2();delay_ms(50);}
  334.                                 if(fanye==3){display3();delay_ms(50);}
  335.                                 if(fanye==4){display4();delay_ms(50);}
  336.                                 if(fanye==5){display5();delay_ms(50);}
  337.                                 if(fanye==6){display6();delay_ms(50);}
  338.                         }
  339.                              if(key2==0)
  340.                                 {
  341.                                     delay_ms(50);
  342.                                        if(key2==0)  //key2向左翻頁
  343.                                         {      
  344.                                          if(fanye>0)
  345.                                            {
  346.                                            fanye--;
  347.                                              }
  348.                                         }
  349.                                   while(!key2);
  350.                    if(fanye==6){display6();delay_ms(50);}
  351.                    if(fanye==5){display5();delay_ms(50);}
  352.                    if(fanye==4){display4();delay_ms(50);}
  353.                    if(fanye==3){display3();delay_ms(50);}
  354.                    if(fanye==2){display2();delay_ms(50);}
  355.                    if(fanye==1){display1();delay_ms(50);}
  356.                    if(fanye==0){display_start();delay_ms(50);}
  357.                                    }
  358.                                 
  359.         }
  360. }
復制代碼


回復

使用道具 舉報

ID:261451 發表于 2018-7-24 15:32 | 顯示全部樓層
使用的st7920液晶屏,這樣一位一位的顯示數據太麻煩了,程序占不下,怎樣用字符串的方式顯示實時數據呢,
回復

使用道具 舉報

ID:261451 發表于 2018-7-24 16:28 | 顯示全部樓層
實時數據是一位一位顯示的,怎樣用字符串的方式顯示實時數據呢
回復

使用道具 舉報

ID:7485 發表于 2018-7-24 16:35 | 顯示全部樓層
遇到什么問題了?求助什么?
回復

使用道具 舉報

ID:261451 發表于 2018-7-24 16:37 | 顯示全部樓層
ahshmj 發表于 2018-7-24 16:35
遇到什么問題了?

數據顯示太麻煩,程序太大了,想用字符串的方式顯示數據,
回復

使用道具 舉報

ID:261451 發表于 2018-7-24 16:48 | 顯示全部樓層
ahshmj 發表于 2018-7-24 16:35
遇到什么問題了?求助什么?

怎樣把數字轉化為字符串呢
回復

使用道具 舉報

ID:261451 發表于 2018-7-24 17:56 | 顯示全部樓層
顯示多個小數,數據長度不同,小數位數也不同
回復

使用道具 舉報

ID:261451 發表于 2018-7-25 16:49 | 顯示全部樓層
    本來想把程序改小一點,結果又硬生生大了2k怎樣用把變量轉化成字符串然后顯示出來呢
回復

使用道具 舉報

ID:76201 發表于 2018-7-31 18:06 | 顯示全部樓層
查看附件

51單片機輕松入門_勘誤(1).pdf

3.4 MB, 下載次數: 18

回復

使用道具 舉報

ID:261451 發表于 2018-8-1 10:08 | 顯示全部樓層

看不懂,是換單片機么
回復

使用道具 舉報

ID:523982 發表于 2019-5-18 19:40 | 顯示全部樓層
網絡上挺多的
  1. //====================================================================//
  2. //  語法格式:        Int_To_Str(int x,char *Str)
  3. //        實現功能:        轉化整型值為字符串形式
  4. //        參數:                x: 轉化的整數
  5. //                                Str:轉化后的字符串
  6. //        返回值:        無
  7. //====================================================================//
  8. void Int_To_Str(int x, char *Str)
  9. {
  10.         int t;
  11.         char *Ptr, Buf[5];
  12.         int i = 0;

  13.         Ptr = Str;
  14.         if(x < 10)                // 當整數小于10時,轉化為"0x"的格式
  15.         {
  16.                 *Ptr++ = '0';
  17.                 *Ptr++ = x + 0x30;
  18.         }
  19.         else
  20.         {
  21.                 while(x > 0)
  22.                 {
  23.                         t = x % 10;
  24.                         x = x / 10;
  25.                         Buf[i++] = t+0x30;        // 通過計算把數字轉化成ASCII碼形式
  26.                 }
  27.                 i-- ;
  28.                 for(; i >= 0; i --)         // 將得到的字符串倒序
  29.                 {
  30.                         *(Ptr++) = Buf[i];
  31.                 }
  32.         }
  33.         *Ptr = '\0';
  34. }
復制代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看欧美日韩视频 | 成人在线精品视频 | 日韩视频一区在线观看 | 亚洲人人| 亚洲精品免费在线 | 欧美美女二区 | 国产精品美女 | 日本成人中文字幕 | 九九热在线观看 | 欧美日韩一区二区在线观看 | 91精品国产91久久久久久最新 | 国产日韩久久久久69影院 | 中文字幕一区二区在线观看 | 国产二区在线播放 | 亚洲综合久久久 | 日韩伦理电影免费在线观看 | 色综合成人网 | 中文字幕第九页 | 欧美成人精品二区三区99精品 | 高清不卡毛片 | 激情欧美一区二区三区中文字幕 | 久草欧美视频 | 欧洲精品在线观看 | 国产精品一区二区无线 | av国产精品毛片一区二区小说 | 女人天堂av | 国产极品91| 81精品国产乱码久久久久久 | 毛片免费在线 | a黄毛片 | 国产美女一区二区三区 | 99久热在线精品视频观看 | 国产成人一区二区三区精 | 婷婷色成人 | 色综合久久久久 | 黄色大片在线免费观看 | 免费看一区二区三区 | 极品销魂美女一区二区 | 亚洲一二三区不卡 | 中文字幕一区二区三区乱码在线 | 亚洲欧洲一区二区 |