单片机课程设计模板DOC.docx
- 文档编号:5956994
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:16
- 大小:334.01KB
单片机课程设计模板DOC.docx
《单片机课程设计模板DOC.docx》由会员分享,可在线阅读,更多相关《单片机课程设计模板DOC.docx(16页珍藏版)》请在冰豆网上搜索。
单片机课程设计模板DOC
《单片机原理及应用》
课程设计报告
专业:
班级:
姓名:
指导教师:
20年月日
目录
1.设计目的及要求4
1.1设计目的4
1.2设计要求4
2.数字钟的设计方案5
2.1数字钟功能5
2.2设计思路5
2.3设计流程图5
3.数字钟硬件电路设计6
4.数字钟软件设计9
4.1初始化模块9
4.2显示模块9
4.3按键模块10
4.4定时和延时模块10
5.仿真与调试10
5.1软件仿真10
5.2硬件连接13
5.3硬件测试13
6.心得体会14
7.指导老师及意见14
8.附录16
基于单片机的数字钟设计
1.设计目的及要求
1.1设计目的
(1)学会掌握KeilC51汇编语言程序的设计和调试,熟悉51系列单片机结构特点,掌握软件设计的基本思路和基本方法。
(2)学会用汇编语言编写程序,并在电脑上会调用和检测程序的正确与否。
学会MCS-51单片机上下载程序并验证。
(3)学会将所学的单片机原理的有关知识应用于实践,提高单片机应用于技术的实践操作技能,掌握单片机应用系统设计、研制的方法,培养理论联系实际的学习作风,提高动手能力、分析并解决实际问题的能力。
(4)使我们进一步了解掌握所学的专业知识,巩固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、定时/控制、程序设计、应用开发、等基本理论知识的理解。
(5)通过设计、分析、调试,培养我们工程意识,激发大家对产品开发的兴趣,及培养对科技革新、开发和创新的基本能力。
1.2设计要求
(1)以MCS-52系列单片机,AT89C52为核心器件组成一个数字时钟系统。
(2)系统显示器由六位数码管组成,分别显示小时,分钟和秒。
2.数字钟的设计方案
2.1数字钟功能
A.初始化显示00:
00:
00
B.P0.0,P0.1,P0.2分别接跳帽开关,P0.0按一下,秒钟加1;P0.1按
下分钟加1;P0.2按一下,小时加1.
C.复位电路,开关按下,重新回到初始化状态
2.2设计思路
对于数码管而言,数码管选共阴极数码管,对于每一个数码管,3,8脚接片选,给3.8脚接低电平,数码管选中,如此才可以亮。
电路复位通过硬件电路实现,开关复位时,出于初始化状态,p3口接片选,p2口接数码管的七段。
P0.0P0.1P0.2接开关,开关控制时分秒,调整时分秒,让时分秒与实际时间相一致。
2.3设计流程图
3.数字钟硬件电路设计(此部分计算机专业同学不写,也请反映在目录及相关章节中)
3.1时钟电路设计
本实验选用12MHZ晶振作为外部晶振。
即在AT89S52的18和19脚(xtal1和xtal2)之间接一个12MHZ晶振,如图3.1
图3.1
3.2复位电路设计
在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。
当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。
随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。
根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。
单片机系统自动复位,具体见下图3.2
如图3.2
3.3按键电路设计
在做出时间调整的时候,共三个开关,分别控制着时分秒的调整,直至等到时间调整正确为止。
在判断开关是否按下的同时,因为按下开关为跳帽开关,抖动产生因为机械固有的物理特性,在瞬间接触的时候会有力学的回弹,造成2-8毫秒内信号不稳定。
因此我们的办法就是通过软件设定一个延时来去抖动,解决信号不稳定的因素,具体见图3.3
图3.3
3.4数据显示电路设计
时分秒的控制需要六个数码管,每个数码管的七段分别接在一起,通过p2口输出,先要弄清楚数码管的各个接口,在实验前可以对数码管进行检测,看数码管各段是否可以正常工作。
3,8接地,用3V左右电压去接数码管的各段,看数码管各段是否对亮。
如图3.4是数码管的各引脚及led显示字形码表,图3.5是数码管仿真图引脚及片选设置。
图3.4
图3.5
4.数字钟软件设计
4.1初始化模块
初始化模块中,时分秒初始化状态显示00:
00:
00,将时分秒各个数据放在各自的寄存器中,通过查表将00分别送给各个寄存器
4.2显示模块
显示模块一直贯穿在整个过程中,首先我们选择的数码管是共阴极的,因此当我们给p3口低电平(清零信号)时,数码管被选中,通过延时子程序延时后再选中另外一个,不断的扫频,通过时分秒寄存器中值的变化完成各个模块之间的互连,最后通过查表显示。
下面以秒作为例子说明显示模块是如何统一各个模块的。
初始化时,显示00,是通过51单片机的p3.4,p3.5口分别控制秒的个位和十位,时间推移,秒钟不断加1,加1自然要延时1S,所以就涉及中断计时的问题,故每次计时1S,寄存器中值自加1,查表过程中A片偏移自增1,00->01->02->03->04->05····->09->10······->59->00.,所以在累加的过程中又存在比较大小(CJNE指令),秒钟寄存器中回零,此时显示分钟,分钟寄存器中加1如此不断反复,之后分钟加一,到59S回0,小时寄存器中加1,和前面不一样的地方就是小时最后在比较时是与24比较。
到了24:
59:
59之后回零,又回到初始化状态。
4.3按键模块
按键模块的功能进行时间的简单调整,三个开关分别和P0.0P0.1P0.2,通过JNB判断语句来判断是否按键。
通过跳转指令使按一下,数码管加1。
4.4定时和延时模块
因为需要延时1S,所以必须要通过定时器T0通过查询方式定时1S,查询方式就要判断TF0寄存器是否溢出。
因为需要对数码管进行扫频,所以有一个扫频时间,因此就需要一个延时子程序来延时一段时间来扫频,只是要确定扫频的时间长短,通过我们小组的多次实验,可以发现延时稍长为好,但是还是不能超过人眼的识别范围。
5.仿真与调试
5.1软件仿真
如下图所示的软件仿真的结果,在软件仿真中我们可以清楚的看到数码管上显示的数字,即所谓的时间,通过六个数码管我们可以看到时,分,秒各位的显示,这样达到了所要求的目的。
(1)生成.hex文件的基本操作:
(2).点击isis仿真图的52单片机(双击),加载.hex文件,点击OK。
(3).开始仿真。
看实验现象是否能够满足设计要求。
5.2硬件连接
根据下列电路图的连线在电路板上焊接电路
5.3硬件测试
烧程序,利用烧写器及相关软件将.hex下载到单片机中,接入电路,接5V电源。
观察现象。
6.心得体会
通过这两周课程的实习设计,对单片机的编程软件KEIL51有了进一步的熟悉,学会了自己分析,修改程序,以完成不同功能程序的编程,这次实验做的是数字钟,最后基本完成老师要求的功能,时间显示和调整,日期显示和调整及闹铃等功能。
由于大家做的功能都差不多,所以自己就多添加了时间秒设置及闹钟秒设置功能,虽然在实际生活中用的数字钟没必要做到这个功能,但毕竟自己有去想,有去做,并且能够得到实现,也是对自己的进步的一个肯定。
实习过程中知道了不只是要求做到什么结果,更重要的是从中学到了什么,这才能达到锻炼自己的目的,以及和同学们一起讨论,共同分析,学会吸取他人好的观点改正自己的不足,以及同他人的合作精神。
通过实习这个平台特别让我们工科的学生学会了如何将所学的知识与实践相结合在一起,使得我们在以后的学习、工作中才会学以致用,学懂所用。
7.指导老师及意见
参考文献
[1]《微机原理及接口技术实验指导书》,张国安,福建工程学院校内讲义,2010
[2]《单片机原理及应用》,丁元杰著,北京航空航天大学出版社。
[3]《单片机控制技术在通信中的应用-MCS-51系列》,潘超群著,电子工业出版社。
[4]《单片机使用教程》,李勋、刘源著,北京航空航天大学出版社。
[5]《综合课程设计汇编》,重庆大学出版社
8.附录
源程序:
S_SETBITP0.0;数字钟秒控制位
M_SETBITP0.1;分钟控制位
H_SETBITP0.2;小时控制位
SECONDEQU30H;秒寄存器,地址为30H
MINUTEEQU31H;分钟寄存器,地址为31H
HOUREQU32H;小时寄存器,地址为32H
TCNTEQU34H
ORG00H
SJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVDPTR,#TABLE
MOVHOUR,#0;初始化
MOVMINUTE,#0
MOVSECOND,#0
MOVTCNT,#0
MOVTMOD,#01H;置T0为计数器方式1
MOVTH0,#(65536-50000)/256;定时50毫秒
MOVTL0,#(65536-50000)MOD256
MOVIE,#82H
SETBTR0
A1:
LCALLDISPLAY
JNBS_SET,S1
JNBM_SET,S2
JNBH_SET,S3
LJMPA1
S1:
LCALLDELAY;去抖动
JBS_SET,A1
INCSECOND;秒值加1
MOVA,SECOND
CJNEA,#60,J0;判断是否加到60秒
MOVSECOND,#0
LJMPJ0
S2:
LCALLDELAY
JBM_SET,A1
K1:
INCMINUTE;分钟值加1
MOVA,MINUTE
CJNEA,#60,J1;判断是否加到60分
MOVMINUTE,#0
LJMPJ1
S3:
LCALLDELAY
JBH_SET,A1
K2:
INCHOUR;小时值加1
MOVA,HOUR
CJNEA,#24,J2;判断是否加到24小时
MOVHOUR,#0;若到24,小时清零
LJMPJ2
J0:
JBS_SET,A1
LCALLDISPLAY
SJMPJ0
J1:
JBM_SET,A1
LCALLDISPLAY
SJMPJ1
J2:
JBH_SET,A1
LCALLDISPLAY
SJMPJ2
INT_T0:
MOVTH0,#(65536-50000)/256
MOVTL0,#(65536-50000)MOD256
INCTCNT
MOVA,TCNT
CJNEA,#20,RETURN;计时1秒
INCSECOND
MOVTCNT,#0
MOVA,SECOND
CJNEA,#60,RETURN
INCMINUTE
MOVSECOND,#0
MOVA,MINUTE
CJNEA,#60,RETURN
INCHOUR
MOVMINUTE,#0
MOVA,HOUR
CJNEA,#24,RETURN
MOVHOUR,#0
DISPLAY:
MOVA,SECOND;显示秒
MOVB,#10;把10送给B寄存器
DIVAB;A/B商送给B
CLRP3.4;片选秒的个位
MOVCA,@A+DPTR;查表
MOVP2,A;将码形送给P2口
LCALLDELAY;扫频
STEBP3.4;停止对秒钟个位扫频
MOVA,B;将商中值送给A
CLRP3.5;选中秒钟十位
MOVCA,@A+DPTR;查表
MOVP2,A;将码形送给P2口
LCALLDELAY;延时
SETBP3.5;停止扫秒钟十位
MOVA,MINUTE;显示分钟
MOVB,#10
DIVAB
CLRP3.2
MOVCA,@A+DPTR
MOVP2,A
LCALLDELAY
SETBP3.2
MOVA,B
CLRP3.3
MOVCA,@A+DPTR
MOVP2,A
LCALLDELAY
SETBP3.3
MOVA,HOUR;显示小时
MOVB,#10
DIVAB
CLRP3.0
MOVCA,@A+DPTR
MOVP2,A
LCALLDELAY
SETBP3.0
MOVA,B
CLRP3.1
MOVCA,@A+DPTR
MOVP2,A
LCALLDELAY
SETBP3.1
RET
RETURN:
RETI
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
DELAY:
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 模板 DOC