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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5429|回復: 6
打印 上一主題 下一主題
收起左側

單片機自動售貨機程序+Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
自動售貨機仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  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}; //數碼管顯示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;//所選商品總價格
  20. int back_money=0; //應退金額
  21. int in_money=0;
  22. /*
  23. 延時功能
  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. //?調用時重新初始化??復位函數
  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. 選擇商品函數?每個按鍵對應不同的物品價格及數量
  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. 確定則執行?step加一?取消則執行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. 計算所選商品所需金額
  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. 計算所需退還幣值
  130. */
  131. void backmoney()
  132. {
  133. back_money=in_money -total_money;
  134. }
  135. /*
  136. 顯示函數?每一步顯示不同的內容
  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. //主函數
  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. }
復制代碼

所有資料51hei提供下載:
自動售貨機.rar (22.78 KB, 下載次數: 126)
自動售貨機控制系統設計.doc (511.95 KB, 下載次數: 94)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:651497 發表于 2019-11-28 15:42 | 只看該作者
可以,完成度很高
回復

使用道具 舉報

板凳
ID:489394 發表于 2019-12-10 10:58 | 只看該作者
可以 參考一下~感覺不錯
回復

使用道具 舉報

地板
ID:659263 發表于 2019-12-12 17:50 | 只看該作者
led 為啥不亮
回復

使用道具 舉報

5#
ID:625113 發表于 2019-12-16 09:06 來自手機 | 只看該作者
不錯不錯,剛好需要,謝謝分享
回復

使用道具 舉報

6#
ID:572991 發表于 2019-12-26 22:42 來自手機 | 只看該作者
sz的波妞 發表于 2019-12-12 17:50
led 為啥不亮

不會吧。我調試的是好的啊
回復

使用道具 舉報

7#
ID:787555 發表于 2020-6-25 13:32 來自手機 | 只看該作者
右上角那一部分電路是什么意思呀
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久专区 | 午夜影院中文字幕 | 日韩有码在线播放 | 久久综合一区 | 日韩乱码一二三 | 神马久久香蕉 | 看一级毛片 | av毛片在线播放 | 综合久久久 | 毛片免费观看 | 国产成人小视频 | 亚洲精品日韩一区二区电影 | 亚洲性人人天天夜夜摸 | 欧美影院| 天堂色| 免费中文字幕 | 99精品在线观看 | 超黄毛片| 青娱乐av | 久久国内 | 操操日| 国产欧美在线一区 | 视频一区二区在线观看 | 91视频18 | 天天躁日日躁狠狠躁白人 | av免费看片 | 91精品国产综合久久久动漫日韩 | www.v888av.com| 91麻豆精品国产91久久久久久久久 | 成人av在线网站 | 国产精品久久久久久久久久三级 | 中文字幕亚洲一区 | 国产日韩精品视频 | 国产999精品久久久久久 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 麻豆av在线| 777zyz色资源站在线观看 | 成人在线免费av | 精品动漫一区 | 日本精品视频一区二区 | 一区二区三区免费 |