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

標(biāo)題: 單片機(jī)自動(dòng)售貨機(jī)程序+Proteus仿真 [打印本頁(yè)]

作者: cgg547100632    時(shí)間: 2019-11-23 09:39
標(biāo)題: 單片機(jī)自動(dòng)售貨機(jī)程序+Proteus仿真
自動(dòng)售貨機(jī)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. sbit key1=P1^0;
  3. sbit key2=P1^1;
  4. sbit key3=P1^2;
  5. sbit key4=P1^3;
  6. sbit key5=P1^4;
  7. sbit key6=P1^5;
  8. sbit key7=P1^6;
  9. sbit key8=P1^7;
  10. sbit led1=P3^0;
  11. sbit led2=P3^1;
  12. sbit led3=P3^2;
  13. int step=1;
  14. int price=0;
  15. int num=1;
  16. int table1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F}; //數(shù)碼管顯示0-9
  17. unsigned char dispbuf[8]={0,0,0,0,0,0,0,};
  18. int table2[]={0xe0,0xc0,0xa0,0x80,0x20};//控制退幣
  19. int total_money=0;//所選商品總價(jià)格
  20. int back_money=0; //應(yīng)退金額
  21. int in_money=0;
  22. /*
  23. 延時(shí)功能
  24. */
  25. void delay(int z)
  26. {
  27. int x,y;
  28. for(x=z;x>0;x--)
  29. for(y=110;y>0;y--);
  30. }
  31. //?調(diào)用時(shí)重新初始化??復(fù)位函數(shù)
  32. void reset()
  33. {
  34. step=1;
  35. price=0;
  36. num=1;
  37. total_money=0;
  38. back_money=0;
  39. in_money=0;
  40. }
  41. /*
  42. 選擇商品函數(shù)?每個(gè)按鍵對(duì)應(yīng)不同的物品價(jià)格及數(shù)量
  43. */
  44. void choose()
  45. {
  46. if(key1==0)
  47. {
  48. delay(80);
  49. if(key1==0)
  50. {
  51. num=1;
  52. price=4;
  53. }
  54. }
  55. else if(key2==0)
  56. {
  57. delay(80);
  58. if(key2==0)
  59. {
  60. price=6;
  61. num=1;
  62. }
  63. }
  64. else if(key3==0)
  65. {
  66. delay(80);
  67. if( key3==0)
  68. {
  69. price=10;
  70. num=1;
  71. }
  72. }
  73. }
  74. /*
  75. 確定及取消
  76. 確定則執(zhí)行?step加一?取消則執(zhí)行step減一
  77. */
  78. void apply()
  79. {
  80. if(key7==0)
  81. {
  82. delay(80);
  83. if(key7==0)
  84. {
  85. step++;
  86. }
  87. }
  88. else if(key8==0)
  89. {
  90. delay(80);
  91. if(key8==0)
  92. {
  93. step--;
  94. }
  95. }
  96. }
  97. /*
  98. 計(jì)算所選商品所需金額
  99. */
  100. void totalmoney()
  101. {
  102. total_money=price*num;
  103. }
  104. /*
  105. //累加投入幣值
  106. */
  107. void inmoney()
  108. {
  109. if(key4==0)
  110. {
  111. delay(80);
  112. if(key4==0)
  113. in_money+=1;
  114. }
  115. else if(key5==0)
  116. {
  117. delay(80);
  118. if(key5==0)
  119. in_money+=5;
  120. }
  121. else if(key6==0)
  122. {
  123. delay(80);
  124. if(key6==0)
  125. in_money+=10;
  126. }
  127. }
  128. /*
  129. 計(jì)算所需退還幣值
  130. */
  131. void backmoney()
  132. {
  133. back_money=in_money -total_money;
  134. }
  135. /*
  136. 顯示函數(shù)?每一步顯示不同的內(nèi)容
  137. */
  138. void display ()
  139. {
  140. if(step==1)
  141. {
  142. P2=0x04;
  143. totalmoney();
  144. P0 =table1[total_money%10];
  145. delay(80);
  146. P2 = 0x08;
  147. P0 = table1[total_money/10];
  148. delay(80);
  149. }
  150. else if(step==2)
  151. {
  152. P2=0x04;
  153. inmoney();
  154. P0=table1[in_money%10];
  155. delay(80);
  156. P2=0x08;
  157. P0=table1[in_money/10];
  158. delay(80);
  159. }
  160. else if(step==3)
  161. {
  162. P2=0xf0;
  163. backmoney();
  164. if(back_money<0)
  165. {
  166. step--;
  167. P0=table1[in_money];
  168. }
  169. if(back_money>=0)
  170. {
  171. P2=0x04;
  172. backmoney();
  173. P0=table1[back_money%10];
  174. delay(80);
  175. P2=0x08;
  176. P0=table1[back_money/10];
  177. delay(80);
  178. reset();
  179. }
  180. else
  181. P0=table1[1];
  182. }
  183. }
  184. /*
  185. //主函數(shù)
  186. */
  187. void main()
  188. {
  189. while(1)
  190. {
  191. choose();
  192. apply();
  193. display();
  194. }
  195. /*?if(back_money>=10)
  196. {int?s=back_money/10;
  197. for(s;s>0;s--?)
  198. {led2=0;
  199. delay(1000);
  200. led2=1;
  201. back_money-=10;
  202. }
  203. }
  204. if(back_money<10&&back_money>0?)
  205. {
  206. led3=0;
  207. delay(1000);
  208. led3=1;
  209. }
  210. delay(1000);
  211. {
  212. led1=0;
  213. delay(1000);
  214. led1=1;
  215. delay(1000);
  216. led1=0;
  217. delay(1000);
  218. led1=1;
  219. delay(1000);
  220. led1=0;
  221. delay(1000);
  222. led1=1;
  223. delay(1000);
  224. }*/
  225. }
