基于单片机的自动售货机系统设计
第 36 页 共 62 页
基于单片机的自动售货机系统设计
附录
本次设计的完整程序
MONEY EQU 0040H ;定义投币显示存储单元
RS EQU P3.0 RW EQU P3.1 E EQU P3.2
************** 投币总数LCD显示程序 ************* MAIN: MOV MONEY,#01H ;赋予MONEY单元初值为1 START: ACALL DELAY ;调用延时程序 MOV P2,#01H ;写指令01H,清屏 LCALL ENABLE
MOV P2,#38H ;写指令38H,设定LCD为16*2显示,5*7点阵,8位数据接口
LCALL ENABLE
MOV P2,#0FH ;写指令0FH,显示ON,光标ON,闪烁ON LCALL ENABLE
MOV P2,#06H ;写指令06H,光标输入方式增量移位 LCALL ENABLE
MOV P2,#80H ;第一行起始字符地址 LCALL ENABLE
MOV DPTR,#TABLE ;显示字符表头地址 LCALL DISP ;显示第一行数据 RET ;返回
第 37 页 共 62 页
基于单片机的自动售货机系统设计
ENABLE: CLR RS ;写指令子程序 CLR RW CLR E LCALL DELAY SETB E RET
DISP: MOV R4,#6 ;准备显示一行6个字符 LOOP1: MOV A,00H ;投币数送A MOV R1,MONEY
L1: ADD A,#06H ;设置偏移量为6 DJNZ R1,L1
MOVC A,@A+DPTR ;查表取得要显示的数据 LCALL DISPF ;写入一个数据
INC DPTR ;数据表指针加1,准备取下一个数据 DJNZ R4,LOOP1 ;一行没有显示完就继续 JMP INSERT
DISPF: MOV P2,A ;写1字节数据到显示端口
SETB RS ;写数据时序(请参照1602LCD使用说明书) CLR RW CLR E LCALL DELAY SETB E RET
TABLE: DB \
第 38 页 共 62 页
基于单片机的自动售货机系统设计
DB \ DB \ DB \ DB \ DB \ DB \ DB \ DB \ DB \ DB \ DB \ DB \ DB \ DB \ DB \ DB \
**************** 投币口程序 *************** INSERT:MOV A,P3 ;投币口检测 CPL A
JBC ACC.4,S1 ;P3口有键按下转S1 LCALL KEY MOV A,R5
CJNE A,#0FFH,CHECK ;货物选择键盘有键按下转CHECK程序 AJMP INSERT
第 39 页 共 62 页
基于单片机的自动售货机系统设计
S1: LCALL D10MS ;延时消抖 MOV A,P3 CPL A JBC ACC.4,S2 S2: MOV R1,MONEY INC R1 MOV MONEY,R1 WAIT1: MOV A,P3 CPL A
JBC ACC.4,WAIT1 投币开关未松开继续等待,否则返回START AJMP START ;返回
**************** 键盘程序 ***************** KEY: MOV A,P1 ;读P1口 CPL A
JNZ KEY2 ;A不等零说明有键按下转KEY2 MOV R5,#0FFH RET
KEY2: LCALL D10MS ;延时消抖 MOV A,P1 CPL A JNZ KEY3 MOV R5,#0FFH RET
KEY3: JNB ACC.0,K1
第 40 页 共 62 页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的自动售货机设计(8)在线全文阅读。
相关推荐: