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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8876|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品区 | 成人黄色电影在线播放 | 亚洲精品电影网在线观看 | 国产免费一区二区三区最新6 | 国产一区二区三区四区三区四 | 国产欧美在线 | 国产精品日日做人人爱 | 亚洲a一区二区 | 国产精品日韩在线 | 精品美女视频在免费观看 | 午夜天堂 | 中文字幕在线观看视频一区 | 一区二区三区在线看 | 自拍偷拍3p | 久久成人精品视频 | 日韩电影一区二区三区 | 日本欧美在线视频 | 99国产精品99久久久久久 | www.色午夜.com | 国产午夜精品久久久 | 亚洲中午字幕 | av日韩精品| 精品国产一区二区三区久久久蜜月 | 一区二区视频 | 国产精品爱久久久久久久 | 精品视频在线播放 | 欧美三区在线观看 | 国产精品久久久久免费 | 在线观看深夜视频 | 91精品久久久久久久久 | 中文字幕91 | 日韩三区在线 | 一区二区福利视频 | 中文字幕在线观看av | 精品中文字幕在线观看 | 日韩精品免费视频 | 中文字幕亚洲精品 | 亚洲黄色高清视频 | 狠狠综合久久av一区二区老牛 | 久久av一区 | 熟女毛片 |