復(fù)制代碼

所有資料51hei提供下載:
自動(dòng)售貨機(jī).rar (22.78 KB, 下載次數(shù): 126)
自動(dòng)售貨機(jī)控制系統(tǒng)設(shè)計(jì).doc (511.95 KB, 下載次數(shù): 94)



作者: 黃劉哲    時(shí)間: 2019-11-28 15:42
可以,完成度很高
作者: gchq521    時(shí)間: 2019-12-10 10:58
可以 參考一下~感覺不錯(cuò)
作者: sz的波妞    時(shí)間: 2019-12-12 17:50
led 為啥不亮

作者: luozhao    時(shí)間: 2019-12-16 09:06
不錯(cuò)不錯(cuò),剛好需要,謝謝分享
作者: cgg547100632    時(shí)間: 2019-12-26 22:42
sz的波妞 發(fā)表于 2019-12-12 17:50
led 為啥不亮

不會(huì)吧。我調(diào)試的是好的啊
作者: 求學(xué)之路。    時(shí)間: 2020-6-25 13:32
右上角那一部分電路是什么意思呀




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩中文字幕一区 | 日韩视频免费看 | 97国产精品视频人人做人人爱 | 一级黄色毛片免费 | 91成人 | 男女免费观看在线爽爽爽视频 | 在线视频 亚洲 | 一区二区三区视频免费看 | 午夜精品久久久久久久久久久久久 | 精品久久久久久中文字幕 | av一级久久 | 色接久久 | 日韩欧美一区二区三区免费观看 | 成人在线视频免费观看 | 久久久久国产精品一区二区 | 荷兰欧美一级毛片 | 91精品国产乱码久久蜜臀 | 欧美一级片在线 | 三级在线观看 | 欧美成人一区二区 | 国产黄色av网站 | 午夜精品久久久久久久久久久久久 | 国产在线精品一区二区三区 | 99re99| 中文字幕在线观看第一页 | 日日操日日舔 | 成人久久久 | jizz亚洲人 | 亚洲 欧美 在线 一区 | 日韩电影免费观看中文字幕 | 蜜桃视频在线观看免费视频网站www | 精品国产精品国产偷麻豆 | 日韩福利在线 | 北条麻妃国产九九九精品小说 | 九九综合| 国产精品久久二区 | 曰批视频在线观看 | 久久久久久成人 | 日韩免费一区二区 | 国产欧美一级 | 国产精品视频导航 |