您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页基于单片机的家用定时器设计

基于单片机的家用定时器设计

来源:吉趣旅游网
吉首大学

《单片机技术》课程设计报告

项目名称: 家用多功能定时器设计与制作

专业年级: 物理机电工程工程2012级

学 号: 20124052023

学生姓名: 刘锐

指导教师: 陈善荣

报告完成日期 2015 年 7 月 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.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 单片机课程设计

定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多,家用电器都安装了定时器来控制开关或工作时间。

1.2 设计要求

主要内容和任务:完成单片机最小系统板设计与制作,在此基础上通过编程设计家用多路定时控制器。

目标:通过编写程序,使单片机最小系统具有正常数字钟功能,包括时间校正,具有至少三路定时开关控制功能,每路定时时间可以任意设置。

第二章 系统电路设计

2.1 设计框架介绍

按键输入电路:对定时器输入定时时间、时钟时间,并对其调整。 时钟电路:给单片机一个时钟信号,让其工作。 复位电路:使单片机为初始状态,并从初态开始工作。 数码管 :显示时间或者其它。

2.2 系统硬件单元电路设计

2.2.1 复位电路设计

2

3 单片机课程设计

复位操作有上电自动复位、按键电平复位和外部脉冲复位三钟方式,本次实验用的是按键电平复位,利用电容的充放电公式来选择所需的电容、电阻,能保证复位信号高电平持续时间大于2个机器周期。 2.2.2 时钟电路设计

该时钟电路是由晶体振荡器和两个微调电容组成的。在单片机芯片内部有一个高增益反相放大器,其输入端为引脚XTAL1,其输出端为引脚XTAL2。只需要在片外通过XTAL1和XTAL2引脚跨接晶体振荡器或在引脚与地之间加接微调电容,形成反馈电路,振荡器即可工作。由于该晶振使用的是12MHZ的晶体,因此它的时钟周期是0.167us,机器周期为1us。

3

4 单片机课程设计

2.2.3 按键电路设计

键K1(图中下方)控制状态的切换:

K1为0时,表示出处在正常的计时工作状态;为1,处在校正数字钟的“时”;为2,处在校正数字钟的“分”;为3,处在调整定时起始时间的“时”;为4,处在调整定时起始时间的“分”;为5,处在调整定时终止时间的“时”;为6,处在调整定时终止时间的“分”。

键K2(图中上方)为加号键,控制在各状态时加1。

该系统键扫描的方式为中断扫描方式,当键位上有键压下时,产生中断请求,CPU响应中断,执行中断服务程序,判断键位上压下的键的键号,继而做相应的处理。

2.3 系统硬件总电路

4

5 单片机课程设计

第三章 系统软件设计

3.1 系统软件流程图

主程序在执行时,通过单片机内部中断对程序不断的扫描判断、刷新显示,当有键按下时,将数字钟中的时间与定时时间相比较,然后根据比较程序显示状态,并且还要延时消除抖动,之后进行按键处理,从而显示不同的状态,如此周期循环。

3.2 系统程序设计

3.2.1 主程序 ORG 0000H LJMP START; ORG 0003H;

LJMP KEY_1 ;时钟、定时时间修改的切换键 ORG 000BH

5

6 单片机课程设计

LJMP TO_50ms ;数字钟时间定时器。每次定时时间为50ms,20次定时为1S,产生数字钟所需要的秒 ORG 0013H;

LJMP KEY_2 ;时钟、定时时间修改的+号键

ORG 0030H

START: MOV SP,#60H ;初始化堆栈首地址

MOV 5FH,#0 ;定时器T0溢出次数单元清零 MOV 5EH,#0 ;“秒”计数单元清

MOV 5DH,#00 ; 数字钟“分”初始值为0分钟 MOV 5CH,#12 ;数字钟“时”初始值设为12点

MOV 5BH,#30 ;定时起始时间“分”初始值设为30分 MOV 5AH,#11 ;定时起始时间“时”初始值设为11 MOV 50H,#40 ;定时终止时间“分”初始值设40分

MOV 4fH,#11 ;定时终止时间“时”初始值设11点

MOV 51H,#00H;设置显示方式为:显示正常时间和定时时间的初始时间 SETB 20H.0

CLR 20H.1;首先显示定时时间的起始时间 ;中断和定时器初始化

MOV TMOD,#00000001H;设定定时器T0工作在定时方式,工作在方式1,16位计数方式

SETB IE0;外部中断INT0为边沿触发方式 SETB IE1;外部中断INT1为边沿触发方式 SETB ET0;允许定时器产生中断

