单片机工程实践
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计目的:
通过一个以8 位单片机为核心的模拟量数字表的硬件调试过程,掌握具有七段LED 显示、键盘、蜂鸣器等接口电路的单片机应用系统的设计思想和方法。
学习应用系统软件的模块化设计方法,通过源程序的编辑、汇编或编译、链接、仿真调试,完成给定的任务。提高工程实践能力和素质。
一、 设计任务:
设计内容:模拟全自动洗衣机的功能: (1)用显示器表示工作进程和电机正反转 (2)工作过程与全自动洗衣机相同
任务分工:①蜂鸣器自检(李二冬主编) ②键盘自检 (郑晓军主编) ③LED 自检 (董振主编) ④洗衣机:
a 框图编写(董振)
b 启动、进水(郑晓军)
c 洗涤、排水(董振)
d 甩干(李二冬)
e 汇总(董振、李二冬、郑晓军)
f 打字,制作实践报告书(董振)
三、框图(包括自检和任务的框图):
1、 硬件编程框图及相关说明(图1)
2、
主程序框图、子程序框图及相关说明(图2,图3,图4,图5,图6,图7)
硬 件 框 图
图1
单
片
机89C 51
74LS245
K1——K4 拨盘
P2.5 P2.6 P2.7
P1
P2 74LS138 LED 位选
P0 ULN2803
LED 段选
主程序框图
开始
反转
延时,显示
正转
置正反转总循环次数
注水
延时,显示
启动?
水满?
Y Y
N
N
检测K2
洗涤
检测K1
图2
置正转次数
放水
正转
次数减1后为0?
水空?
次数减1后为
0?
N
Y
N
N
Y Y
甩干
检测K3
图3
开始
查表1
查表3
正转显示
查表次数减1后为0?
Y
N
倒计时显示
查表2
反转显示
查表次数减1后为0?
查表3
倒计时显示
循环次数减1为0?
循环次数减1
置循环总数
N
Y
N
图4
键盘自检程序框图
图5
开始 是否有键按下?
蜂鸣器响子程序 Y
N
开始
置循环次数
查表
依次选位后并显示段
减为0?
循环次数减一
指针加一
N
Y
子程序框图
图6
蜂鸣器子程序开始
关闭蜂鸣器
延时delay N 打开蜂鸣器
减一后为0?
结束
Y
N
蜂鸣器自检程序框图(两个声音)
图7
开 始
R1=20H
喇 叭 响
延 时1
喇叭停
延 时1
R1—1等于0?
R1=20H
喇 叭 响
延 时2
喇叭停
延 时2
R1-1等于0?
N
Y N
Y
四、程序清单
(一)模拟全自动洗衣机程序
MOV P0,#0H ;关显示
START1: LCALL SEL8 ;打开245
MOV P1,#0FFH ;P1口输入
MOV A,P1 ;采集key1的状态
LCALL SEL7 ;关闭245
CJNE A,#0FEH,START1 ;判key1是否按下
CLR P2.3 ;蜂鸣
LCALL DELAY ;延时
SETB P2.3
START2: LCALL SEL8 ;打开245
MOV P1,#0FFH ;P1口输入
MOV A,P1 ;采集key1的状态
LCALL SEL7 ;关闭245
CJNE A,#0FDH,START2 ;判key2是否按下
MOV P0,#0FFH ;p0口输入
MOV P0,#9EH ;字型3送p0口
ACALL QWE4 ;选位
ACALL DELAY ;延时
MOV P0,#7EH ;字型0送p0口
ACALL QWE5 ;延时
ACALL DELAY ;选位
XIDI: MOV R0,#0H ;赋初值
MOV R1,#06H ;置正(反)传次数
MOV R2,#0H ;赋初值
MOV R3,#014H ;置正反转总循环次数
MOV P0,#0FFH ;p0口输入
LOOP: MOV A,R0 ;正传
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV P0,A
ACALL QWE2
ACALL DELAY
INC R0
DJNZ R1,LOOP
MOV R0,#0H
MOV R1,#06H
ACALL STOP1
LOOP1: MOV A,R0 ;反转MOV DPTR,#TAB2
MOVC A,@A+DPTR
MOV P0,A
ACALL QWE3
ACALL DELAY
INC R0
DJNZ R1,LOOP1
MOV R0,#0H
MOV R1,#06H
ACALL STOP2
STOP1: MOV A,R2 ;倒计时显示MOV DPTR,#TAB3
MOVC A,@A+DPTR
MOV P0,A
ACALL QWE4
ACALL DELAY
INC R2
DJNZ R3,LOOP1
STOP2: MOV A,R2 ;倒计时显示MOV DPTR,#TAB3
MOVC A,@A+DPTR
MOV P0,A
ACALL QWE5