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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2257|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

用51單片機(jī)設(shè)計(jì)的自助售貨機(jī)系統(tǒng)文檔等

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本文設(shè)計(jì)了一款以AT89C51單片機(jī)為核心的自動(dòng)售貨機(jī)系統(tǒng),并且著重詳細(xì)地介紹了自動(dòng)售貨機(jī)的整體系統(tǒng)設(shè)計(jì)方案、硬件選擇基礎(chǔ)、軟件使用方法及技巧。以AT89C51作為CPU處理單元連接各個(gè)功能模塊;以4×4矩陣鍵盤作為輸入控制模塊對(duì)貨物進(jìn)行種類和數(shù)量的選擇以及模擬貨幣的投入功能;以LCD1602液晶作為顯示模塊來(lái)顯示當(dāng)前的購(gòu)物狀態(tài)以及貨幣狀態(tài);以LED的顯示來(lái)表示當(dāng)前選擇貨物以及出貨的狀態(tài)。


自助售貨機(jī)原理:
在初始化的界面等待顧客按鍵選擇貨物的種類和數(shù)量顧客投入貨幣,按下確定購(gòu)買鍵后等待售貨機(jī)自動(dòng)計(jì)算所購(gòu)商品的總價(jià),然后提示顧客投入貨幣。所投的貨幣經(jīng)過外部硬件檢測(cè)傳感器檢測(cè)真假后累加計(jì)數(shù)。若顧客確認(rèn)購(gòu)買系統(tǒng)則跳轉(zhuǎn)到下一步驟,反之取消購(gòu)買即退出貨幣返回到主界面,等待顧客下一步操作。自動(dòng)售貨機(jī)通過貨幣的總價(jià)與和所購(gòu)商品的總價(jià)的差值來(lái)進(jìn)行出貨找零。




仿真:




操作說(shuō)明:




仿真分析為:
(1)加載Sale.hex文件到AT89C51單片機(jī),點(diǎn)擊運(yùn)行,自動(dòng)售貨機(jī)系統(tǒng)進(jìn)入初始化等待狀態(tài),LCD顯示“Welcome Sale”,同時(shí)等待按鍵輸入。


(2)通過按鍵“價(jià)格+”和“價(jià)格-”來(lái)選擇貨物的種類,然后通過“數(shù)量+”和“數(shù)量-”來(lái)選擇所購(gòu)買貨物的數(shù)量,同時(shí)代表被選擇貨物的LED指示燈亮。




(3)當(dāng)選擇好貨物后,按下“確認(rèn)OK”鍵進(jìn)入到投幣系統(tǒng),此時(shí)機(jī)器會(huì)自動(dòng)計(jì)算出所購(gòu)貨物總金額。




(4)(4)當(dāng)機(jī)器計(jì)算出總價(jià)等待顧客投入貨幣并按下“確認(rèn)OK”鍵后,當(dāng)投入貨幣貨幣值大于或等于總價(jià)時(shí)就出貨并找零,若投入貨幣貨幣值小于總價(jià)則不能出貨只能按下“取消NO”退出所投貨幣或繼續(xù)增加投幣。




(5)當(dāng)完成以上步驟后則完成一次自動(dòng)購(gòu)物過程,機(jī)器自動(dòng)復(fù)位回到初始化界面,同時(shí)在操作過程中的任一環(huán)節(jié),都可通過按下“取消NO”鍵,是售貨機(jī)系統(tǒng)復(fù)位到初始狀態(tài)。


代碼:
  1. #include<reg51.h>
  2. #define WAIT_SALE        0            
  3. #define NO_WATER         1                 
  4. #define INPUT_MONEY        2
  5. #define SALING                3
  6. #define CHANGE                4
  7. #define CANCLE                5
  8. #define NO_DATA                0
  9. #define water_change(x, y) ((x) & (~(0x01 << y)))
  10. #define uint unsigned int
  11. #define uchar unsigned char

  12. unsigned char water_total[] = {10, 10, 10, 10, 10, 10, 10, 10};   
  13. unsigned char water_price[] = {1, 2, 3, 4, 5, 6, 7, 8};
  14. uchar code wait_sale[]=" Welcome Sale ";    //定義所顯示的內(nèi)容
  15. uchar code no_water[] = "No Water!";
  16. uchar code price[] = "Price:";
  17. uchar code number[] = "Num:";
  18. uchar code sum[] = "SUM:";
  19. uchar code input[] = "INPUT:";
  20. uchar code change[] = "Change:";
  21. uchar code put_water[] = "Get Water...";
  22. uchar code cancle[] = "Cancle...";

  23. unsigned char e=0x00;                    
  24. sbit P2_0=P2^0;                       //定義接端口
  25. sbit P2_1=P2^1;
  26. sbit P2_2=P2^2;
  27. sbit P2_3=P2^3;
  28. sbit lcd_en=P3^4;            
  29. sbit rs=P3^2;
  30. sbit rw = P3^3;

  31. void lcd_1602_delay(uint z)          //延時(shí)
  32. {
  33. uint x,y;
  34. for(x=z;x>0;x--)
  35. for(y=110;y>0;y--);
  36. }
  37. void lcd_1602_write_com(uchar com)   //寫命令
  38. {
  39. rs=0;
  40. rw=0;
  41. P2=com;
  42. lcd_1602_delay(5);
  43. lcd_en=1;
  44. lcd_1602_delay(5);
  45. lcd_en=0;
  46. }

  47. void lcd_1602_write_data(uchar date) //寫數(shù)據(jù)
  48. {
  49. rs=1;
  50. rw=0;
  51. P2=date;
  52. lcd_1602_delay(5);
  53. lcd_en=1;
  54. lcd_1602_delay(5);
  55. lcd_en=0;
  56. }

  57. void lcd_1602_init()               //LCD1602初始化函數(shù)
  58. {
  59. lcd_en=0;
  60. lcd_1602_write_com(0x38);
  61. lcd_1602_write_com(0x0e);
  62. lcd_1602_write_com(0x06);
  63. lcd_1602_write_com(0x01);
  64. }

  65. void lcd_1602_wait_sure()         //顯示'OK'&'NO'界面
  66. {
  67. lcd_1602_write_com(0x80+0x40);
  68. lcd_1602_write_data('O');
  69. lcd_1602_write_data('K');
  70.                
  71. lcd_1602_write_com(0x80+0x4e);
  72. lcd_1602_write_data('N');
  73. lcd_1602_write_data('O');
  74. }

  75. void lcd_1602_show_num(uint num)       // 1602顯示數(shù)字的函數(shù)
  76. {
  77. if(num <= 9)
  78. {
  79.    lcd_1602_write_data('0'+num);
  80.    lcd_1602_write_data(' ');
  81.   }else if(num > 10 )
  82. {
  83.    lcd_1602_write_data('0'+num/10);
  84.    lcd_1602_write_data('0'+num%10);
  85.   }
  86. }

  87. void lcd1602_info_display(uint choose, uint num_type, uint num_count)  
  88. {
  89. int num;
  90. lcd_1602_write_com(0x81);
  91. switch(choose)
  92.   {
  93. case WAIT_SALE:
  94. lcd_1602_write_com(0x80+0x01);       //
  95. for(num = 0; num < 13; num++)
  96. {
  97. lcd_1602_write_data(wait_sale[num]);
  98. }
  99. break;
  100. case NO_WATER:
  101. lcd_1602_write_com(0x80+0x03);
  102. for(num = 0; num < 9; num++)
  103.   {
  104.    lcd_1602_write_data(no_water[num]);        
  105.    }
  106. break;
  107. case SALING:
  108. lcd_1602_write_com(0x80+0x00);
  109. for(num = 0; num < 6; num++)
  110.   {
  111.     lcd_1602_write_data(price[num]);
  112.    }
  113. lcd_1602_write_data('0'+(num_type+1));
  114. lcd_1602_write_data(' ');
  115. lcd_1602_write_data(' ');
  116. for(num = 0; num < 4; num++)
  117.           {
  118.            lcd_1602_write_data(number[num]);
  119.            }
  120. lcd_1602_show_num(num_count);
  121. break;
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:403916 發(fā)表于 2020-2-27 12:54 | 只看該作者
你好!請(qǐng)問如果改成掃碼支付,有沒有推薦的可以買到的模塊呢?
回復(fù)

使用道具 舉報(bào)

板凳
ID:718052 發(fā)表于 2020-3-29 12:16 | 只看該作者
1061897836 發(fā)表于 2020-2-27 12:54
你好!請(qǐng)問如果改成掃碼支付,有沒有推薦的可以買到的模塊呢?

我也想問這個(gè)問題
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久91 | 国产日韩精品视频 | 婷婷综合网 | 亚洲a视频 | 日韩一级免费大片 | 国产精品日本一区二区在线播放 | a免费视频 | 成人性生交大片免费看r链接 | a视频在线 | 偷拍自拍网址 | 亚洲综合在 | 国产精品久久久久久久久久久新郎 | 欧美操操操 | 久久一| 黄网站免费观看 | 99国产精品视频免费观看一公开 | 日本精品一区二区三区在线观看视频 | 91高清视频在线观看 | 亚洲精品在线视频 | av片毛片| 亚洲一一在线 | 久久久久久久一级 | 99re视频在线 | 毛片一区二区三区 | 伊人伊人网 | 亚洲精品播放 | 伊人伊成久久人综合网站 | 亚洲国产精品一区二区第一页 | 在线观看国产视频 | 二区视频 | 欧美激情一区二区三区 | 日韩图区| 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | www.五月天婷婷 | 精品久久久久久久久久久院品网 | 亚洲人成网亚洲欧洲无码 | 日韩中文字幕免费在线观看 | av网站在线看 | 成人网在线观看 | 午夜精品一区二区三区在线视 | 国产日韩欧美 |