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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1289|回復: 1
收起左側

單片機+1602顯示字符串問題

[復制鏈接]
ID:972731 發表于 2021-10-17 13:37 | 顯示全部樓層 |閱讀模式
1.png
  1. #include <reg51.h>
  2. #include <intrins.h>              //包含_nop_()空函數的頭文件
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define out P0
  6. sbit RS=P1^0;                                          //位變量
  7. sbit RW=P1^1;                                          //位變量
  8. sbit E=P1^2;                                          //位變量
  9. sbit DQ=P1^5;                                          //位變量
  10. sbit I2C_SCL=P1^6;                                  //位變量
  11. sbit I2C_SDA=P1^7;                //I2C通信的兩個引腳
  12. sbit  S3=P3^5;                    //加//按鍵
  13. sbit  S2=P3^6;                    //減
  14. sbit  S1=P3^7;                    //保存
  15. void delay(uint);                                  //延時函數(1ms)
  16. void delay5(uchar);                                  //延時函數(5us)
  17. void lcd_initial(void);                          //LCD初始化函數
  18. void init_ds18b20(void);              //DS18B20初始化函數  
  19. void check_busy(void);                  //檢查忙標志位函數
  20. void write_command(uchar com);          //寫命令函數
  21. void write_data(uchar dat);                  //寫顯示數據函數
  22. uchar readbyte(void);                          //讀取1B數據
  23. void writebyte(uchar);                          //寫入1B函數
  24. uchar retemp(void);                              //讀溫度函數
  25. void string(uchar ad,uchar *s);          //逐個輸出顯示字符串函數
  26. void stringAll(uchar ad,uchar *s);//整屏輸出顯示字符串函數
  27. void getHtemp(uchar str[]);              //獲得最高溫度的字符串形式
  28. void getLtemp(uchar str[]);              //獲得最低溫度的字符串形式
  29. void getTtemp(uchar str[]);              //獲得當前溫度的字符串形式
  30. void  delayms(uint t);            //延時函數
  31. void  keyscan();                  //按鍵掃描函數
  32. void  save_data();                //保存數據的函數
  33. void  load_data();                //讀取數據的函數
  34. uchar code seg[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xdf,0x43,0x20,0x2d}; //(0-9,'°','C',' '(空格),'-')ASCII碼值
  35. uint flag=0;
  36. uchar maxtemp=40;                                  //初始化最高溫度
  37. uchar mintemp=30;                 //初始化最低溫度        
  38.                         
  39. //主函數                                
  40. void main()
  41. {
  42.         uchar Htempstr[4];
  43.         uchar Ltempstr[4];
  44.         uchar Ttempstr[4];
  45.         uchar i=16;
  46.         uchar *gear="0";
  47.         uchar tempsign[2];
  48.         tempsign[0]=seg[10];
  49.         tempsign[1]=seg[11];
  50.         lcd_initial();
  51.         load_data();                  //讀取保存在EEPROM中的數據           
  52.         string(0x80,"welcome to AAUCS");
  53.         string(0xc5,"NO.35");
  54.         delay(500);
  55.         while(i){
  56.                 write_command(0x1c);      //實際電路板上需設置為0x18
  57.                 i--;
  58.                 delay(200);
  59.         }
  60.         lcd_initial();        
  61.         while(1){
  62.                 keyscan();
  63.                 getHtemp(Htempstr);
  64.                 getLtemp(Ltempstr);
  65.                 getTtemp(Ttempstr);        
  66.                 //stringAll(0x80,"H:");
  67.                 stringAll(0x82,Htempstr);
  68.                 //stringAll(0x86,tempsign);
  69.                 //stringAll(0x88,"L:");
  70.                 //stringAll(0x8a,Ltempstr);               
  71.                 //stringAll(0x8e,tempsign);
  72.                 //stringAll(0xc0,"T:");               
  73.                 //stringAll(0xc2,Ttempstr);
  74.                 //stringAll(0xc6,tempsign);
  75.                 //stringAll(0xca,"FAN:");
  76.                 //stringAll(0xce,gear);
  77.                 delay(100);
  78.         }        
  79. }

  80. //獲得最高溫度的字符串形式
  81. void getHtemp(uchar htempstr[4]){
  82.         uchar a,b,c;                                          
  83.         if(maxtemp>=0)
  84.         {
  85.                 a=seg[maxtemp/100];                     
  86.                 b=seg[(maxtemp/10)%10];
  87.                 c=seg[maxtemp%10];
  88.                 htempstr[0]=seg[12];
  89.         }
  90.         else
  91.         {
  92.                 maxtemp=~maxtemp+1;
  93.                 a=seg[maxtemp/100];                     
  94.                 b=seg[(maxtemp/10)%10];
  95.                 c=seg[maxtemp%10];
  96.                 htempstr[0]=seg[13];
  97.         }
  98.         htempstr[1]=a;
  99.         htempstr[2]=b;
  100.         htempstr[3]=c;
  101. }

  102. //獲得最低溫度的字符串形式
  103. void getLtemp(uchar ltempstr[4]){
  104.         uchar a,b,c;                                          
  105.         if(mintemp>=0)
  106.         {
  107.                 a=seg[mintemp/100];                     
  108.                 b=seg[(mintemp/10)%10];
  109.                 c=seg[mintemp%10];
  110.                 ltempstr[0]=seg[12];
  111.         }
  112.         else
  113.         {
  114.                 mintemp=~mintemp+1;
  115.                 a=seg[mintemp/100];                     
  116.                 b=seg[(mintemp/10)%10];
  117.                 c=seg[mintemp%10];
  118.                 ltempstr[0]=seg[13];
  119.         }
  120.         ltempstr[1]=a;
  121.         ltempstr[2]=b;
  122.         ltempstr[3]=c;
  123. }

  124. //獲得當前溫度的字符串形式
  125. void getTtemp(uchar str[4]){
  126.         uchar temp,a,b,c;        
  127.         temp=retemp();                                 
  128.         a=seg[temp/100];                     
  129.         b=seg[(temp/10)%10];
  130.         c=seg[temp%10];
  131.         if(flag==0)
  132.         {
  133.                 str[0]=seg[12];
  134.         }
  135.         else
  136.         {
  137.                 str[0]=seg[13];
  138.         }
  139.         str[1]=a;
  140.         str[2]=b;
  141.         str[3]=c;
  142. }

  143. //整屏輸出顯示字符串函數
  144. void stringAll(uchar ad,uchar *s)
  145. {
  146.    write_command(ad);
  147.    while(*s>0)
  148.    {
  149.           write_data(*s++);
  150.    }
  151. }
