单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 201|回复: 6
收起左侧

单片机智能热水器程序 1602第二行不显示?

[复制链接]
pandahu 发表于 2019-1-12 16:54 | 显示全部楼层 |阅读模式
温度传感器控制LCD1602显示温度,第二行不显示,仿真时调节温度传感器,代码LCD上显示当前温度应该如何写,感谢各位大佬了
  1. //宏定义
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. //LCD管脚声明
  5. sbit LCDRS = P1^1;
  6. sbit LCDEN= P1^2;
  7. //初始画时显示的内容
  8. uchar code Init1[]="Tp:00.0 C Ti:000";
  9. uchar code Init2[]=" Up:00  Down:00 ";
  10. /**************************************************************************************************
  11. *******************************液晶的基本操作程序**************************************************
  12. **************************************************************************************************/
  13. //LCD延时
  14. void LCDdelay(uint z)
  15. {
  16.   uint x,y;
  17.   for(x=z;x>0;x--)
  18.     for(y=10;y>0;y--);
  19. }
  20. //写命令
  21. void write_com(uchar com)
  22. {
  23.   LCDRS=0;
  24.   P0=com;
  25.   LCDdelay(5);
  26.   LCDEN=1;
  27.   LCDdelay(5);
  28.   LCDEN=0;
  29. }
  30. //写数据
  31. void write_data(uchar date)
  32. {
  33.   LCDRS=1;
  34.   P0=date;
  35.   LCDdelay(5);
  36.   LCDEN=1;
  37.   LCDdelay(5);
  38.   LCDEN=0;
  39. }
  40. /**************************************************************************************************
  41. *****************************1602初始化程序********************************************************
  42. **************************************************************************************************/
  43. //1602初始化
  44. void Init1602()
  45. {
  46.   uchar i=0;
  47.   write_com(0x01);//清屏
  48.   write_com(0x38);//屏幕初始化
  49.   write_com(0x0c);//打开显示 无光标 无光标闪烁
  50.   write_com(0x06);//当读或写一个字符是指针后一一位
  51.   write_com(0x80);//设置位置
  52.   for(i=0;i<16;i++)
  53.   {
  54.   write_data(Init1[i]);
  55.   }
  56.   write_com(0x80+0x40);//设置位置
  57.   for(i=0;i<16;i++)
  58.   {
  59.   write_data(Init2[i]);
  60.   }
  61. }
  62. /**************************************************************************************************
  63. ******************************************显示时间温度数据程序*************************************
  64. **************************************************************************************************/
  65. void Display_1602(uint aa,uchar dss,uchar sxx,uchar xxx)
  66. {
  67. //温度显示
  68. write_com(0x80+3);
  69. write_data('0'+aa/100);
  70. write_data('0'+aa/10%10);
  71. write_data('.');
  72. write_data('0'+aa%10);
  73. write_data(0xdf);
  74.     //定时显示
  75. write_com(0x80+13);
  76. write_data('0'+dss/100);
  77. write_data('0'+dss/10%10);
  78. write_data('0'+dss%10);
  79.     //上限显示
  80. write_com(0x80+40+4);
  81. write_data('0'+sxx/10%10);
  82. write_data('0'+sxx%10);
  83.     //下限显示
  84. write_com(0x80+40+13);
  85. write_data('0'+xxx/10%10);
  86. write_data('0'+xxx%10);

  87. }
  88. /**************************************************************************************************
  89. *********************************************字符显示程序********************************************
  90. **************************************************************************************************/
  91. void Display_wd()
  92. {
  93. //温度显示
  94. write_com(0x80);
  95. write_data('S');
  96. write_data('e');
  97. write_data('t');
  98. write_data(' ');
  99. write_data('s');
  100. write_data('t');
  101. write_data('a');
  102. write_data('t');
  103. write_data('e');
  104. }
复制代码



回复

使用道具 举报

shuisheng 发表于 2019-1-12 20:00 | 显示全部楼层
又不传图又不上完整代码,按理说
//定时显示
write_com(0x80+13);
write_data('0'+dss/100);
write_data('0'+dss/10%10);
write_data('0'+dss%10);
    //上限显示
write_com(0x80+40+4);
write_data('0'+sxx/10%10);
write_data('0'+sxx%10);
    //下限显示
write_com(0x80+40+13);
write_data('0'+xxx/10%10);
write_data('0'+xxx%10);
这样显示的!谁知道你后面怎么写的没有的。看个病连病人都不知道在哪儿,谁能知道他犯的什么病。

评分

参与人数 2黑币 +30 收起 理由
钻牛尖滴刘尖尖 + 15
sheng7533967 + 15

查看全部评分

回复

使用道具 举报

累不死的狗 发表于 2019-1-12 21:16 | 显示全部楼层
程序启动的代码不对,我记得是加18
回复

使用道具 举报

wulin 发表于 2019-1-13 17:54 | 显示全部楼层
1.初始化显示程序没有错,第二行不显示可能是由于不查忙,延时过短造成不稳定,延时改1ms就正常显示了。
2.把需要更新显示的数据分解后保存在缓存数组中,按LCD相应位置变换为字符更新即可。
回复

使用道具 举报

 楼主| pandahu 发表于 2019-1-16 16:43 | 显示全部楼层
累不死的狗 发表于 2019-1-12 21:16
程序启动的代码不对,我记得是加18

是温度显示那个加18吗,现在温度显示了,到十五就自动回零了,是什么原因?
回复

使用道具 举报

 楼主| pandahu 发表于 2019-1-16 16:45 | 显示全部楼层
wulin 发表于 2019-1-13 17:54
1.初始化显示程序没有错,第二行不显示可能是由于不查忙,延时过短造成不稳定,延时改1ms就正常显示了。
2 ...

温度循环显示是什么原因?
回复

使用道具 举报

jane_yj5657 发表于 2019-1-16 20:06 | 显示全部楼层
第二行不显示可能是由于不查忙,延时过短造成不稳定.
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机. 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

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