SETB EX0;允许外部中断INT0产生中断 SETB EX1;允许外部中断INT1产生中断 SETB EA;开启所有中断

mov p1,#0ffh

clr p1.0;定时器初始化

MOV TH0,#3CH;设置定时时间常数,定时时间为50ms MOV TL0,#0B0H;

SETB TR0;启动T0开始定时计数 LOOP1: lcall key_1 lcall key_2 jb 20h.1,loop_qishi

LCALL BCD;将数字钟和定时器的时间转换为显示字符码,送相应的字符码存储单元

ljmp loopa

loop_qishi: lcall bcd1

loopa: JB 20H.0,LOOP2;在小时的低位的数码管的小数点每0.5秒闪动一次 MOV A,58H

ANL A,#01111111B MOV 58H,A

6

7 单片机课程设计

LJMP LOOP4

LOOP2: MOV A,58H ORL A,#10000000B MOV 58H,A

JB 20H.1,LOOP3;如果处在调整定时终止时间状态,则定时时间“小时”的低位数码管的小数点点亮,否则该小时点熄灭 MOV A,H

ANL A,#01111111B MOV H,A LJMP LOOP4 LOOP3: MOV A,H ORL A,#10000000B MOV H,A

LOOP4: LCALL DISPLAY ;调用显示子程序,显示数字钟时间和定时时间

LJMP LOOP1 SJMP $

KEY_1: jb p1.6 ,key_1k ;lcall delay40ms lcall delay40ms lcall delay40ms jb p1.6 ,key_1k MOV A,51H

CJNE A,#06H,KEY_1A MOV 51H,#00H SJMP KEY_1end KEY_1A: INC 51H key_1end: mov a,51h

cjne a,#00h,key_1cc clr 20h.1 sjmp key_1k

key_1cc: cjne a,#01h,key_1c clr 20h.1 sjmp key_1k

key_1c: cjne a,#02h,key_1d clr 20h.1 sjmp key_1k

key_1d: cjne a,#03h,key_1e clr 20h.1 sjmp key_1k

key_1e: cjne a,#04h,key_1f clr 20h.1 sjmp key_1k

key_1f: cjne a,#05h,key_1h

7

8 单片机课程设计

setb 20h.1

sjmp key_1k

key_1h: cjne a,#06h,key_1k setb 20h.1 key_1k: RET

key_2: jb p1.7,key_2bb ;lcall delay40ms lcall delay40ms lcall delay40ms jb p1.7 ,key_2end MOV A,51H

CJNE A,#01H,KEY_2A MOV A,5CH

CJNE A,#23,KEY_2B MOV 5CH,#00H LJMP KEY_2END KEY_2B: INC 5CH key_2bb: LJMP KEY_2END

KEY_2A: CJNE A,#02H,KEY_2C MOV A,5DH

CJNE A,#59,KEY_2D MOV 5DH,#00H LJMP KEY_2END KEY_2D: INC 5DH LJMP KEY_2END

KEY_2C: CJNE A,#03H,KEY_2E MOV A,5AH

CJNE A,#23,KEY_2F MOV 5AH,#00H LJMP KEY_2END KEY_2F: INC 5AH LJMP KEY_2END

KEY_2E: CJNE A,#04H,KEY_2G MOV A,5BH

CJNE A,#59,KEY_2H MOV 5BH,#00H LJMP KEY_2END KEY_2H: INC 5BH LJMP KEY_2END

KEY_2G: CJNE A,#05H,KEY_2I MOV A,4FH

CJNE A,#23,KEY_2J MOV 4FH,#00H LJMP KEY_2END

8

9 单片机课程设计

KEY_2J: INC 4FH

LJMP KEY_2END

KEY_2I: CJNE A,#06H,KEY_2END MOV A,50H

CJNE A,#59,KEY_2K MOV 50H,#00H LJMP KEY_2END KEY_2K: INC 50H KEY_2END: RET

BCD: MOV DPTR,#TAB ;设置字符码首地址

MOV A,5CH ;取数字钟“小时”的值 MOV B,#10

DIV AB ;分离高位和地位的值 ,A中存放高位值,B中存放低位的值

MOVC A,@A+DPTR MOV 59H,A ;通过高位的值查表,获得高位数的字符码,并存入59H单元

MOV A,B

MOVC A,@A+DPTR

MOV 58H,A ;通过低位的值查表,获得低位数的字符码,并存入

58H单元

MOV A,5DH ;取数字钟“分”的值 MOV B,#10

DIV AB ;分离高位和地位的值 ,A中存放高位值,B中存放

低位的值

MOVC A,@A+DPTR

MOV 57H,A ;通过高位的值查表,获得高位数的字符码,并存入

