找回密码
 立即注册

QQ登录

只需一步,快速开始

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

根据高低电平显示太阳和横线,带计时器,太阳能自动划程序 求帮助

[复制链接]
跳转到指定楼层
楼主
ID:800592 发表于 2020-8-10 14:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
根据高低电平显示太阳和横线,带计时器,太阳能自动划程序
如果太阳能有点10S,输出高电平,继电器跳到太阳能上用电.如果没电,就用家用电
防止太阳能和家用电不断跳动
  1. #include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
  2. #include "lcd.h"
  3. typedef unsigned int u16;          //对数据类型进行声明定义
  4. typedef unsigned char u8;
  5. sbit led1=P3^0;
  6. sbit led2=P3^1;
  7. sbit led3=P3^2;
  8. sbit led4=P3^3;

  9. sbit beep=P1^5;

  10. sbit a1=P1^0;
  11. sbit b2=P1^1;
  12. sbit c3=P1^2;
  13. sbit d4=P1^3;

  14. u8 Disp[]="P0:";
  15. u8 Disp1[]="P1:";
  16. u8 Disp2[]="P2:";
  17. u8 Disp3[]="P3:";
  18. u8 Disp4[]="*";//太阳能电标志
  19. u8 Disp5[]="-";//家用电标志
  20. u8 Disp6[]="IO^1";
  21. u8 Disp7[]="port";
  22. static u16 a,b,c,d,e;
  23. void delay(u16 z)
  24. {
  25. while(z--);
  26. }
  27. void Timer0Init()                //定时器函数
  28. {
  29. TMOD=0x01;//用定时器的一种计数法
  30. TH0=(65536-50000)/256;
  31. TL0=(65536-50000)%256;
  32. ET0=1;//打开定时器0的中断允许
  33. EA=1;//打开总中断
  34. TR0=1;//打开定时器
  35. }
  36. void main(void)
  37. {
  38. u8 i;
  39. P1=0;
  40. P2=0;
  41. P3=0;
  42. a=200;
  43. b=200;
  44. c=200;
  45. d=200;
  46. e=10;
  47. LcdInit();
  48. Timer0Init();
  49. while(1)
  50. {
  51. if(e==0)
  52. {
  53. LcdWriteCom(0x80+1);
  54. for(i=0;i<3;i++)
  55. {
  56. LcdWriteData(Disp[i]);       
  57. }
  58. ////////
  59. LcdWriteCom(0x80+11);
  60. for(i=0;i<3;i++)
  61. {
  62. LcdWriteData(Disp1[i]);       
  63. }
  64. ////////
  65. LcdWriteCom(0x80+0x40+1);
  66. for(i=0;i<3;i++)
  67. {
  68. LcdWriteData(Disp2[i]);       
  69. }
  70. ////////
  71. LcdWriteCom(0x80+0x40+11);
  72. for(i=0;i<3;i++)
  73. {
  74. LcdWriteData(Disp3[i]);       
  75. }
  76. ////////
  77. LcdWriteCom(0x80+6);
  78. for(i=0;i<4;i++)
  79. {
  80. LcdWriteData(Disp6[i]);       
  81. }
  82. ///////
  83. LcdWriteCom(0x80+0x40+6);
  84. for(i=0;i<4;i++)
  85. {
  86. LcdWriteData(Disp7[i]);       
  87. }
  88. ////////////////////////////
  89. if(led1==1)//太阳能电启用标志
  90. {
  91. LcdWriteCom(0x80+4);
  92. for(i=0;i<1;i++)
  93. {
  94. LcdWriteData(Disp4[i]);       
  95. }
  96. }
  97. if(a1==0)//家用电启用标志
  98. {
  99. led1=0;
  100. a=200;
  101. LcdWriteCom(0x80+4);
  102. for(i=0;i<1;i++)
  103. {
  104. LcdWriteData(Disp5[i]);
  105. }
  106. }
  107. if(a==0)led1=1;
  108. else{led1=0;}
  109. ///////////////////////////
  110. if(led2==1)
  111. {
  112. LcdWriteCom(0x80+14);
  113. for(i=0;i<1;i++)
  114. {
  115. LcdWriteData(Disp4[i]);       
  116. }
  117. }
  118. if(b2==0)
  119. {
  120. led2=0;
  121. b=200;
  122. LcdWriteCom(0x80+14);
  123. for(i=0;i<1;i++)
  124. {
  125. LcdWriteData(Disp5[i]);       
  126. }
  127. }
  128. if(b==0)led2=1;
  129. else{led2=0;}
  130. /////////////////////////////
  131. if(led3==1)
  132. {
  133. LcdWriteCom(0x80+0x40+4);
  134. for(i=0;i<1;i++)
  135. {
  136. LcdWriteData(Disp4[i]);       
  137. }
  138. }
  139. if(c3==0)
  140. {
  141. led3=0;
  142. c=200;
  143. LcdWriteCom(0x80+0x40+4);
  144. for(i=0;i<1;i++)
  145. {
  146. LcdWriteData(Disp5[i]);       
  147. }       
  148. }
  149. if(c==0)led3=1;
  150. else{led3=0;}
  151. /////////////////////////////
  152. if(led4==1)
  153. {
  154. LcdWriteCom(0x80+0x40+14);
  155. for(i=0;i<1;i++)
  156. {
  157. LcdWriteData(Disp4[i]);       
  158. }
  159. }
  160. if(d4==0)
  161. {
  162. led4=0;
  163. d=200;
  164. LcdWriteCom(0x80+0x40+14);
  165. for(i=0;i<1;i++)
  166. {
  167. LcdWriteData(Disp5[i]);       
  168. }
  169. }
  170. if(d==0)led4=1;
  171. else{led4=0;}
  172. }

  173. else {beep=~beep;delay(120);}
  174. }
  175. }
  176. void Timer0() interrupt 1 //开启定时器1
  177. {
  178. //1200=1分钟   20=1s
  179. TH0=(65536-50000)/256;
  180. TL0=(65536-50000)%256;
  181. if(a&&a1==1)
  182. {
  183. a--;
  184. }
  185. if(b&&b2==1)
  186. {
  187. b--;
  188. }
  189. if(c&&c3==1)
  190. {
  191. c--;
  192. }
  193. if(d&&d4==1)
  194. {
  195. d--;
  196. }
  197. if(e)
  198. {
  199. e--;
  200. }
  201. }
复制代码

求帮忙看看哪里有错误?

2.LCD加太阳能检测.rar

44.45 KB, 下载次数: 6, 下载积分: 黑币 -5

5

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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