基于单片机的家用定时器设计.docx
- 文档编号:24488693
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:21
- 大小:315.02KB
基于单片机的家用定时器设计.docx
《基于单片机的家用定时器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的家用定时器设计.docx(21页珍藏版)》请在冰豆网上搜索。
基于单片机的家用定时器设计
黄冈师院物电院
《单片机技术》课程设计报告
项目名称:
家用多功能定时器设计与制作
专业年级:
电子信息工程2010级
学号:
201022240202
学生姓名:
指导教师:
冯杰
报告完成日期2013年1月1日
评阅结果评阅教师
第一章绪论1
1.1系统背景1
1.1.1单片机的电子技术1
1.1.2定时器介绍1
1.2设计要求2
第二章系统电路设计2
2.1设计框架介绍2
2.2系统硬件单元电路设计2
2.2.1复位电路设计2
2.2.2时钟电路设计3
2.2.3按键电路设计4
2.3系统硬件总电路4
第三章系统软件设计5
3.1系统软件流程图5
3.2系统程序设计5
3.2.1主程序5
3.2.2中断程序12
第四章实验结果和分析13
4.1实验使用的仪器设备13
4.2测试结果分析13
结束语13
参考文献14
第一章绪论
1.1系统背景
1.1.1单片机的电子技术
单片机是将CPU、RAM\ROM\定时器/计数器以及输入输出(I/O)接口等计算机的主要部件集成在一块的集成电路芯片,作为微机系统它还可以实现模/数转换、脉宽调制、计数器捕获/比较逻辑、高速I/O口和WDT各种控制功能。
通过在MCS-51系列的单片机中增设了全双工串行口I/O、片内数据存储器采用寻址范围为256kb的8位地址、均有四种工作方式的2个16位的定时/计数器、增加了中断系统、增设了颇具特色的布尔处理机、让单片机具有较强的指令寻址和运算功能这些技术,使单片机拥有了完善的外部并行总线(AB、DB、CB)具有多机识别功能的串行通信接口,规范了功能单元的特殊功能寄存器控制模式及适应控制器特点的布尔处理系统和指令系统,位发展具有良好兼容性的新一代单片机奠定了良好的基础。
单片机被广泛地应用在各种领域。
例如用来作家用电器中如洗衣机、电冰箱、微波炉、电饭煲、电视机、录像机以及其他视频音像设备的控制器;在办公室中用作大量通信、信息的承载体,比如磁盘驱动、打印机、复印机、电话等;它还可以来构成电子秤、收款机、仓储安全检测系统、空气调节系统等冷冻保鲜系统等的专用系统;在工业中,像工业过程控制、过程监制以及机电一体化控制等系统都是以单片机为核心火多网络系统;它还可以构成一些智能仪表与集成智能传感器传统的控制电路,实现一些像存储、数据处理、查找、判断、联网和语音功能等智能化功能,还可以构成一些电子系统中的集中显示系统、动力检测控制系统、自动驾驶系统、通信系统以及运行监视器等的冗余网络系统。
1.1.2定时器介绍
人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。
1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。
它利用机械钟带动开关来控制煤气阀门。
定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多,家用电器都安装了定时器来控制开关或工作时间。
1.2设计要求
主要内容和任务:
完成单片机最小系统板设计与制作,在此基础上通过编程设计家用多路定时控制器。
目标:
通过编写程序,使单片机最小系统具有正常数字钟功能,包括时间校正,具有至少三路定时开关控制功能,每路定时时间可以任意设置。
第二章系统电路设计
2.1设计框架介绍
按键输入电路:
对定时器输入定时时间、时钟时间,并对其调整。
时钟电路:
给单片机一个时钟信号,让其工作。
复位电路:
使单片机为初始状态,并从初态开始工作。
数码管:
显示时间或者其它。
2.2系统硬件单元电路设计
2.2.1复位电路设计
复位操作有上电自动复位、按键电平复位和外部脉冲复位三钟方式,本次实验用的是按键电平复位,利用电容的充放电公式来选择所需的电容、电阻,能保证复位信号高电平持续时间大于2个机器周期。
2.2.2时钟电路设计
该时钟电路是由晶体振荡器和两个微调电容组成的。
在单片机芯片内部有一个高增益反相放大器,其输入端为引脚XTAL1,其输出端为引脚XTAL2。
只需要在片外通过XTAL1和XTAL2引脚跨接晶体振荡器或在引脚与地之间加接微调电容,形成反馈电路,振荡器即可工作。
由于该晶振使用的是12MHZ的晶体,因此它的时钟周期是0.167us,机器周期为1us。
2.2.3按键电路设计
键K1(图中下方)控制状态的切换:
K1为0时,表示出处在正常的计时工作状态;为1,处在校正数字钟的“时”;为2,处在校正数字钟的“分”;为3,处在调整定时起始时间的“时”;为4,处在调整定时起始时间的“分”;为5,处在调整定时终止时间的“时”;为6,处在调整定时终止时间的“分”。
键K2(图中上方)为加号键,控制在各状态时加1。
该系统键扫描的方式为中断扫描方式,当键位上有键压下时,产生中断请求,CPU响应中断,执行中断服务程序,判断键位上压下的键的键号,继而做相应的处理。
2.3系统硬件总电路
第三章系统软件设计
3.1系统软件流程图
主程序在执行时,通过单片机内部中断对程序不断的扫描判断、刷新显示,当有键按下时,将数字钟中的时间与定时时间相比较,然后根据比较程序显示状态,并且还要延时消除抖动,之后进行按键处理,从而显示不同的状态,如此周期循环。
3.2系统程序设计
3.2.1主程序
ORG0000H
LJMPSTART;
ORG0003H;
LJMPKEY_1;时钟、定时时间修改的切换键
ORG000BH
LJMPTO_50ms;数字钟时间定时器。
每次定时时间为50ms,20次定时为1S,产生数字钟所需要的秒
ORG0013H;
LJMPKEY_2;时钟、定时时间修改的+号键
ORG0030H
START:
MOVSP,#60H;初始化堆栈首地址
MOV5FH,#0;定时器T0溢出次数单元清零
MOV5EH,#0;“秒”计数单元清
MOV5DH,#00;数字钟“分”初始值为0分钟
MOV5CH,#12;数字钟“时”初始值设为12点
MOV5BH,#30;定时起始时间“分”初始值设为30分
MOV5AH,#11;定时起始时间“时”初始值设为11
MOV50H,#40;定时终止时间“分”初始值设40分
MOV4fH,#11;定时终止时间“时”初始值设11点
MOV51H,#00H;设置显示方式为:
显示正常时间和定时时间的初始时间
SETB20H.0
CLR20H.1;首先显示定时时间的起始时间
;中断和定时器初始化
MOVTMOD,#00000001H;设定定时器T0工作在定时方式,工作在方式1,16位计数方式
SETBIE0;外部中断INT0为边沿触发方式
SETBIE1;外部中断INT1为边沿触发方式
SETBET0;允许定时器产生中断
SETBEX0;允许外部中断INT0产生中断
SETBEX1;允许外部中断INT1产生中断
SETBEA;开启所有中断
movp1,#0ffh
clrp1.0;定时器初始化
MOVTH0,#3CH;设置定时时间常数,定时时间为50ms
MOVTL0,#0B0H;
SETBTR0;启动T0开始定时计数
LOOP1:
lcallkey_1
lcallkey_2
jb20h.1,loop_qishi
LCALLBCD;将数字钟和定时器的时间转换为显示字符码,送相应的字符码存储单元
ljmploopa
loop_qishi:
lcallbcd1
loopa:
JB20H.0,LOOP2;在小时的低位的数码管的小数点每0.5秒闪动一次
MOVA,58H
ANLA,#01111111B
MOV58H,A
LJMPLOOP4
LOOP2:
MOVA,58H
ORLA,#10000000B
MOV58H,A
JB20H.1,LOOP3;如果处在调整定时终止时间状态,则定时时间“小时”的低位数码管的小数点点亮,否则该小时点熄灭
MOVA,54H
ANLA,#01111111B
MOV54H,A
LJMPLOOP4
LOOP3:
MOVA,54H
ORLA,#10000000B
MOV54H,A
LOOP4:
LCALLDISPLAY;调用显示子程序,显示数字钟时间和定时时间
LJMPLOOP1
SJMP$
KEY_1:
jbp1.6,key_1k
;lcalldelay40ms
lcalldelay40ms
lcalldelay40ms
jbp1.6,key_1k
MOVA,51H
CJNEA,#06H,KEY_1A
MOV51H,#00H
SJMPKEY_1end
KEY_1A:
INC51H
key_1end:
mova,51h
cjnea,#00h,key_1cc
clr20h.1
sjmpkey_1k
key_1cc:
cjnea,#01h,key_1c
clr20h.1
sjmpkey_1k
key_1c:
cjnea,#02h,key_1d
clr20h.1
sjmpkey_1k
key_1d:
cjnea,#03h,key_1e
clr20h.1
sjmpkey_1k
key_1e:
cjnea,#04h,key_1f
clr20h.1
sjmpkey_1k
key_1f:
cjnea,#05h,key_1h
setb20h.1
sjmpkey_1k
key_1h:
cjnea,#06h,key_1k
setb20h.1
key_1k:
RET
key_2:
jbp1.7,key_2bb
;lcalldelay40ms
lcalldelay40ms
lcalldelay40ms
jbp1.7,key_2end
MOVA,51H
CJNEA,#01H,KEY_2A
MOVA,5CH
CJNEA,#23,KEY_2B
MOV5CH,#00H
LJMPKEY_2END
KEY_2B:
INC5CH
key_2bb:
LJMPKEY_2END
KEY_2A:
CJNEA,#02H,KEY_2C
MOVA,5DH
CJNEA,#59,KEY_2D
MOV5DH,#00H
LJMPKEY_2END
KEY_2D:
INC5DH
LJMPKEY_2END
KEY_2C:
CJNEA,#03H,KEY_2E
MOVA,5AH
CJNEA,#23,KEY_2F
MOV5AH,#00H
LJMPKEY_2END
KEY_2F:
INC5AH
LJMPKEY_2END
KEY_2E:
CJNEA,#04H,KEY_2G
MOVA,5BH
CJNEA,#59,KEY_2H
MOV5BH,#00H
LJMPKEY_2END
KEY_2H:
INC5BH
LJMPKEY_2END
KEY_2G:
CJNEA,#05H,KEY_2I
MOVA,4FH
CJNEA,#23,KEY_2J
MOV4FH,#00H
LJMPKEY_2END
KEY_2J:
INC4FH
LJMPKEY_2END
KEY_2I:
CJNEA,#06H,KEY_2END
MOVA,50H
CJNEA,#59,KEY_2K
MOV50H,#00H
LJMPKEY_2END
KEY_2K:
INC50H
KEY_2END:
RET
BCD:
MOVDPTR,#TAB;设置字符码首地址
MOVA,5CH;取数字钟“小时”的值
MOVB,#10
DIVAB;分离高位和地位的值,A中存放高位值,B中存放低位的值
MOVCA,@A+DPTR
MOV59H,A;通过高位的值查表,获得高位数的字符码,并存入59H单元
MOVA,B
MOVCA,@A+DPTR
MOV58H,A;通过低位的值查表,获得低位数的字符码,并存入58H单元
MOVA,5DH;取数字钟“分”的值
MOVB,#10
DIVAB;分离高位和地位的值,A中存放高位值,B中存放低位的值
MOVCA,@A+DPTR
MOV57H,A;通过高位的值查表,获得高位数的字符码,并存入57H单元
MOVA,B
MOVCA,@A+DPTR
MOV56H,A;通过低位的值查表,获得低位数的字符码,并存入56H单元
MOVA,5AH;取定时器“小时”的值
MOVB,#10
DIVAB;分离高位和地位的值,A中存放高位值,B中存放低位的值
MOVCA,@A+DPTR
MOV55H,A;通过高位的值查表,获得高位数的字符码,并存入55H单元
MOVA,B
MOVCA,@A+DPTR
MOV54H,A;通过低位的值查表,获得低位数的字符码,并存入54H单元
MOVA,5BH;取定时器“分”的值
MOVB,#10
DIVAB;分离高位和地位的值,A中存放高位值,B中存放低位的值
MOVCA,@A+DPTR
MOV53H,A;通过高位的值查表,获得高位数的字符码,并存入53H单元
MOVA,B
MOVCA,@A+DPTR
MOV52H,A;通过低位的值查表,获得低位数的字符码,并存入52H单元
RET
BCD1:
MOVDPTR,#TAB;设置字符码首地址
MOVA,5CH;取数字钟“小时”的值
MOVB,#10
DIVAB;分离高位和地位的值,A中存放高位值,B中存放低位的值
MOVCA,@A+DPTR
MOV59H,A;通过高位的值查表,获得高位数的字符码,并存入59H单元
MOVA,B
MOVCA,@A+DPTR
MOV58H,A;通过低位的值查表,获得低位数的字符码,并存入58H单元
MOVA,5DH;取数字钟“分”的值
MOVB,#10
DIVAB;分离高位和地位的值,A中存放高位值,B中存放低位的值
MOVCA,@A+DPTR
MOV57H,A;通过高位的值查表,获得高位数的字符码,并存入57H单元
MOVA,B
MOVCA,@A+DPTR
MOV56H,A;通过低位的值查表,获得低位数的字符码,并存入56H单元
MOVA,4fH;取定时器“小时”的值
MOVB,#10
DIVAB;分离高位和地位的值,A中存放高位值,B中存放低位的值
MOVCA,@A+DPTR
MOV55H,A;通过高位的值查表,获得高位数的字符码,并存入55H单元
MOVA,B
MOVCA,@A+DPTR
MOV54H,A;通过低位的值查表,获得低位数的字符码,并存入54H单元
MOVA,50H;取定时器“分”的值
MOVB,#10
DIVAB;分离高位和地位的值,A中存放高位值,B中存放低位的值
MOVCA,@A+DPTR
MOV53H,A;通过高位的值查表,获得高位数的字符码,并存入53H单元
MOVA,B
MOVCA,@A+DPTR
MOV52H,A;通过低位的值查表,获得低位数的字符码,并存入52H单元
RET
DISPLAY:
MOVP2,#11111110B;将数字钟“小时”的高位的字符码送第一个数码管显示
MOVP0,59H
LCALLDELAY20MS;显示时间为20ms
MOVP2,#11111101B;将数字钟“小时”的低位的字符码送第二个数码管显示
MOVP0,58H
LCALLDELAY20MS;显示时间为20ms
MOVP2,#11111011B;将数字钟“分”的高位的字符码送第三个数码管显示
MOVP0,57H
LCALLDELAY20MS;显示时间为20ms
MOVP2,#11110111B;将数字钟“分”的低位的字符码送第四个数码管显示
MOVP0,56H
LCALLDELAY20MS;显示时间为20ms
MOVP2,#11101111B;将定时器“时”的高位的字符码送第五个数码管显示
MOVP0,55H
LCALLDELAY20MS;显示时间为20ms
MOVP2,#11011111B;将定时器“时”的低位的字符码送第六个数码管显示
MOVP0,54H
LCALLDELAY20MS;显示时间为20ms
MOVP2,#10111111B;将定时器“分”的高位的字符码送第七个数码管显示
MOVP0,53H
LCALLDELAY20MS;显示时间为20ms
MOVP2,#01111111B;将定时器“分”的低位的字符码送第八个数码管显示
MOVP0,52H
LCALLDELAY20MS;显示时间为20ms
RET;上述显示方式,一直循环,实现动态显示
3.2.2中断程序
TO_50ms:
CLRTR0;关闭T0中断
MOVA,5FH;读中断次数
CJNEA,#9,TO_50ms2;判断是否到0.5秒
CPL20h.0;到0.5秒,标志位求反,实现“时”的地位闪动效果,是对秒指示
TO_50ms2:
CJNEA,#19,TO_50ms1;未到1秒,中断次数加1,退出定时中断
MOV5FH,#00H;到1秒,中断次数单元内容清0,同时转到对“秒”的判
CPL20h.0;到0.5秒,标志位求反,实现“时”的地位闪动效果,是对秒指示
SJMPMIAO
TO_50ms1:
INC5FH
LJMPT0_END
MIAO:
MOVA,5EH;读秒单元内容
CJNEA,#59,MIAO1;判断是否到60秒,没有到60秒,则秒单元加1
MOV5EH,#00H;否则秒单元清0,同时转到”分”单元的判断
LJMPFEN
MIAO1:
INC5EH
LJMPT0_END
FEN:
MOVA,5DH;读分单元内容
CJNEA,#59,FEN1;判断是否到60分,没有到60分,则分单元加1
MOV5DH,#00H;否则分单元清0,同时转到对“时“单元的判断
LJMPSHI
FEN1:
INC5DH
LJMPT0_END
SHI:
MOVA,5CH;读“时”单元内容
CJNEA,#23,SHI1;判断是否到24小时,没有到24小时,则时单元加1
MOV5CH,#00H;否则时单元清0,
LJMPT0_END
SHI1:
INC5CH
T0_END:
SETBTR0;启动T0中断
MOVTH0,#3CH;设置定时时间常数,定时时间为50ms
MOVTL0,#0B0H;
RETI
DELAY20MS:
MOVR7,#10
DELAY1:
MOVR6,#200
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
DELAY40MS:
MOVR7,#100
DELAY3:
MOVR6,#200
DELAY4:
DJNZR6,DELAY4
DJNZR7,DELAY3
RET
TAB:
DB40H,79H,24H,30H,19H,12H,02H;0123456的字符码
DB78H,00H,10H,08H,03H,46H,21H,06H,0EH;789ABCDEF的字符码
TAB1:
DB8CH;P.的字符码
TAB2:
DB7FH;空,不显示的字符
END
第四章实验结果和分析
4.1实验使用的仪器设备
电脑,PTOTEUS软件,KEIL软件,电烙铁,吸锡器,钳子,直流电源,电阻,电容等基本元器件。
4.2测试结果分析
程序烧录到单片机中后,将其接到+5V左右的直流电源中,并开始按键实现时间控制或调整,设置多路定时时间,每路定时时间有起始时间和终止时间。
当设定好每路时间段后,按键恢复时钟状态并开始计时。
当到了指定的时间后,LED灯便会开始亮直至定时时间结束。
具体的显示情况如下:
第一次按下K1进入计时的小时调节;第二次按下K1进入计时的分钟调节;第三次按下K1进入定时器的小时调节;第四次按下K1进入定时器的分钟调节;第五次按下K1进入调整定时终止时间的时;第六次按下K1进入调整定时终止时间的分;第七次按下K1进入正常工作计时状态
结束语
通过本次实验学会了用keil编程,实现计时、多路定时功能,然后通过数码管显示时间还有LED灯的亮来提示定时。
当恢复到原来的初始状态时,再按按键可以看到原来的所定的三路时间的终止时间。
在制作PCB板的过程中和编程过程中,理解和加强了对单片机的了解。
这次设计课题中,在给定的源程序上修改并增加了多路定时程序,实现实验要求。
在焊接电路板过程中也没有出现过什么问题,只是在Protues仿真实验中有出现数码管显示数字成零不断跳动,而且LED灯自动跳变,相当于是中断不停执行、判断键值,特别不稳定。
虽然这次实验没有创新,但是也是自己动手查资料,修改程序,达到实验要求。
之前做过直流稳压电源,两级放大电路和数显温度计,但是都是照葫芦画瓢,没有融合自己的思想在所做的板子当中。
虽然达到实验要求,但是总是觉得只是为了完成老实交代的任务而已,并没有思考很多。
有时,只有经过自己亲手试验,才能更深层次的懂得实验原理和每部分电路的功能。
参考文献
Ø张俊谟.单片机中级教程——原理与应用(第二版).北京:
北京航空航天大学出版社,2006.10.
Ø谭浩强.C程序设计.北京:
清华大学出版社,2009.
Ø沈卫红.单片机应用系统实例与分析.北京:
北京航空航天大学出版社,2002
Ø苏文平.新型电子电路应用实例精选[M].北京:
北京航空航天大学出版社.2000.5.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 家用 定时器 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)