57H单元

MOV A,B

MOVC A,@A+DPTR

MOV 56H,A ;通过低位的值查表,获得低位数的字符码,并存入

56H单元

MOV A,5AH ;取定时器“小时”的值 MOV B,#10

DIV AB ;分离高位和地位的值 ,A中存放高位值,B中存放

低位的值

MOVC A,@A+DPTR

MOV 55H,A ;通过高位的值查表,获得高位数的字符码,并存入

55H单元

MOV A,B

MOVC A,@A+DPTR

MOV H,A ;通过低位的值查表,获得低位数的字符码,并存入

H单元

MOV A,5BH ;取定时器“分”的值

9

10 单片机课程设计

MOV B,#10

DIV AB ;分离高位和地位的值 ,A中存放高位值,B中存放

低位的值

MOVC A,@A+DPTR

MOV 53H,A ;通过高位的值查表,获得高位数的字符码,并存入

53H单元

MOV A,B

MOVC A,@A+DPTR

MOV 52H,A ;通过低位的值查表,获得低位数的字符码,并存入

52H单元

RET

BCD1: MOV DPTR,#TAB ;设置字符码首地址 MOV A,5CH ;取数字钟“小时”的值 MOV B,#10

DIV AB ;分离高位和地位的值 ,A中存放高位值,B中存放

低位的值

MOVC A,@A+DPTR

MOV 59H,A ;通过高位的值查表,获得高位数的字符码,并存入

59H单元

MOV A,B

MOVC A,@A+DPTR

MOV 58H,A ;通过低位的值查表,获得低位数的字符码,并存入

58H单元

MOV A,5DH ;取数字钟“分”的值 MOV B,#10

DIV AB ;分离高位和地位的值 ,A中存放高位值,B中存放

低位的值

MOVC A,@A+DPTR

MOV 57H,A ;通过高位的值查表,获得高位数的字符码,并存入

57H单元

MOV A,B

MOVC A,@A+DPTR

MOV 56H,A ;通过低位的值查表,获得低位数的字符码,并存入

56H单元

MOV A,4fH ;取定时器“小时”的值 MOV B,#10

DIV AB ;分离高位和地位的值 ,A中存放高位值,B中存放

低位的值

MOVC A,@A+DPTR

MOV 55H,A ;通过高位的值查表,获得高位数的字符码,并存入

55H单元

MOV A,B

MOVC A,@A+DPTR

MOV H,A ;通过低位的值查表,获得低位数的字符码,并存入

10

11 单片机课程设计

H单元

MOV A,50H ;取定时器“分”的值 MOV B,#10

DIV AB ;分离高位和地位的值 ,A中存放高位值,B中存放

低位的值

MOVC A,@A+DPTR

MOV 53H,A ;通过高位的值查表,获得高位数的字符码,并存入

53H单元

MOV A,B

MOVC A,@A+DPTR

MOV 52H,A ;通过低位的值查表,获得低位数的字符码,并存入

52H单元

RET

DISPLAY: MOV P2,#11111110B ;将数字钟“小时”的高位的字符码送第一个

数码管显示

MOV P0,59H

LCALL DELAY20MS ;显示时间为20ms

MOV P2,#11111101B ;将数字钟“小时”的低位的字符码送第二个数

码管显示

MOV P0,58H

LCALL DELAY20MS ;显示时间为20ms

MOV P2,#11111011B ;将数字钟“分”的高位的字符码送第三个数码

管显示

MOV P0,57H

LCALL DELAY20MS ;显示时间为20ms

MOV P2,#11110111B ;将数字钟“分”的低位的字符码送第四个数码

管显示

MOV P0,56H

LCALL DELAY20MS ;显示时间为20ms

MOV P2,#11101111B ;将定时器“时”的高位的字符码送第五个数码

管显示

MOV P0,55H

LCALL DELAY20MS ;显示时间为20ms

MOV P2,#11011111B ;将定时器“时”的低位的字符码送第六个数码

管显示

MOV P0,H

LCALL DELAY20MS ;显示时间为20ms

MOV P2,#10111111B ;将定时器“分”的高位的字符码送第七个数码

管显示

MOV P0,53H

LCALL DELAY20MS ;显示时间为20ms

MOV P2,#01111111B ;将定时器“分”的低位的字符码送第八个数码

管显示

MOV P0,52H

11

12 单片机课程设计

LCALL DELAY20MS ;显示时间为20ms

RET ;上述显示方式,一直循环,实现动态显示

3.2.2 中断程序

TO_50ms: CLR TR0;关闭T0中断 MOV A,5FH;读中断次数