復制代碼
回復

使用道具 舉報

ID:584814 發表于 2021-10-17 21:28 | 顯示全部樓層
看來問題是語文一直不及格罷
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区久久 | 亚洲色图综合 | 亚洲精品在线视频 | 久久国产成人午夜av影院武则天 | 99精品在线 | 免费在线观看一区二区 | 国产蜜臀97一区二区三区 | 成人免费观看男女羞羞视频 | 欧美二级 | 久久久久久久久国产成人免费 | 日韩在线精品强乱中文字幕 | 91色视频在线观看 | 日韩中文字幕在线观看 | 亚洲 精品 综合 精品 自拍 | 性一交一乱一伦视频免费观看 | 亚洲国产成人在线视频 | 在线看一区二区 | a在线观看免费 | 亚洲欧美中文日韩在线v日本 | 亚洲欧美中文日韩在线v日本 | 日本亚洲欧美 | 亚洲欧美另类在线 | 欧美精品电影一区 | 欧美日韩中文国产一区发布 | 一区二区三区免费 | 成人网av | 国产91在线播放 | 免费亚洲视频 | 国产免费视频 | 国产精品成人国产乱一区 | 欧美乱淫视频 | 九九热免费看 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 99精品国产在热久久 | 久久91精品| 久久久综合精品 | 春色av| 欧美精品在欧美一区二区少妇 | 96国产精品久久久久aⅴ四区 | 国产在线观看不卡一区二区三区 | 精品国产乱码一区二区三区 |