单片机设计电子表的控制系统设计Word格式文档下载.docx
《单片机设计电子表的控制系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机设计电子表的控制系统设计Word格式文档下载.docx(24页珍藏版)》请在冰点文库上搜索。
![单片机设计电子表的控制系统设计Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/6714f0d3-36c7-4490-be03-5b57a6ebab6c/6714f0d3-36c7-4490-be03-5b57a6ebab6c1.gif)
按三下键盘1键进入调时状态,每按下2键时钟加一,每按下3键时钟减一;
按四下键盘1键返回计数状态。
图1按键结构
第4章开发板焊接及其测试
周二指导老师就安排我们进行单片机开发板的焊接工作,给我们讲解了许多的焊接工作中的技巧和工艺,并教我们对焊接好的开发板进行测试。
在焊接过程中,如果是焊接一般电子元件(电路板上无大规模集成电路或其他易击穿的器件),烙铁和电路板之间45度,焊接面光滑,焊点太大也不要太小,焊接时间不要太长,容易烧坏元器件和破坏板上的铜线。
焊接顺序基本上是从内到外,先低后高,电烙铁可不接地;
如是,则必须接地或带静电环。
一般选30-60W外热式电烙铁,1mm以下含松香焊锡,烙铁头必须清洁,可在含水海绵上擦拭,不可用硬物刮擦。
焊接时,烙铁头应同时接触器件引脚及电路板,再送入焊锡,如温度适宜时,可见焊锡融化如水银,由引脚扩散至电路板铜焊点并填满,收回烙铁及焊锡,焊接完成。
注意焊接时间应尽量短,因此保证适宜的温度很重要,可预先用烙铁融化焊锡测试一下。
焊接好开发板后,接下来的工作就是对其进行电气检测,看看焊接过程中是否有短路、虚焊和接触不良的现象,利用万能表对一些电气节点进行测量。
第5章软件设计与说明
使用单片机中的定时器中断,定时50ms,设定一计数单元R0为20,当R2减为0时(50×
20=1000)时秒值加一,当秒值为60时,分值加一秒值清零。
分值为60时时值加一分值清零时值为24时时分秒全部清零。
秒表时,采用和时钟基本一致的设计方法,只不过奖定时器T1的时间设定为10ms,然后进位的问题和时钟基本一致,不过秒表的进位应该是100个0.01S进一位。
由于存在两个不同的工作状态,因此,每一个状态的后面都要加一段检测按键的程序,方便在有外部按键信号的时候及时的响应,防止进入死循环。
5.1主程序流程图
图5主程序流程图
5.2显示程序流程图
图6显示程序流程
5.3定时计数器T0中断服务流程图
图7定时器/计数器中断流程图
第6章调试步骤、结果、使用说明
把编好的程序输入到新建的04中,保存编译得到一个04.hex的文件,然后我是首先在proteus软件下把我设计的电路图画出来,因为如果直接就导入单片机中运行的话,个人觉得很难成功,因为能影响下载不成功的因素很多,很难一下子就找出来的,而使用proteus的话,在一定的程度上就可以避免了这些干扰因素,从而就使得能很好的排除故障以及干扰因素,所以我是先把生成的04.hex文件导入proteus的电路图中进行仿真,在仿真时发现程序没问题——仿真成功了,时钟开始显示时间,等到秒钟为59时下一秒分钟加一,秒钟清零,等分秒都为59时下一秒时钟加一分秒清零,当时为23分秒为59时下一秒时分秒全部清零,显示部分电路调试通过。
控制部分调时通过。
再调试秒表的过程中,由于精确到0.01S的过程,因此必须慎重考虑DELAY程序的应用以及循环次数的确定,否侧回造成显示出问题,过快或过慢都会对试验结果造成不良的影响。
为此,在秒表的调试过程中,必须谨慎。
仿真通过后,就开始着手把04.hex文件下载到开发板上,
在调时电路过程中要认真观测合记录,一发下问题就及时调节,使用过程中时,按下返回键,就进入显示程序,按开始键时钟表开始运行,功能键有4种方式,按一次就是调整秒,两次就是调分,三次就是调时,四次就是返回功能,跑秒时,有暂停和清零键。
6.1调节电路部分
图2调节时钟部分电路
6.2显示电路部分
图3显示部分电路(时钟电路)
图4显示部分电路(跑表电路)
6.3单片机部分电路
图5单片机部分电路
第7章设计总结
课程设计是对课程的实践与总结,只要做了就会有收获。
在这次设计中我加深了程序的阅读能力、程序的灵活调用、单片机的设计制作调试方法。
为了能顺利的完成这次的课程设计我找了很多资料也因此知道了不少课本上没深入介绍的东西,提高了我的思维空间,拓宽了我的知识面,加深了对单片机课程的兴趣。
最主要的是加强了动手的能力,遇到问题是先思考,解决不了再查资料,实在弄不出来就问老师和同学们。
通过这次课程设计我了解到学好一门汇编语言,最根本的应该是了解所能接触到的程序中最关键的是哪些,实际的应用编写更是非常重要,所以我们一定要自己动手试一下,尝试编写程序。
因为做一个旁观者事不能够学到东西的。
此外在此次设计中我对此次设计的内容有一下感触,第一,由于此次设计的过程中设计秒表和时钟的显示,即在一个数码管上显示两种变量,必须确定以下几点:
1、时钟在切换的过程中不能停,秒表在切换的过程中可以停,为了简化设计,我设计的是在切换的过程中秒表停止。
2、必须仔细的核对每一个变量的名字,我曾经在核对变量的名字上面花了很大的力气,由于变量的名字错了,软件编译时很少能检查出,因此仿真时往往不容易发现。
3、要每个子程序的调试,这样才能确认某一个部分是正确的,这样才有继续往下做的信心和勇气。
十分感谢学校安排这次课程设计,他使我们对前面的知识进行了积累,也十分感谢周老师以及同学们在设计过程中对我的帮助。
第8章参考文献
1、王迎旭编.《单片机原理与应用》[M].机械工业出版社.
2、楼然苗编.《51系列单片机设计实例》[M].北京航空航天大学出版社.3、黄勤编.《计算机硬件技术基础实验教程》[M].重庆大学出版社
4、刘乐善编.《微型计算机接口技术及应用》[M].华中科技大学出版社.
5、陈光东编.《单片微型计算机原理及接口技术》[M].华中科技大学出版社.
6、周向红编《51系列单片机应用与实践教程》[M].北航出版社
7、周坚编.《单片机C语言轻松入门》[M].北京航空航天大学出版社
附录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
SJMPFANHUI
SEC_WATCH:
MOVDPTR,#TAB
ACALLDELAY
ACALLDISP1
ACALLCHULI1
SETBTR1
MOVSECOND1,#00
MOVSECOND2,#00
A3:
LCALLDISP1
LCALLCHULI1
JNBSTOP,STOP_WATCH
JNBFANHUI1,FANHUI
JNBSTART,SEC_WATCH
AJMPA3
CLEAR_WATCH:
MOVSECOND2,#00
ACALLDISP1
LCALLDELAY
AJMPA3
STOP_WATCH:
CLRTR1
LCALLCHULI1
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;
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:
、
CHULI1:
MOVR1,#44H;
将十进制的时间个十位分开
MOVR0,#41H;
MOVR3,#3;
K4:
MOVA,@R0;
取时间
MOVB,#10;
分离个十为
DIVAB;
MOV@R1,B;
个位保存在以L(SHILFENLMIAOL)结尾的时间变量中
INCR1;
MOV@R1,A;
INCR0;
DJNZR3,K4;
MOVA,FENG;
时信息更新,保证不大于23
CJNEA,#60,RET5;
MOVFENG,#0;
RET5:
RET;
CHULI:
MOVR1,#30H;
MOVR0,#37H;
K5:
MOVA,SHI;
CJNEA,#24,RET4;
MOVSHI,#0;
RET4:
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;
取出要加数的地址
CJNEA,#59,AD1;
是否加到59了
MOV@R0,#0;
加到了59就清0
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
MOV@R0,#59
SU1:
DEC@R0
RET1:
DISP:
MOVR3,#20
DI0:
MOVR0,#35H
MOVR4,#6
MOVR5,#01H
DI1:
MOVCA,@A+DPTR
MOVP0,A
MOVA,R5
MOVP1,A
RLA
MOVR5,A
DECR0
MOVP1,#00H
DJNZR4,DI1
DJNZR3,DI0
DISP1:
MOVR3,#5
DI01:
MOVR0,#49H
DI11:
DJNZR4,DI11
DJNZR3,DI01
TIME1:
MOVTH1,#0D8H;
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;
MOVA,FEN;
是否满60分
MOVFEN,#0;
满60分
INCSHI;
时钟加1
CJNEA,#24,RET3;
时钟是否满24
MOVSHI,#0;
满24,时钟清0
RET3:
DELAY:
MOVR6,#5
D0:
MOVR7,#245
DJNZR7,$
DJNZR6,D0
TAB:
DB0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H
DB90H,88H,83H,0c6H,0a1H,86H,8eH,0ffH;
共阳编码表
电气信息学院课程设计评分表
项目
评价
优
良
中
及格
差
设计方案合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
答辩情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分
指导教师签名:
________________
日期:
________________
注:
表中标*号项目是硬件制作或软件编程类课题必填内容;
此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。