资源描述
河北工业大学计算机硬件技术基础(MCS-51)2007年课程设计报告
一、题目:模拟跑步机
二、目的与要求:
1.目的:
利用所学的计算机硬件基础知识(MCS-51)进行简单的软硬件设计,掌握单片机开发的一般过程和方法。
2.设计要求:
①要求用单片机实验开发系统(DP-51PROC)来完成设计。
②要求在设计中要使用定时器、外部中断P1口或按键等。
③完成的设计量程可调、功能完善。
二、总体设计
1、分析问题的功能
基于MCS-51单片机的跑步机的设计,主要要实现以下几种功能:
(1)给定速度后,延时7秒停止;
(2)给定速度后,延时14秒停止;
(3)给定速度后,分快慢档加速;
(4)给定速度后,分快慢档减速.
2、系统总体结构设计
该跑步机的设计是基于MCS-51单片机的,使用到的硬件主要有8031的P1口和P3口,LED显示器,SW1,KEY接口,直流电动机
如图示(图1):
M
8031
P3.0
P3.1
P3.2
P3.3
P3.4
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
SW1
KEY*8
LED3
LED1
LED2
图 1
三、设计流程图
开始
延时功能
加速功能
减速功能
K4延时7秒
K5延时14秒
K7快档微调
K2加速档
K6慢档微调
K3减速档
结束
开机?SW1是否置1?
N
Y
按下不同按钮实现不同功能
四、程序清单:
PWMH DATA 30H ;高电平脉冲的个数
PWM DATA 31H
COUNTER DATA 32H
TEMP DATA 33H
ORG 8000H
AJMP CLOSE
ORG 800BH
AJMP INTT0
ORG 801BH
AJMP T1S
ORG 8100H
CLOSE: ;关总开关 关中断 关电机
CLR TR0
CLR P3.0
SETB P3.2 ;熄灭所有指示灯
SETB P3.3
SETB P3.4
SJMP OPEN
OPEN:
JNB P3.1,$ ;判断开关是否打开,SW1是否置1
CLR P3.2 ;点亮总指示灯
SJMP MAIN ;转主程序
MAIN:
MOV SP,#60H ;给堆栈指针赋初值
MOV PWMH,#02H
MOV COUNTER,#01H
MOV PWM,#15H
MOV TMOD,#12H ;定时器0为工作模式2,定时器1为工作模式1
MOV TL0,#38H ;定时器每200us产生一次溢出
MOV TH0,#38H ;自动重装的值
MOV TH1,#4CH
MOV TL1,#00H
MOV R2,#00H
CLR 00H
SETB ET0 ;使能定时器0中断
SETB ET1 ;使能定时器1中断
SETB EA ;使能总中断
SETB TR0 ;定时器0开始计时
KSCAN:
JNB P3.1,CLOSE ;扫描开关
JNB P1.1,K2CHECK ;按下K2则加速
JNB P1.2,K3CHECK ;按下K3则减速
JNB P1.3,K4 ;按下K4则启动定时A
JNB P1.4,K5 ;按下K5则启动定时B
JNB P1.5,K6 ;按下K6则换到档位1
JNB P1.6,K7 ;按下K7则换到档位2
SJMP KSCAN
K2CHECK:
JB P1.1,K2HANDLE ;去抖动,如果按下KEY1,跳转到KEY1处理程序
SJMP K2CHECK
K2HANDLE:
MOV A,PWMH
CJNE A,PWM,K2H0 ;判断是否到达上边界
SJMP KSCAN ;是,则不进行任何操作
K2H0:
MOV A,PWMH
INC A
CJNE A,PWM,K2H1 ;如果在加1后到达最大值
CLR TR0 ;定时器停止
SETB P3.0 ;P3.0为高电平
CLR P3.3 ;若达最大速度,点亮指示灯
SJMP K2H2
K2H1:
CJNE A,#02H,K2H2 ;如果加1后到达下边界
SETB TR0 ;重开定时器
SETB P3.3 ;熄灭指示灯
K2H2:
INC PWMH ;增加占空比
SJMP KSCAN
K3CHECK:
JB P1.2,K3HANDLE ;去抖动
SJMP K3CHECK
K3HANDLE:
MOV A,PWMH
CJNE A,#01H,K3H0 ;判断是否到达下边界
SJMP KSCAN ;是,则不进行任何操作
K3H0:
MOV A,PWMH
MOV TEMP,PWM
DEC A
CJNE A,#01H,K3H1 ;如果在减1后到达下边界
CLR TR0 ;定时器停止
CLR P3.0 ;P3.0为低电平
CLR P3.3 ;若达最小速度,点亮指示灯
SJMP K3H2
K3H1:
DEC TEMP
CJNE A,TEMP,K3H2 ;如果到达上边界
SETB TR0 ;启动定时器
SETB P3.3 ;熄灭指示灯
K3H2:
DEC PWMH ;降低占空比
SJMP KSCAN
K4:
SETB TR1 ;开定时器1
CLR P3.4 ;点亮定时指示灯
MOV 34H,#100 ;7S定时
SJMP M
K5:
SETB TR1 ;开定时器1
CLR P3.4 ;点亮定时指示灯
MOV 34H,#200 ;14S定时
SJMP M
M: JNB 00H,M ;等待定时器中断
N: CLR TR1 ;关定时器1
SETB TR0 ;重开定时器0
LJMP MAIN
K6: MOV PWMH,#05H ;改变占空比,换慢档
LJMP KSCAN
K7: MOV PWMH,#0AH ;改变占空比,换快档
LJMP KSCAN
T1S:
INC R2 ;50mS定时
MOV A,R2
CJNE A,34H,NEXT
CLR TR0
CLR P3.0
SETB P3.3
SETB P3.4
MOV TH1,#4CH
MOV TL1,#00H
MOV R2,#00H
SETB 00H
SETB P3.4
NEXT: RETI
INTT0:
PUSH PSW ;现场保护
PUSH ACC
INC COUNTER ;计数值加1
MOV A,COUNTER
CJNE A,PWMH,INTT01 ;如果等于高电平脉冲数
CLR P3.0 ;P3.0变为低电平
INTT01:
CJNE A,PWM,INTT02 ;如果等于周期数
MOV COUNTER,#01H ;计数器复位
SETB P3.0 ;P3.0为高电平
INTT02:
POP ACC ;出栈
POP PSW
RETI
END
五、你所设计的程序最终完成的功能
1)说明你编制的程序能完成的功能;
①用开关SW1模拟电源总开关,并配指示灯LED1,用来实现对整个跑步机的停机、工作的控制。
②用按钮K7、K6实现选择快、慢不同挡位。
③用按钮K4、K5实现对A、B两种定时模式的选择,定时模式A是5秒定时用以模拟10分钟定时跑步,定时模式B是10秒定时用以模拟20分钟定时跑步,并配指示灯LED3,按下按钮、开始定时、LED3点亮,当定时时间结束跑步机停止运转LED3熄灭。
④用按钮K7、K6实现对速度的微调,并配指示灯LED2,当微调变快到速度最大时LED2点亮表明此时变快按钮失效速度不能继续增大,当微调变慢到速度为零时LED2也点亮表明跑步机停止运转但仍处带电状态。
2)记录运行结果:
六、对该设计题目有何更完善的方案
我们所设计的跑步机可实现基本的操作功能,可是还存在许多不足之处,如延时的时间无法多项调节,变速大小无法控制,微调不明显.
七、收获及心得体会
通过此次单片机设计实习,我学会了观察问题和搜集资料的方法;把自己在学校学到的知识转化为实验成果,积累了一定的经验,提高了分析问题和解决问题的实际能力。我体会到课程设计的各个环节,不是孤立的,每个环节都是必不可少的。在该课程设计的过程中,我深刻体会到了计算机研究工作的艰辛。自己觉得理论上可行的方法,在实验的过程中却不一定行得通。经过了一次又一次地修改程序和检查电路,终于完成了自己的课程设计。虽然它有许多的不完善,可我却有一种无法言表的喜悦与成就感。我明白了课程设计的过程,就是不断地改进与完善的过程。面对设计中遇到的问题,不要轻言放弃。通过自己的努力和虚心地向老师和同学请教和探讨,一定能将问题解决。
此程序为两人共同完成!
日期: 2007年 12 月 25 日
展开阅读全文