CJNE A,#9,TO_50ms2;判断是否到0.5秒

CPL 20h.0;到0.5秒,标志位求反,实现“时”的地位闪动效果,是对秒指示

TO_50ms2: CJNE A,#19,TO_50ms1;未到1秒,中断次数加1,退出定时中断 MOV 5FH,#00H;到1秒,中断次数单元内容清0,同时转到对“秒”的判 CPL 20h.0;到0.5秒,标志位求反,实现“时”的地位闪动效果,是对秒指示

SJMP MIAO TO_50ms1: INC 5FH LJMP T0_END

MIAO: MOV A,5EH;读秒单元内容

CJNE A,#59,MIAO1;判断是否到60秒,没有到60秒,则秒单元加1 MOV 5EH,#00H;否则秒单元清0,同时转到”分”单元的判断 LJMP FEN MIAO1: INC 5EH LJMP T0_END

FEN: MOV A,5DH;读分单元内容

CJNE A,#59,FEN1;判断是否到60分,没有到60分,则分单元加1 MOV 5DH,#00H;否则分单元清0,同时转到对“时“单元的判断 LJMP SHI FEN1: INC 5DH LJMP T0_END

SHI: MOV A,5CH;读“时”单元内容

CJNE A,#23,SHI1;判断是否到24小时,没有到24小时,则时单元加1 MOV 5CH,#00H;否则时单元清0, LJMP T0_END SHI1: INC 5CH

T0_END: SETB TR0;启动T0中断

MOV TH0,#3CH;设置定时时间常数,定时时间为50ms MOV TL0,#0B0H; RETI

DELAY20MS: MOV R7,#10 DELAY1: MOV R6,#200 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET

DELAY40MS: MOV R7,#100 DELAY3: MOV R6,#200 DELAY4: DJNZ R6,DELAY4

12

13 单片机课程设计

DJNZ R7,DELAY3

RET

TAB: DB 40H,79H,24H,30H,19H,12H,02H ;0 1 2 3 4 5 6的字符码 DB 78H,00H,10H,08H,03H,46H,21H,06H,0EH;7 8 9 A B C D E F的字符码

TAB1: DB 8CH;P.的字符码

TAB2: DB 7FH;空,不显示的字符 END

第四章 实验结果和分析

4.1 实验使用的仪器设备

电脑,PTOTEUS软件,KEIL软件,电烙铁,吸锡器,钳子,直流电源,电阻,电容等基本元器件。

4.2测试结果分析

程序烧录到单片机中后,将其接到+5V左右的直流电源中,并开始按键实现时间控制或调整,设置多路定时时间,每路定时时间有起始时间和终止时间。当设定好每路时间段后,按键恢复时钟状态并开始计时。当到了指定的时间后,LED灯便会开始亮直至定时时间结束。具体的显示情况如下:

第一次按下K1进入计时的小时调节;第二次按下K1进入计时的分钟调节;第三次按下K1进入定时器的小时调节;第四次按下K1进入定时器的分钟调节;第五次按下K1进入调整定时终止时间的时;第六次按下K1进入调整定时终止时间的分;第七次按下K1进入正常工作计时状态

结束语

通过本次实验学会了用keil编程,实现计时、多路定时功能,然后通过数码管显示时间还有LED灯的亮来提示定时。当恢复到原来的初始状态时,再按按键可以看到原来的所定的三路时间的终止时间。在制作PCB板的过程中和编程过程中,理解和加强了对单片机的了解。这次设计课题中,在给定的源程序上修改并增加了多路定时程序,实现实验要求。在焊接电路板过程中也没有出现过什么问题,只是在Protues仿真实验中有出现数码管显示数字成零不断跳动,而且

13

14 单片机课程设计

LED灯自动跳变,相当于是中断不停执行、判断键值,特别不稳定。

虽然这次实验没有创新,但是也是自己动手查资料,修改程序,达到实验要求。之前做过直流稳压电源,两级放大电路和数显温度计,但是都是照葫芦画瓢,没有融合自己的思想在所做的板子当中。虽然达到实验要求,但是总是觉得只是为了完成老实交代的任务而已,并没有思考很多。有时,只有经过自己亲手试验,才能更深层次的懂得实验原理和每部分电路的功能。

参考文献

 张俊谟.单片机中级教程——原理与应用(第二版).北京:北京航空航天大

学出版社,2006.10.

 谭浩强.C程序设计.北京:清华大学出版社,2009.

 沈卫红.单片机应用系统实例与分析.北京:北京航空航天大学出版社,2002  苏文平.新型电子电路应用实例精选[M].北京:北京航空航天大学出版

社.2000.5.

14

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务