找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机酒精浓度检测仪proteus仿真及源程序

[复制链接]
跳转到指定楼层
楼主
这是一个用51单片机做的酒精浓度检测仪,由于PROTEUS里没有酒精传感器MQ_3,我用了滑动变阻器代替.



源程序:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #include <math.h>
  4. #include <stdio.h>
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. sbit beep=P1^0;
  8. sbit d1=P1^1;
  9. sbit d2=P1^3;
  10. sbit k1=P2^0;
  11. sbit k2=P2^1;
  12. sbit lcdrs=P2^5;
  13. sbit lcdrw=P2^6;
  14. sbit lcden=P2^7;
  15. sbit cs=P1^5;
  16. sbit rd=P1^6;
  17. sbit wr=P1^7;
  18. uchar code str[]="AC value:";
  19. uchar code str0[]="ppm";
  20. uchar code table[]="0123456789:";
  21. uchar flag,temp,a,b,c,d,tt;
  22. void init();
  23. void delay(uint);
  24. void write_str(uchar*);
  25. void write_com(uchar);
  26. void write_data(uchar);
  27. void ad();
  28. void display();
  29. void main()
  30. {
  31. init();
  32. while(1)
  33. {
  34. if(k1==0)
  35. {
  36. delay(5);
  37. if(k1==0)
  38. flag=0;
  39. while(!k1);
  40. }
  41. if(k2==0)
  42. {
  43. delay(5);
  44. if(k2==0)
  45. flag=1;
  46. while(!k2);
  47. }
  48. while(flag==0)
  49. TR0=0;
  50. d2=1;
  51. write_com(1);
  52. write_com(0x80);
  53. write_str(str);
  54. write_com(0x80+0x40+9);
  55. write_str(str0);
  56. while(flag==0)
  57. {
  58. ad();
  59. display();
  60. if(temp>=20)
  61. {
  62. beep=0;
  63. d1=0;
  64. }
  65. else
  66. {
  67. beep=1;
  68. d1=1;
  69. }
  70. if(k1==0)
  71. {
  72. delay(5);
  73. if(k1==0)
  74. flag=0;
  75. while(!k1);
  76. }
  77. if(k2==0)
  78. {
  79. delay(5);
  80. if(k2==0)
  81. flag=1;
  82. while(!k2);
  83. }
  84. }
  85. }
  86. while(flag==1)
  87. {
  88. beep=1;
  89. d1=1;
  90. tt=0;
  91. a=0;
  92. b=10;
  93. c=0;
  94. d=0;
  95. write_com(1);
  96. d2=0;
  97. TH0=(65536-50000)/256;
  98. TL0=(65536-50000)%256;
  99. TR0=1;
  100. while(flag==1)
  101. {
  102. write_com(0x80+6);
  103. write_data(table[a]);
  104. write_com(0x80+7);
  105. write_data(table[b]);
  106. write_com(0x80+8);
  107. write_data(table[c]);
  108. write_com(0x80+9);
  109. write_data(table[d]);
  110. if(k1==0)
  111. {
  112. delay(5);
  113. if(k1==0)
  114. flag=0;
  115. while(!k1);
  116. }
  117. if(k2==0)
  118. {
  119. delay(5);
  120. if(k2==0)
  121. flag=1;
  122. while(!k2);
  123. }
  124. }
  125. }
  126. }
  127. void init()
  128. {
  129. lcdrw=0;
  130. lcden=0;
  131. write_com(0x38);
  132. write_com(0x0c);
  133. write_com(0x06);
  134. cs=0;
  135. flag=1;
  136. b=10;
  137. TMOD=0x01;
  138. EA=1;
  139. ET0=1;
  140. }
  141. void delay(uint z)
  142. {
  143. uint x,y;
  144. for(x=110;x>0;x--)
  145. for(y=z;y>0;y--);
  146. }
  147. void write_str(uchar *p)
  148. {
  149. while(*p)
  150. write_data(*p++);
  151. }
  152. void write_com(uchar com)
  153. {
  154. lcdrs=0;
  155. P0=com;
  156. delay(5);
  157. lcden=1;
  158. delay(5);
  159. lcden=0;
  160. }
  161. void write_data(uchar da)
  162. {
  163. lcdrs=1;
  164. P0=da;
  165. delay(5);
  166. lcden=1;
  167. delay(5);
  168. lcden=0;
  169. }
  170. void ad()
  171. {
  172. wr=0;
  173. delay(1);
  174. wr=1;
  175. delay(5);
  176. P3=0xff;
  177. delay(1);
  178. rd=0;
  179. delay(1);
  180. temp=P3;
  181. rd=1;
  182. }
  183. void display()
  184. {
  185. uint value;
  186. uchar a,b,c;
  187. value=3.92*temp;
  188. a=value/100;
  189. b=value%100/10;
  190. c=value%10;
  191. write_com(0x80+0x40+4);
  192. write_data(0x30+a);
  193. write_com(0x80+0x40+5);
  194. write_data(0x30+b);
  195. write_com(0x80+0x40+6);
  196. write_data(0x30+c);
  197. }
  198. void timer0()interrupt 1
  199. {
  200. TH0=(65536-50000)/256;
  201. TL0=(65536-50000)%256;
  202. tt++;
  203. if(tt==20)
  204. {
  205. tt=0;
  206. if(b==10)
  207. b=11;
  208. else
  209. b=10;
  210. d++;
  211. if(d==10)
  212. {
  213. d=0;
  214. c++;
  215. if(c==6)
  216. {
  217. c=0;
  218. a++;
  219. if(a==10)
  220. a=0;
  221. }
  222. }
  223. }
  224. }
复制代码


单片机酒精浓度检测仪.rar

78.32 KB, 下载次数: 181, 下载积分: 黑币 -5

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

使用道具 举报

沙发
ID:142404 发表于 2016-10-12 16:20 | 只看该作者
已收藏,赞一个。
回复

使用道具 举报

板凳
ID:151968 发表于 2016-12-8 19:19 | 只看该作者
运行不起来啊
回复

使用道具 举报

地板
ID:167338 发表于 2017-3-2 14:41 | 只看该作者
请问你这个程序 仿真怎么用 我用的时候一直跳PPM
回复

使用道具 举报

5#
ID:111182 发表于 2017-5-4 08:46 | 只看该作者
别下载了,不好使
回复

使用道具 举报

6#
ID:291687 发表于 2018-3-14 11:04 | 只看该作者
赞一个,已经收藏
回复

使用道具 举报

7#
ID:448464 发表于 2018-12-17 22:52 | 只看该作者
请问你这个程序 仿真怎么用 我用的时候一直跳PPM
回复

使用道具 举报

8#
ID:758815 发表于 2020-6-10 23:41 | 只看该作者
运行不起来啊,我也是一直跳ppm,是不是代码有问题啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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