找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1684|回复: 2
打印 上一主题 下一主题
收起左侧

我的单片机智能温度计 LCD1602只显示上面一行

[复制链接]
跳转到指定楼层
楼主
这是我的智能多点温度计
设计指标:
1)测量三个点的温度,测温范围均为:0100℃;
2)每点温度分辨力:0.0625℃;
3)测量速率:2/秒自动连续测量;
4)结果显示方式:当前温度显示及与上一次温度测量值差值显示。



这是我的单片机程序
这是proteus仿真时的场景,下面一行本该显示差值一直没有显示,只有上面一行。
在百度上查了很久了。。一直没有找到有用的方法,请各位帮帮我。抱拳!
  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uint temp1;
  6. uint temp2;
  7. uint warn_l1=260;
  8. //??????????????????10????????趨???????1?26???
  9. uint warn_l2=230;
  10. //??????????????????10????????趨???????2?23???
  11. uint warn_h1=290;
  12. //??????????????????10????????趨???????1?29???
  13. uint warn_h2=320;
  14. //??????????????????10????????趨???????2?32???
  15. uchar code table[]="Difference:";
  16. sbit DS1=P2^1;
  17. sbit DS2=P2^2;
  18. sbit lcden=P3^4;
  19. sbit rs=P3^5;
  20. sbit rw=P3^7;
  21. sbit dula=P2^6;
  22. sbit wela=P2^7;
  23. sbit beep=P2^3;
  24. sbit led0=P1^0;
  25. sbit led1=P1^1;
  26. //?????????????????2??P1.0??P1.1???led1??led2???
  27. sbit led2=P1^2;
  28. sbit led3=P1^3;
  29. //?????????????????2??P1.2??P1.3???led3??led4???
  30. void delayms(unsigned int xms)
  31. {
  32. unsigned int i,j;
  33. for(i=xms;i>0;i--)
  34.   for(j=110;j>0;j--);
  35. }

  36. void write_com(unsigned char com)
  37. {
  38. rs=0;
  39. wr=0;
  40. P0=com;
  41. lcden=0;
  42. delayms(10);
  43. lcden=1;
  44. delayms(10);
  45. lcden=0;
  46. }
  47. void write_data(unsigned char dat)
  48. {
  49. rs=1;
  50. wr=0;
  51. P0=dat;
  52. lcden=0;
  53. delayms(10);
  54. lcden=1;
  55. delayms(10);
  56. lcden=0;
  57. }
  58. void init_lcd()
  59. {
  60. dula=0;
  61. wela=0;
  62. write_com(0x01);
  63. write_com(0x38);
  64. write_com(0x0c);
  65. write_com(0x06);
  66.      dula=0;
  67. wela=0;
  68. write_com(0x01);
  69. write_com(0x38);
  70. write_com(0x0c);
  71. write_com(0x06);
  72. }

  73. void dsreset1(void)
  74. {
  75. uint i;
  76. DS1=0;
  77. i=103;
  78. while(i>0)i--;
  79. DS1=1;
  80. i=4;
  81. while(i>0)i--;
  82. }
  83. void dsreset2(void)
  84. {
  85. uint i;
  86. DS2=0;
  87. i=103;
  88. while(i>0)i--;
  89. DS2=1;
  90. i=4;
  91. while(i>0)i--;
  92. }
  93. bit tmpreadbit1(void)
  94. {
  95. uint i;
  96. bit dat1;
  97. DS1=0;i++;
  98. DS1=1;i++;i++;
  99. dat1=DS1;
  100. i=8;
  101. while(i>0)i--;
  102. return (dat1);
  103. }
  104. bit tmpreadbit2(void)
  105. {
  106. uint i;
  107. bit dat2;
  108. DS2=0;i++;
  109. DS2=1;i++;i++;
  110. dat2=DS2;
  111. i=8;
  112. while(i>0)i--;
  113. return (dat2);
  114. }
  115. uchar tmpread1(void)
  116. {
  117. uchar i,j,dat1;
  118. dat1=0;
  119. for(i=1;i<=8;i++)
  120. {
  121.   j=tmpreadbit1();
  122.   dat1=(j<<7)|(dat1>>1);
  123. //?????????????λ??????棬???????????????DAT
  124. }
  125. return(dat1);
  126. }
  127. uchar tmpread2(void)
  128. {
  129. uchar i,j,dat2;
  130. dat2=0;
  131. for(i=1;i<=8;i++)
  132. {
  133.   j=tmpreadbit2();
  134.   dat2=(j<<7)|(dat2>>1);
  135. //?????????????λ??????棬???????????????DAT
  136. }
  137. return(dat2);
  138. }
  139. void tmpwritebyte1(uchar dat1)
  140. {
  141. uint i;
  142. uchar j;
  143. bit testb;
  144. for(j=1;j<=8;j++)
  145. {
  146.   testb=dat1&0x01;
  147.   dat1=dat1>>1;
  148.   if(testb)
  149.   {
  150.    DS1=0;
  151.    i++;i++;
  152.    DS1=1;
  153.    i=8;while(i>0)i--;
  154.   }
  155.   else
  156.   {
  157.    DS1=0;
  158.    i=8;while(i>0)i--;
  159.    DS1=1;
  160.    i++;i++;
  161.   }
  162. }
  163. }
  164. void tmpwritebyte2(uchar dat2)
  165. {
  166. uint i;
  167. uchar j;
  168. bit testb;
  169. for(j=1;j<=8;j++)
  170. {
  171.   testb=dat2&0x01;
  172.   dat2=dat2>>1;
  173.   if(testb)
  174.   {
  175.    DS2=0;
  176.    i++;i++;
  177.    DS2=1;
  178.    i=8;while(i>0)i--;
  179.   }
  180.   else
  181.   {
  182.    DS2=0;
  183.    i=8;while(i>0)i--;
  184.    DS2=1;
  185.    i++;i++;
  186.   }
  187. }
  188. }
  189. void tmpchange1(void)
  190. {
  191. dsreset1();
  192. delayms(2);
  193. tmpwritebyte1(0xcc);
  194. tmpwritebyte1(0x44);
  195. }
  196. void tmpchange2(void)
  197. {
  198. dsreset2();
  199. delayms(2);
  200. tmpwritebyte2(0xcc);
  201. tmpwritebyte2(0x44);
  202. }

  203. uint tmp1()
  204. {
  205. float tt;
  206. uchar a,b;
  207. dsreset1();
  208. delayms(2);
  209. tmpwritebyte1(0xcc);
  210. tmpwritebyte1(0xbe);
  211. a=tmpread1();
  212. b=tmpread1();
  213. temp1=b;
  214. temp1<<=8;   
  215. temp1=temp1|a;
  216. tt=temp1*0.0625;
  217. //?????????????12λ??????????0.0625 ?
  218. //???????????????λ???????0.0625 ?
  219. temp1=tt*10+0.5;
  220. //???????????????????????????????????
  221. return temp1;
  222. }
  223. uint tmp2()
  224. {
  225. float tt;
  226. uchar a,b;
  227. dsreset2();
  228. delayms(2);
  229. tmpwritebyte2(0xcc);
  230. tmpwritebyte2(0xbe);
  231. a=tmpread2();
  232. b=tmpread2();
  233. temp2=b;
  234. temp2<<=8;   
  235. temp2=temp2|a;
  236. tt=temp2*0.0625;
  237. //?????????????12λ??????????0.0625 ?
  238. //???????????????λ???????0.0625 ?
  239. temp2=tt*10+0.5;
  240. //???????????????????????????????????
  241. return temp2;
  242. }
  243. void display(uint temp1,uint temp2)
  244. {
  245. uchar A1,A2,A2t,A3,ser,B1,B2,B2t,B3,C1,C2,C2t,C3,C,num;
  246. init_lcd();
  247. ser=temp1/10;
  248. SBUF=ser;
  249. A1=temp1/100;
  250. A2t=temp1%100;
  251. A2=A2t/10;
  252. A3=A2t%10;
  253. write_com(0x80);
  254. write_data('A');
  255. write_com(0x81);
  256. write_data(':');
  257. write_com(0x82);
  258. write_data(A1+0x30);
  259. write_com(0x83);
  260. write_data(A2+0x30);
  261. write_com(0x84);
  262. write_data('.');
  263. write_com(0x85);
  264. write_data(A3+0x30);
  265. ser=temp2/10;
  266. SBUF=ser;
  267. B1=temp2/100;
  268. B2t=temp2%100;
  269. B2=B2t/10;
  270. B3=B2t%10;
  271. write_com(0x80+8);
  272. write_data('B');
  273. write_com(0x81+8);
  274. write_data(':');
  275. write_com(0x82+8);
  276. write_data(B1+0x30);
  277. write_com(0x83+8);
  278. write_data(B2+0x30);
  279. write_com(0x84+8);
  280. write_data('.');
  281. write_com(0x85+8);
  282. write_data(B3+0x30);
  283. //???????????????
  284. if(temp2>temp1)
  285.   C=temp2-temp1;
  286. else
  287.   C=temp1-temp2;
  288. ser=C/10;
  289. SBUF=ser;
  290. C1=C/100;
  291. C2t=C%100;
  292. C2=C2t/10;
  293. C3=C2t%10;
  294. write_com(0x80+40);
  295. for(num=0;num<11;num++)
  296.      write_data(table[num]);
  297. write_com(0x80+51);
  298. write_data(C2+0x30);
  299. write_com(0x80+52);
  300. write_data('.');
  301. write_com(0x80+53);
  302. write_data(C3+0x30);
  303. }
  304. void warn(uint s,uchar led)   
  305. {
  306. uchar i;
  307. i=s;
  308. dula=0;
  309. wela=0;
  310. beep=0;
  311. P1=~(led);
  312. while(i--)
  313. {
  314.   display(tmp1(),tmp2());
  315. }
  316. beep=1;
  317. P1=0xFF;
  318. i=s;
  319. while(i--)
  320. {
  321.   display(tmp1(),tmp2());
  322. }
  323. }
  324. void deal(uint t1,uint t2)
  325. {
  326. uchar i;
  327. if((t1<=warn_l2)||(t2<=warn_l2))
  328. {
  329.       warn(1,0x03);
  330. }
  331. else if((t1>=warn_h2)||(t2>=warn_h2))
  332. {
  333.   warn(1,0x0c);
  334. }
  335. else if((t1>warn_l2)&&(t1<=warn_l1))
  336. //?????????????23??С??????26
  337. {
  338.       warn(7,0x01);
  339. }
  340. else if((t2>warn_l2)&&(t2<=warn_l1))
  341. //?????????????23??С??????26
  342. {
  343.       warn(7,0x01);
  344. }
  345. else if((t1<warn_h2)&&(t1>=warn_h1))
  346. //??????????С??32?????????29
  347.    {
  348.       warn(7,0x04);
  349. }
  350. else if((t2<warn_h2)&&(t2>=warn_h1))
  351. //??????????С??32?????????29
  352.    {
  353.       warn(7,0x04);
  354. }
  355. else
  356.    {
  357.       i=10;
  358.       while(i--)
  359.       {
  360.    display(tmp1(),tmp2());
  361.       }
  362.    }
  363. }
  364.          
  365. void main()
  366. {
  367. do
  368. {
  369.   tmpchange1();
  370.   tmpchange2();
  371.   deal(temp1,temp2);
  372.   display(tmp1(),tmp2());
  373. }
  374. while(1);
  375.      }
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:282095 发表于 2019-6-28 12:10 | 只看该作者
注释乱码啊
回复

使用道具 举报

板凳
ID:573963 发表于 2019-6-28 13:19 | 只看该作者

我也不知道为啥,注释在keil 里面有 在这里面就是乱码了。。。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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