电子表完整版123.docx
- 文档编号:27755998
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:27
- 大小:1,020.03KB
电子表完整版123.docx
《电子表完整版123.docx》由会员分享,可在线阅读,更多相关《电子表完整版123.docx(27页珍藏版)》请在冰豆网上搜索。
电子表完整版123
课程设计
课程名称
单片机原理与应用课程设计
课题名称
电子表
专业
测控技术与仪器
班级
1302
学号
20
姓名
刘彬
指导老师
李晓秀、汪超、周向红等
2016年2月29日
电气信息学院
课程设计任务书
课题名称
51单片机开发板设计
姓名
刘彬
专业
测控技术与仪器
班级
1302
学号
20
指导老师
周向红
课程设计时间
2016年2月29日-2016年3月16日
教研室意见
意见:
审核人:
一、任务及要求
设计任务:
以单片机为核心设计一个多功能电子表。
能焊接开发板的同学,在开发板上进行调试。
(1)具有电子时钟、时钟设置和跑表功能。
(2)用按键实现时钟启动、时钟停止、跑表启动、跑表复位、时钟调整等控制。
(3)做时钟时用4位LED数码管显示分、秒,做跑表时显示000.0秒~999.9秒。
设计要求:
(1)确定系统设计方案;
(2)进行系统的硬件设计;
(3)完成必要的参数计算与元器件选择;
(4)开发板焊接及测试
(5)完成应用程序设计;
(6)应用系统的硬件和软件的调试。
二、进度安排
第一周:
周一:
集中布置课程设计任务和相关事宜,查资料确定系统总体方案。
周二~周三:
完成硬件设计和电路连接
周四~周日:
完成软件设计
第二周:
周一~周三:
程序调试
周四~周五:
设计报告撰写。
周五进行答辩和设计结果检查。
目录
第1章概述6
第2章系统总体方案设计7
2.1总体思路7
2.2系统方案选择7
第3章硬件设计8
3.1系统硬件结构框图8
3.2按键结构9
第4章软件设计与说明11
4.1主程序流程图11
4.2显示程序流程图12
4.3定时计数器T0中断服务流程图13
第5章调试步骤、结果、使用说明14
5.1调节电路部分...........................................15
5.2显示电路部分...........................................15
5.3单片机部分电路.........................................17
第6章设计总结18
第7章参考文献19
附录1总体设计图20
附录2系统程序清单21
第1章概述
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
我们都知道,设计系统的关键是思路,而系统通常又由各个模块所组成,所以必须先把所要设计的系统模块化,再把各个模块组合在一起,实现一个完整的系统。
这就要求我们先要有扎实的理论知识,特别对芯片的各个管脚功能必须了解,这样才能进行硬件设计,同时,又必须掌握MCS51的指令功能,通过编程实现其功能,这就能让我们能更好地理解《单片机原理及应用》这门课程,也是一种理论在实践中的运用。
如果说我们以前学的都是理论,包括C语言,微机原理,C++,微机接口技术,protel等等,那么这次的课程设计就是一个贯穿多学科的综合性实践。
单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
单片机的有点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
目前,数字钟的功能越来越强,并且有多种专门的大规模集成电路可供选择。
第2章系统总体方案设计
2.1总体思路
利用52单片机的P2口作为控制单片机跑表开始,暂停,清零,返回的输入端。
P3作为控制LED的显示时钟的调节时间控制信号输入端。
P0,P1控制LED动态显示选择控制端控制六个LED的显示时间和显示顺序。
定时器T0定时50ms。
T1定时10ms,37H-39H保存时钟的变化量。
41H-43H保存秒表的变化量。
其中为了方便显示,每个变量对应两个单元,以便将变量拆开成两个十进制的数方便显示。
2.2系统方案选择
本系统采用AT89C52单片机、6位数码管显示(不带译码器)和7个键盘键盘操作(分别为功能键,加一键,减一键,返回键,开始键,暂停键,清零键)作为调节时间的按钮构成一个单片机多功能时钟的硬件。
此外包括一些必须的晶振电路和复位电路,是一个多功能时钟,具有时间显示功能和跑表功能,数码管显示时间,通过三个按钮对时间进行调整,按键1为时分秒控制按钮,2、3为加减调节按钮。
•计数单元由单片机内部定时器/计数器T0来实现。
•时间显示功能通过LED数码管动态扫描来实现,其中P0口控制数码管的断选信号,P1口的低六位控制数码管的六个片选信号。
•时间调整通过接入键盘来实现。
第3章硬件设计
3.1系统硬件结构框图
对定时器T0一个50ms的定时时间,软件计数功能的单元地址R2为20,当R2减到0是秒加一。
当秒、分值为60时改位清零,且高位加一。
当时的值达到24时,显示全部为0,然后进入新的一天。
该系统是通过P2控制时分秒位的选择,通过P0口实现时分秒的显示。
时分秒的调节由外接键盘的上三个按钮控制,按一下调秒、两下调分、三下调时、按四下返回。
对于定时器T1设定一个10ms的定时时间,当进入一次中断时,秒表最后一位的数字加一。
在秒表的子程序中加入按键检测程序,保证在跑表运行的过程中能随时的响应外部按键的信号进行相关的操作。
跑表变量储存在41H-43H的单元中,变化后,经过数据处理,经显示程序显示。
3.2按键结构
按键采用的是7个独立按键,首先得按动接在P2.3口的返回键,即进入系统,显示器显示6个0,接着按下接在P2.0口的开始键,使系统开始运行,P2.1口的是接的秒表的复位清零,P2.2口接得是秒表的暂停,键盘1功能切换键是接在P3.2上的,按下1键进入调秒状态每按下P3.0接得2键秒钟加一,每按下P3.1接得3键秒钟减一;按两下键盘1键进入调分状态,每按下2键分钟加一,每按下3键分钟减一;按三下键盘1键进入调时状态,每按下2键时钟加一,每按下3键时钟减一;按四下键盘1键返回计数状态。
图1按键结构
3.3显示器选择
LED显示器的选择,在应用系统中设计要求不同使用的LED显
示器的位数也不同因此生产厂家就生产了多种位数、尺寸、型号不同的
LED显示器。
在我们的设计中选择6位一体的时钟型LED显示器。
6位7段共阳显示器六位是同时显示六位阿拉伯数字而每一个数字又是七段码显示的七段是指一个数码显示的阿拉伯数字是由七位二进制数控制的共阳是指相应的二进制为1时不亮为0时亮。
在实验中显示器的作用是显.示时间。
3.4时钟电路
3.5显示电路
第4章软件设计与说明
使用单片机中的定时器中断,定时50ms,设定一计数单元R0为20,当R2减为0时(50×20=1000)时秒值加一,当秒值为60时,分值加一秒值清零。
分值为60时时值加一分值清零时值为24时时分秒全部清零。
秒表时,采用和时钟基本一致的设计方法,只不过奖定时器T1的时间设定为10ms,然后进位的问题和时钟基本一致,不过秒表的进位应该是100个0.01S进一位。
由于存在两个不同的工作状态,因此,每一个状态的后面都要加一段检测按键的程序,方便在有外部按键信号的时候及时的响应,防止进入死循环。
4.1主程序流程图
图5主程序流程图
4.2显示程序流程图
图6显示程序流程
4.3定时计数器T0中断服务流程图
图7定时器/计数器中断流程图
第5章调试步骤、结果、使用说明
把编好的程序输入到新建的04中,保存编译得到一个04.hex的文件,然后我是首先在proteus软件下把我设计的电路图画出来,因为如果直接就导入单片机中运行的话,个人觉得很难成功,因为能影响下载不成功的因素很多,很难一下子就找出来的,而使用proteus的话,在一定的程度上就可以避免了这些干扰因素,从而就使得能很好的排除故障以及干扰因素,所以我是先把生成的04.hex文件导入proteus的电路图中进行仿真,在仿真时发现程序没问题——仿真成功了,时钟开始显示时间,等到秒钟为59时下一秒分钟加一,秒钟清零,等分秒都为59时下一秒时钟加一分秒清零,当时为23分秒为59时下一秒时分秒全部清零,显示部分电路调试通过。
控制部分调时通过。
再调试秒表的过程中,由于精确到0.01S的过程,因此必须慎重考虑DELAY程序的应用以及循环次数的确定,否侧回造成显示出问题,过快或过慢都会对试验结果造成不良的影响。
为此,在秒表的调试过程中,必须谨慎。
仿真通过后,就开始着手把04.hex文件下载到开发板上,
在调时电路过程中要认真观测合记录,一发下问题就及时调节,使用过程中时,按下返回键,就进入显示程序,按开始键时钟表开始运行,功能键有4种方式,按一次就是调整秒,两次就是调分,三次就是调时,四次就是返回功能,跑秒时,有暂停和清零键。
5.1调节电路部分
图2调节时钟部分电路
5.2显示电路部分
图3显示部分电路(时钟电路)
图4显示部分电路(跑表电路)
5.3单片机部分电路
图5单片机部分电路
第6章总结与体会
在这一次课程设计当中我进行了多方面的学习和实践虽然当中遇到了许多的困难但最终还是把它们一一地克服了。
学习就是这样的要做好每一件事都有很多的因素影响制约着我们我们必须快速准确的适应这样的环境通过改变自己来更快的融入社会。
有了这份经历我觉得自己少了一分浮躁多了一份沉稳。
我深深地感到要有科学的思维方法和学习方法是极其重要的。
刚刚拿到课程设计的题目时真不知道从哪里开始动手,课题名称里的芯片根本就没听说过。
通过上网查找资料,弄清楚了它的功能,才真正开始了设计。
但这个东西包括了几个部分,所以一定要把握好它的整体设计思路,在其框架之下,对各部分的单元电路进行分析和设计,最后经过电路的修改,参数的确定,将各个部分连接起来,形成总的电路图。
书到用时方恨少在这次课程设计过程中遇到了很多大大小小的难题这时才发现在知识的海洋里自己是多么的渺小但这也激起了我学习的热情我进行了多方面的学习和实践最终还是把它们都克服了。
在这次课程设计过程中我还学会了与同学交流和沟通这样才能把自己在设计过程中学到的知识进行交流在交流中进一步巩固自己的知识。
这次课程设计只有两个星期的时间时间比较紧张提高工作、学习效率是唯一的办法。
有了这份经历更让我觉得知识海洋的广博驱使怀着好奇之心的我进一步努力学习告诉我为了填满好奇心无时无刻不需要学习。
每一次新的认识总是疑问重重不断的分析解决问题、解决问题等到最后回想起来都是如此的简单。
能学习能提高不容易更重要的是我学会了如何解决问题这次课程设计让我增加了自信心懂得的越来越多又感觉在以后的路上明白了很多知识。
同时也感谢老师的指导和共同探讨研究问题的同学们希望在以后的学习和工作中能够进一步提高对单片机的认识和应用能力。
第7章参考文献
1、王迎旭等.单片机原理及及应用[M].2版.机械工业出版社,2012
2、胡汉才.单片机原理及其接口技术[M].3版.清华大学出版社,2010.
3、戴灿金.51单片机及其C语言程序设计开发实例[M].清华大学出版社,2010
4、周向红等.51单片机课程设计指导[M].华中科技大学出版社,2000
附录1
附录2
MIAOLEQU30H;存放时间的变量分别为秒钟秒钟个位,十位
MIAOHEQU31H
FENLEQU32H
FENHEQU33H
SHILEQU34H
SHIHEQU35H
SHIEQU39H;存放10进制的时钟信息
FENEQU38H
MIAOEQU37H
FUCEQU36H;功能键按键计数器,记录功能键按下的次数
FANHUI1BITP2.0
STARTBITP2.1;跑表计时开始
STOPBITP2.2;跑表计时停止
CLEARBITP2.3;跑表清零
SECOND1EQU41H;保存跑表变量
SECOND2EQU42H
FENGEQU43H
SECOND1LEQU44H
FENGLEQU48H
SECOND2LEQU46H
SECOND1HEQU45H
FENGHEQU49H
SECOND2HEQU47H
ORG0000H
SJMPMAIN
ORG000BH
LJMPTIME0
ORG001BH
LJMPTIME1
ORG0030H
INIT:
MOVTMOD,#11H;选定时器0方式1
MOVTH0,#3CH;置初值
MOVTL0,#0B0H;
MOVTH1,#0D8H;置初值(10MS)0.01S
MOVTL1,#0F0H;
MOVR2,#20;1秒时间50msX20
SETBET0;开定时器0中断
SETBET1
SETBEA;开中中断
SETBTR0;启动定时器0
MOVP3,#0ffh;读键值,初始化
MOVP2,#0ffh
RET
MAIN:
ACALLINIT;调用初始化函数
A1:
MOVDPTR,#TAB;查表初值
ACALLKEYSCAN
MOVA,P2
JNBFANHUI1,FANHUI
JNBSTART,SEC_WATCH;判断是否是跑表计时开始
JNBSTOP,STOP_WATCH
JNBCLEAR,CLEAR_WATCH
SJMPA1;判断设置时钟时
LJMPA1
FANHUI:
ACALLKEYSCAN
ACALLDISP
ACALLCHULI
CLRTR1
JNBSTART,SEC_WATCH;判断是否是跑表计时开始
JNBSTOP,STOP_WATCH
JNBCLEAR,CLEAR_WATCH
SJMPFANHUI
SEC_WATCH:
MOVDPTR,#TAB
ACALLDELAY
ACALLDISP1
ACALLCHULI1
SETBTR1
MOVSECOND1,#00
MOVSECOND2,#00
A3:
LCALLDISP1
LCALLCHULI1
JNBCLEAR,CLEAR_WATCH
JNBSTOP,STOP_WATCH
JNBFANHUI1,FANHUI
JNBSTART,SEC_WATCH
AJMPA3
CLEAR_WATCH:
MOVSECOND1,#00
MOVSECOND2,#00
LCALLCHULI1
ACALLDISP1
LCALLDELAY
AJMPA3
STOP_WATCH:
CLRTR1
LCALLCHULI1
ACALLDISP1
SJMPA3
KEYSCAN:
MOVA,P3;读取按键
ANLA,#07H;
CJNEA,#07H,K0;判断是否按键
RET
K0:
ACALLDELAY;有按键延时去抖动
MOVA,P3
ANLA,#07H
CJNEA,#07H,K1;
RET;是抖动返回
K1:
MOVR3,A;不是抖动,存按键
K2:
MOVA,P3;
ANLA,#07H;
CJNEA,#07H,K2;等待松开按键
MOVA,R3;
CJNEA,#06H,K3;键值读取看是否是P3.1被按下,加1按键
SJMPKEY1;
K3:
CJNEA,#05H,KEY3;看是否是P3.2被按下,减1按键
SJMPKEY2;
KEY3:
INCFUC;不是加1也不是减1就是功能键P3.0,被按下,功能键按下次数加1
CLRTR0;按下功能见后进入调整时间模式,关闭定时器
MOVA,FUC;读取功能键按下次数
CJNEA,#4,RETT;如果按下四次了,就恢复时间模式
SETBTR0;打开定时器
MOVTH0,#3CH;
MOVTL0,#0B0H;
MOVFUC,#0;计数器清0
SJMPRETT;
KEY1:
ACALLADD1;如果是加1按键,调用加1函数
SJMPRETT;
KEY2:
ACALLSUB1;如果是减1按键,调用减1函数
RETT:
RET
CHULI1:
MOVR1,#44H;将十进制的时间个十位分开
MOVR0,#41H;
MOVR3,#3;
K4:
MOVA,@R0;取时间
MOVB,#10;分离个十为
DIVAB;
MOV@R1,B;个位保存在以L(SHILFENLMIAOL)结尾的时间变量中
INCR1;
MOV@R1,A;
INCR1;
INCR0;
DJNZR3,K4;
MOVA,FENG;时信息更新,保证不大于23
CJNEA,#60,RET5;
MOVFENG,#0;
RET5:
RET;
CHULI:
MOVR1,#30H;
MOVR0,#37H;
MOVR3,#3;
K5:
MOVA,@R0;
MOVB,#10;
DIVAB;
MOV@R1,B;
INCR1;
MOV@R1,A;
INCR1;
INCR0;
DJNZR3,K4;
MOVA,SHI;
CJNEA,#24,RET4;
MOVSHI,#0;
RET4:
RET
ADD1:
MOVA,FUC;
CJNEA,#3,AD0;
MOVR0,#39H;时存放的地址
MOVA,@R0;取时,看是否满23
CJNEA,#23,AD1;
MOV@R0,#0;如果满了23,就清0
SJMPRET0
AD0:
MOVA,#36H;不是给时加1
ADDA,FUC;
MOVR0,A;取出要加数的地址
MOVA,@R0;
CJNEA,#59,AD1;是否加到59了
MOV@R0,#0;加到了59就清0
SJMPRET0
AD1:
INC@R0;时没有加到23,其他的没有加到59时,加1
RET0:
RET
SUB1:
MOVA,FUC
CJNEA,#3,SU0
MOVR0,#39H
MOVA,@R0
CJNEA,#0,SU1
MOV@R0,#23
SJMPRET1
SU0:
MOVA,#36H
ADDA,FUC
MOVR0,A
MOVA,@R0
CJNEA,#0,SU1
MOV@R0,#59
SJMPRET1
SU1:
DEC@R0
RET1:
RET
DISP:
MOVR3,#20
DI0:
MOVR0,#35H
MOVR4,#6
MOVR5,#01H
DI1:
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
MOVA,R5
MOVP1,A
RLA
MOVR5,A
DECR0
ACALLDELAY
MOVP1,#00H
DJNZR4,DI1
DJNZR3,DI0
RET
DISP1:
MOVR3,#5
DI01:
MOVR0,#49H
MOVR4,#6
MOVR5,#01H
DI11:
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
MOVA,R5
MOVP1,A
RLA
MOVR5,A
DECR0
ACALLDELAY
MOVP1,#00H
DJNZR4,DI11
DJNZR3,DI01
RET
TIME1:
MOVTH1,#0D8H;置初值(10MS)0.01S
MOVTL1,#0F0H
INCSECOND1;
MOVA,SECOND1;
CJNEA,#100,RET2;看是否满100个10ms
MOVSECOND1,#0;满100个秒,秒清0
INCSECOND2;秒加1
MOVA,SECOND2;是否满60秒
CJNEA,#60,RET2;
MOVSECOND2,#0
INCFENG
MOVA,FENG;分钟加1
RET2:
RETI
TIME0:
MOVTH0,#3CH
MOVTL0,#0B0H;重置初值
DJNZR2,RET3;是否满1秒
MOVR2,#20;秒钟加1
INCMIAO;
MOVA,MIAO;
CJNEA,#60,RET3;看是否满60秒
MOVMIAO,#0;满60秒,秒清0
INCFEN;分钟加1
MOVA,FEN;是否满60分
CJNEA,#60,RET3;
MOVFEN,#0;满60分
INCSHI;时钟加1
MOVA,SHI;
CJNEA,#24,RET3;时钟是否满24
MOVSHI,#0;满24,时钟清0
RET3:
RETI
DELAY:
MOVR6,#5
D0:
MOVR7,#245
DJNZR7,$
DJNZR6,D0
RET
TAB:
DB0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H
DB90H,88H,83H,0c6H,0a1H,86H,8eH,0ffH;共阳编码表
END
单片机原理与应用课程设计评分表
项目
评价
优
良
中
及格
差
设计方案的合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
设计图纸质量(10%)
答辩汇报的条理性和独特见解(10%)
答辩中对所提问题的回答情况(10%)
完成任务情况(10%)
独立工作能力(10%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子表 完整版 123
![提示](https://static.bdocx.com/images/bang_tan.gif)