广东科学技术职业技术学院
机械与电子工程学院
课程设计报告书
课
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
名 称
学 生 姓 名
系、年级专业
一、
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
比较
1.设计课题任务
学生在教师指导下,综合运用所学知识完成基于51单片机的电子钟的设计。要求格式为:XX XX XX,由左向右分别为:时、分、秒。
2.功能要求说明
学生应通过课程设计巩固和加深扩大所学的理论知识,掌握单片机应用系统的硬件、软件及其接口的设计和调试方法,并根据调试结果,写出设计报告。设计报告应包括任务书、器件选型及设计思路、软硬件设计过程说明、调试结果总结及分析等内容,并附电路原理图及程序清单。
3.设计课题总体方案介绍及工作原理说明
本电子钟主要由单片机、4*1独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1.1所示:
图1.1 总体设计方案图
本电子钟的所有的软件、参数均存放在STC89C52的Flash ROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。由于STC89C52芯片内部Flash ROM有8KB,RAM有256个字节,故软件下载编译时有足够的存储空间。键盘采用动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
二、硬件设计
1.设计课题硬件系统各模块功能简要介绍
本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。
(1).单片机最小系统模块:包括低功耗、高性能CMOS8位微控制器STC89C52;复位电路;晶振电路。本本模块STC89C52系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。这样就构成一个稳定的自激振荡器。
(2).输入模块:本模块共用到了5个按键,1个电源开关,一个复位键,单片机运行期间,利用按键完成复位操作。3个按键独立式键盘,S1键控制电子钟的启动\状态,S2键为加1键,S3键为减1键。且S1、S2、S3任一键都独自连一个I/O(P1.0、P1.1、P1.2)口线,说明它们可以独立实现相应的电子钟功能。
(3).输出模块:本次设计显示为8位,采用四个二位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。数码管驱动为74LS245芯片。
(4).电源模块:现在市面上销售的编程器有很多都是由PC机的USB口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。
2.设计课题电路原理图、元器件布局图
3.设计课题元器件清单
设计课题元器件清单如
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
2.1所示。
表2.1 设计所用元器件清单
名称
数量
参数
电阻
5个
1K
共阳数码管
4个
2位一体
电阻
4个
4.7k
ISP下载口插座
1个
普通插座
1个
40PIN
电阻
8个
470
电阻
5个
200
按键
5个
插针
1排
40PIN
锁紧插座
1个
40PIN
驱动
一套
74ls245
USB供电接口及供电线
一套
晶振及其插座
一套
12MHz
电容
2个
30pF
极性电容
1个
22μF
排阻
1个
10K
芯片
1块
STC89C52
发光二极管
1个
六角开关
1个
电容
各1个
470μf、104P
铜柱 (带螺母)
4个
三、软件设计
1.设计课题使用单片机资源的情况
设计课题使用单片机资源的情况如下:
P0口输出数码管段选信号,P3口输出数码管位选信号;晶振11.0592M;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:P1.1;按一次使选中位加1;减少键DEC_KEY:P1.2;按一次使选中位减1;P2.1为蜂鸣器发声报时;50H-5FH;16个寄存器单元作为显示单元;
50H 用于控制秒基准时钟源的产生;51H 清零秒寄存器;
52H 清零分寄存器;53H 清零时寄存器;
5FH 用于秒个位;5EH 用于秒十位;
5DH 用于分个位;5CH 用于分十位;
5BH 用于时个位;5AH 用于时十位;
54H 用于控制调时闪烁;堆栈栈底:70H。
2.设计课题软件系统个模块功能简要介绍
本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。
主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。
中断服务程序:主要是用于电子钟的准确运行、数据输入过程中的闪烁。
键盘输入程序模块:主要是用于确定按键并得到特定的键码值。
数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。
延时模块:程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。
3.设计课题软件系统程序
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
框图
系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteous 进行仿真,读出显示数据。
主程序流程框图如3.1所示;加1子程序如3.2所示;
中断服务程序程序如3.3所示;
键盘扫描子程序框图如3.4所示;
显示子程序框图如3.5所示;
图3.1 主程序流程框图
图3.2 加1子程序流程框图
图3.3 中断子程序
图3.4 键盘扫描子程序
图3.5 显示子程序
4.设计课题软件系统程序清单
程序入口
;-----------
ORG
0000H ;程序入口地址
LJMP
START
ORG
000BH ;定时器0中断入口地址
LJMP
TIMET0
ORG
1000H
;----------------------------------
;显P.程序
;功能:可以在8个数码闪烁移位进行屏保
;----------------------------------
START: MOV R6, #2
;闪烁次数
MOV A, #01H
;位选
TT:
MOV P3, A
MOV P0,
#0CH
;段码"P."
LCALL DELAY
MOV P3,
#00H
DJNZ R6,
TT
LCALL DELAY
LCALL DELAY1
RR A
JB P1.0,
TT
;键是否按下,没按下则转移
LCALL DELAY
;延时去抖
JNB P1.0,
KAI
;再次判断键是否按下
KAI:
SETB P1.0
CLR
A
;状态恢复
MOV P0,
#0FFH
LCALL DELAY1
SETB 48H
;用于调时闪烁标志
SETB 47H ;用于产生脉冲用于调时快进的脉冲
MOV R1,
#0 ;键功能标志:0计时、1调时、2调分、3调秒
;-------------------------------
;清16位寄存器及初始化
;50H 用于控制秒基准时钟源的产生
;51H 清零秒寄存器
;52H 清零分寄存器
;53H 清零时寄存器
;5FH 用于秒个位;5EH 用于秒十位
;5DH 用于分个位;5CH 用于分十位
;5BH 用于时个位;5AH 用于时十位
;54H 用于控制调时闪烁
;-------------------------------
MOV R0, #50H
;初始化
MOV R6,
#10H
CLEARJCQ:
MOV @R0,
#00H
;清寄存器
INC R0
DJNZ R6,
CLEARJCQ
MOV IP,
#02H
SETB EA
SETB ET0
MOV TMOD,
#01H ;设定定时器0工作方式1
MOV TH0,
#3CH
MOV TL0,
#0B0H ;赋定时初值,定时50ms
SETB TR0
;启动定时器0
MOV SP,
#70H ;堆栈
;--------
;主程序
;--------
MAIN:
LCALL DISPLAY
LCALL KEY_SCAN
JZ MAIN
LCALL SET_KEY
JB 46H, MAIN ;如果已进行调时快进,则不再执行下
面的调整
LCALL ADD_KEY
;调用增加键处理子程序,加一
LCALL DEC_KEY
;调用减少键处理子程序,减一
LJMP MAIN
;重新循环
;---------------
; 显示处理程序
;---------------
DISPLAY:MOV A,
51H
ANL
A,
#0FH
MOV
5FH,
A ;转换出秒个位,存入5FH
MOV
A,
51H
ANL
A,
#0F0H
SWAP
A
MOV
5EH,
A ;转换出秒十位,存入5EH
JB
46H,
MIN ;如果调时快进,则跳过闪烁处理程序
CJNE
R1,
#3,MIN ;如果R1为3,闪烁秒位待调整
JB
48H,
MIN
MOV
5FH,
#0AH ;使该位为10,查表得到使该位不显示
MOV
5EH,
#0AH
MIN:
MOV
A,
52H
ANL
A,
#0FH
MOV
5DH,
A ;转换出分个位,存入5DH
MOV
A,
52H
ANL
A,
#0F0H
SWAP
A
MOV
5CH,
A ;转换出分十位,存入5CH
JB
46H,
HOUR
CJNE
R1, #2,HOUR ;如果R1为2,闪烁分位待调整
JB
48H,
HOUR
MOV
5DH,
#0AH
MOV
5CH,
#0AH
HOUR: MOV
A,
53H
ANL
A,
#0FH
MOV
5BH,
A ;转换出时个位,存入5BH
MOV
A,
53H
ANL
A,
#0F0H
SWAP
A
MOV
5AH,
A ;转换出时十位,存入5AH
JB
46H,
DISP
CJNE
R1, #1,DISP ;如果R1为1,闪烁时位待调整
JB
48H,
DISP
MOV
5BH,
#0AH ;使该位为10,查表得到使该位不显示
MOV
5AH,
#0AH
;-------------------
;数码管动态扫描显示
;-------------------
DISP:
MOV
DPTR,
#TABLE
MOV
A,
5FH
MOVC
A,
@A+DPTR
MOV
P0, A
SETB P3.7
LCALL
DELAY
CLR
P3.7 ;显示秒个位
MOV
A, 5EH
MOVC
A,
@A+DPTR
MOV
P0, A
SETB
P3.6
LCALL
DELAY
CLR
P3.6 ;显示秒十位
MOV
A,
#0BFH
MOV
P0, A
SETB
P3.5
LCALL
DELAY
CLR
P3.5
;显示“-”
MOV
A,
5DH
MOVC
A,
@A+DPTR
MOV
P0, A
SETB
P3.4
LCALL
DELAY
CLR
P3.4 ;显示分个位
MOV
A, 5CH
MOVC
A, @A+DPTR
MOV
P0, A
SETB
P3.3
LCALL
DELAY
CLR
P3.3
;显示分十位
MOV
A,
#0BFH
MOV
P0,
A
SETB
P3.2
LCALL
DELAY
CLR
P3.2
;显示“-”
MOV
A, 5BH
MOVC
A, @A+DPTR
MOV P0, A
SETB
P3.1
LCALL
DELAY
CLR
P3.1
;显示时个位
MOV
DPTR,
#TABLE1 ;该位使用TABLE1以消除时的十位置0
MOV
A,
5AH
MOVC
A, @A+DPTR
MOV P0, A
SETB P3.0
LCALL DELAY
CLR
P3.0
;显示时十位
RET
;-----------------
;定时器中断1s程序
;-----------------
TIMET0:PUSH
ACC
;保护现场
PUSH PSW
MOV TH0, #3CH
MOV TL0, #0B0H
CPL
47H ;产生脉冲用于调时快进
INC
54H
MOV
A, 54H
CJNE
A, #10,ADD_TIME;产生0.5秒,用于调时闪烁
CPL
48H ;取反调时闪烁标志位
MOV
54H, #00H
ADD_TIME:INC
50H
MOV
A, 50H
CJNE
A, #10,ZDBACD
;整点报时时蜂鸣器响延迟时间
SETB
P2.1
;关蜂鸣器
ZDBACD:CJNE
A, #20,RETI1 ;产生1秒时钟
MOV
50H, #00H ;一秒钟时间到,清零50H
MOV
A, 51H
ADD
A, #01H
DA
A
;十进制调整
MOV
51H,
A
CJNE
A,
#60H,RETI1
MOV
51H,
#00H
;一分钟到
MOV
A,
52H
ADD
A,
#01H
DA
A
MOV
52H,
A
CJNE
A,
#60H,RETI1
CLR
P2.1
MOV
52H,
#00H
;一小时到,开蜂鸣器,清分显示
MOV
A,
53H
ADD
A,
#01H
DA
A
MOV
53H,
A
CJNE
A,
#24H,RETI1
MOV
53H,
#00H
;到24点,清零小时
RETI1:POP
PSW
POP
ACC
;恢复现场
RETI
;中断返回
;-------------
;键盘扫描程序
;R4设置为00H是为了在进入长按处理前加长延时,以区分长按与短按键
;-------------
KEY_SCAN:CLR
46H
;关闭调时快进标志
MOV
P1,
#0FFH ;将P1口设置成输入状态
MOV
A,
P1
CPL
A
ANL
A, #07H ;1口低3位连接3个按键,只判断该3位
JZ
EXIT_KEY
LCALL
DELAY ;延时去抖动
MOV
A,
P1 ;重新判断
CPL
A
ANL
A,
#07H
JZ
EXIT_KEY
MOV
R5,
A
MOV
R4,
#00H ;用于控制调时快进速度
LOOP:
LCALL
DISPLAY ;进入长按处理
MOV
A,
P1
CPL
A
ANL
A,
#07H
JB
47H,
LOOP1
INC
R4
;调时快进间隔时间基准加1
LOOP1: CJNE
R1,
#03H,LOOP2 ;如果调秒时长按,则不处理
LJMP
LOOP3
LOOP2: CJNE
R4,
#99H,LOOP3
MOV
R4, #70H ;确认长按后,加快调时快进速度
SETB
46H
LCALL
ADD_KEY
LCALL
DEC_KEY
LOOP3: JNZ
LOOP
;等待键释放
MOV
A, R5
;输出键值
RET
EXIT_KEY:RET
;------------
;延时子程序
;------------
DELAY:MOV
R7,#200
DJNZ
R7,$
RET
DELAY1:MOV
R3,#50
MOV
TMOD,#00H
MOV
TH1,#63H
MOV
TL1,#18H
SETB
TR1
LP1:JBC
TF1,LP2
SJMP
LP1
LP2:MOV
TH1,#63H
MOV
TL1,#18H
DJNZ
R3,LP1
RET
;-----------------
;选择键处理子程序
;-----------------
SET_KEY:CJNE
R5,
#01H,EXIT
;选择键键值
INC
R1
;调整选择功能标志加一
CJNE
R1,
#4,EXIT
MOV
R1,
#0
MOV
54H,
#00H
;调时闪烁清零
RET
;----------
;加1子程序
;----------
ADD_KEY:CJNE
R5,
#02H,EXIT
;加1键值
CJNE
R1,
#01H,NEXT1
;选择键功能标志为1调时,否则跳出
MOV
A,
53H
ADD
A,
#01H
DA
A
MOV
53H,
A
CJNE
A,
#24H,EXIT
MOV
53H,
#00H
NEXT1:CJNE
R1,
#02H,NEXT2
;选择键功能标志为2调分,否则跳出
MOV
A,
52H
ADD
A,
#01H
DA
A
MOV
52H,
A
CJNE
A,
#60H,EXIT
MOV
52H,
#00H
NEXT2:CJNE
R1,
#03H,EXIT
;选择键功能标志为3调秒,否则跳出
MOV
A,
51H
ADD
A,
#01H
DA
A
MOV
51H,
A
CJNE
A,
#60H,EXIT
MOV
51H,
#00H
;如加1键按下直接清零秒
RET
;----------
;减1子程序
;----------
DEC_KEY:CJNE
R5,
#04H,EXIT
;减1键键值
CJNE
R1,
#01H,NEXT3
;选择键功能标志为1调时,否则跳出
MOV
A,
53H
ADD
A,
#99H
DA
A
MOV
53H,
A
CJNE
A,
#99H,EXIT
MOV
53H,
#23H
NEXT3:CJNE
R1,
#02H,NEXT4
;选择键功能标志为2调分,否则跳出
MOV
A,
52H
ADD
A,
#99H
DA
A
MOV
52H,
A
CJNE
A,
#99H,EXIT
MOV
52H,
#59H
NEXT4:CJNE
R1,
#03H,EXIT
;选择键功能标志为3调秒,否则跳出
MOV
A,
51H
ADD
A,
#99H
DA
A
MOV
51H,
A
CJNE
A,
#99H,EXIT
MOV
51H,
#59H
RET
;-----------
;返回子程序
;-----------
EXIT:RET
;-----------------
;数码管字形编码表
;-----------------
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
;"0","1","2","3","4","5","6","7","8"",9","不显示"
TABLE1:DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小时编码
;"不显示","1","2","3","4","5","6","7","8","9","不显示"
END
四、系统调试及结论
1.设计课题的设计结论及
使用说明
爱威a9效果器使用图word使用说明在哪儿钻床数控系统用户手册玻璃钢风机使用说明书控制器用户说明书
本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料买元件,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图制PCB板、打孔、溶铜、焊接等,真的经历了许多困难,却积累了很多宝贵的经验,本设计用2个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中S1为启动/选择调整位置,S2为加控制键 S3为减控制键,当整点时间到时,蜂鸣器报警。这样的结果与设计要求完全相符,本设计成功。完成了设计任务。
2.设计课题的仿真结果
在Proteus ISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图4.1与4.2所示。
实现功能:
可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调整状态。
(1).“P.”状态,依靠上电或按复位键进入,在此状态下,按S2、S3键均无效,
按S1键有效,进入运行状态;
(2).运行状态,在此状态下,按S2、S3键均无效,只有按S1键有效,按下S1键后,退出运行状态,进入调整状态;
(3).调整状态,按S1键进入时、分、秒的闪烁,在此状态下,按S2(+1键)、
S3(-1键)键均有效;调整结束后必须按S1键,即可退出调整状态,进入
运行状态。在调整状态时长按S2、S3时可以连加及连减。
时间显示格式为:时-分-秒;
图4.1 “P.”运行状态仿真
图4.2 时钟运行状态仿真
3.设计课题的误差分析
该电子钟在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。第三,设计用到11.0592MHz的晶振,计算是满20次为一秒钟,但实际会慢很多。
五、参考文献
[1]李朝清.单片机原理与接口技术[M].北京航空航天大学出版社。2005.10.
[2]耿永刚.单片机与接口应用技术[M].华东师范大学出版社.2008.4.
[3]范立南, 谢子殿. 单片机原理及应用教程[M].北京大学出版社. 2006.1.
[4]梅丽凤.王艳秋,汪毓铎. 单片机原理及接口技术[M].清华大学出版社.2003.5.
[5]何立民.单片机应用系统设计[M].北京航空航天大学出版社.2002.
[6]胡汉才.单片机原理及其接口技术[M].清华大学出版社.2004.10.
键盘4*1
二位一体LED数码显示
数码管470欧限流电阻
数码管驱动
74LS245
STC89C52
单片机
蜂鸣器
晶振电路
复位电路
� EMBED Visio.Drawing.11 ���
� EMBED Visio.Drawing.11 ���
PAGE
16
_1323429938.vsd
�
�
�
取十位数
取个位数,并占A低半字节�
把十位数交换到低半字节
个位数送缓冲单元�
取十位数占A高半字节�
加1�
十进制调整�
ADD1�
十位数送缓冲单元�
返回�
_1323607579.vsd
�
�
�
开始
结束�
有键闭合
键是否释放�
保存键值�
调显示子程序�
调延时去抖动�
Y
N
有键闭合
N
N
Y
Y
_1323607592.vsd
�
�
�
位控码送位控口(P3口)�
开始
段控码送段控口(P0口)�
延时5毫秒�
修改段控码�
结束�
8位显示扫描是否完成�
修改位控码�
查表取段控码
N
Y
_1323607196.vsd
�
�
�
现场保护
循环次数减1
现场恢复
秒值加1
计数器重新加载
秒显示缓冲单元清0
分显示缓冲单元清0
TIMET0
分值加1
返回�
是否满20次�
是否满60min
是否满60s
是否满24h
时显示缓冲单元清0
时值加1
N
Y
Y
Y
N
N
N
Y
_1323427913.vsd
�
�
�
开始
程序初始化
关闭定时器T0�
送“P.”显示代码�
S1键是否按下�
开中断
EA=1�
键盘扫描子程序�
时、分、秒“—”数值处理,送缓冲区�
显示�
N
Y