可编程作息时间控制器设计单片机课程设计报告书Word格式文档下载.docx
《可编程作息时间控制器设计单片机课程设计报告书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《可编程作息时间控制器设计单片机课程设计报告书Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
利用单片机内部的定时器,采用软件编程实现时钟计时,根据设定时间完成播报,可按照设定的时间进行相应的控制,能够随意设定播报时间。
任务要求
(进度)
第1-2天:
熟悉课程设计任务及要求,查阅技术资料,确定设计方案。
第3-4天:
按照确定的方案设计单元电路。
要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。
第5-6天:
软件设计,编写程序。
第7-8天:
实验室调试。
第9-10天:
撰写课程设计报告。
要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。
主要参考
资料
[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
审查意见
系(教研室)主任签字:
年月日
1、引言
1.1研究背景和用途
20世纪末,电子技术得到了飞速的发展。
在其推动下,现代电子产品乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。
时间对于人来说总是那么珍贵,工作的忙碌性和繁杂让人容易忘记当前时间。
然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成更大的麻烦。
对于学校来说作息时间尤为重要。
如今,在电子计算机基础上发展而来的可编程作息时间控制器,它可以利用电子计算机的内部时间,通过程序判断处理,完成对作息时间的精确控制,并且由于是程序控制,所以可通过改变程序而进而灵活改变作息时间,同时可以实时显示时间,并实现打铃功能。
可编程时间控制器可实现对时间控制的智能化,摆脱由人控制时间的长短不同的不便,并且可以在必要时人工切入控制,完美的满足作息时间控制。
1.2设计思想及基本功能
该系统能够实现以往的人工控制时间具有的功能,即到达所规定的时间后打铃的功能,再次功能的前提下,还具有以往方式不具备的时间显示功能。
在选取设计方案和采取元器件方面,该系统本着简单实用经济的思想,尽量简化电路,以最经济的方式达到设计要求。
可编程作息时间控制器具备以下功能:
(1)可以通过键盘进行时间设定
(2)具有屏幕显示的功能
(3)到达所设定的时间,能够进行上下课打铃。
1.3研究内容及采方法
(1)主要研究内容
用C语言编写作息时间控制程序,按照给定的时间模拟控制,上下课打铃、灯光控制(屏幕显示),并且具备日期和时钟显示。
给定的时间可修改,可模拟手动控制,用扬声器模拟打铃。
(2)主要采用方法
程需要用到延时程序,所以把延时程序单独做成一个子程序,然后在需要的时候调用它,使得时间显示程序更加精炼,此时日期和时钟显示功能已经完成;
而后设计灯光控制(屏幕显示),采用比较跳转的方式即可,当到达设定的时间区域时通过比较来判断是亮灯还是灭灯;
随后是上下课打铃的模拟,需要调用DOS显示功能,将设定好的时间在屏幕上显示出来,然后调用PC机内部时钟,判断时钟与给定时间是否相同,进而判断是否响铃,若响铃则调用设定好的响铃程序,并实现屏幕模拟显示;
给定时间修改是调用键盘I/O中断功能号,获取键值的方法来进入,先确定应该修改哪个响铃,再将新的响铃时间数据存入要修改时钟的缓冲区,并将其覆盖来实现;
模拟手动控制、用扬声器模拟打铃,同样采用调用键盘I/O中断功能号,获取键值的方法,判断是否与设定的手动按键相同,若相同则进入手动控制,进入后调用响铃程序,而后自动退出响铃,开始其他响应功能。
2、总体设计方案
2.1方案选取
通常通过单片机对时钟模块进行设计有两种方案:
一是通过单片机内部的定时器计数器,采用软件编程实现时钟技术,一般为软时钟,这个方法硬件线路简单,系统功能一般与软件设计有关,通常用在对时间精度要求不高的场所;
二是采用时钟芯,它的功能强大,功能部件集中在芯片内部,自动产生时钟等相关功能。
硬件成本相对较高,软件编程简单。
通常用在对时钟要求较高的场所。
综合两者特点,此次设计精度不高,而且根据设计思想的经济性,采用第一种方案。
2.2系统框图
系统框图
2.3系统工作原理
使用AT89C51单片机结合字符型LCD显示器设计一个简易的可编程作息时间控制器,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。
程序执行后工作指示灯LED闪动,表示程序开始执行,同时显示系统时间。
作息时间控制器是由4路可调闹钟组成,从而实现打铃等功能。
当四路闹钟中的任一路到时,均会点亮灯、打铃。
其中操作键K1~K4的功能分别为:
设置限制的时间/时的调整、显示闹钟设置的时间/分的调整、设置闹钟的时间/设置完成、闹钟更换。
3、硬件电路及芯片介绍
3.1AT89C51单片机
本设计的核心硬件就是8051芯片,这里选择了AT89C51,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
图3.1AT89C51引脚图
引脚及其功能:
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
P3口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
P1.0口接K1按键,P1.1口接K2按键,P1.2口接K3按键,P1.3口接K4按键,P2.0口接RS口,P2.1口接RW口,P2.2口接E口,P2.3口接发光二极管D2阳极,P2.4口接发光二极管D1阳极,P2.5口接电阻R3,P3口的8个口依次和LCD的数据口D0~D7.
3.21602LCD液晶显示器
LM016L液晶模块采用HD44780控制器。
HD44780具有简单而功能较强的指令集,可以实现字符移动、闪烁等功能。
LM016L与单片机MCU(MicrocontrollerUnit)通讯可采用8位或者4位并行传输两种方式。
HD44780控制器由两个8位寄存器、指令寄存器(IR)和数据寄存器(DR)、忙标志(BF)、显示数据RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC)。
IR用于寄存指令码,只能写入不能读出;
DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据。
BF为1时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据。
DDRAM用来存储显示的字符,能存储80个字符码。
CGROM由8位字符码生成5*7点阵字符160种和5*10点阵字符32种,8位字符编码和字符的对应关系,可以查看参考文献[3]中的表4。
CGRAM是为用户编写特殊字符留用的,它的容量仅64字节。
可以自定义8个5*7点阵字符或者4个5*10点阵字符。
AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或者CGRAM单元。
LM016L液晶模块的引脚功能见表:
图3.2LCD1602引脚图
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
将respack-8的1口接电源,2~8口顺序和P3口相连接,并和LCD的数据口D1~D7相接,VSS接地,VDD接电源,VEE接滑动变阻器,RS口接P2.0口,RW口接P2.1口,E口接P2.2口。
3.3其他重要元件
(1)独立式键盘的接口电路:
在单片机应用系统中,有时只需要几个简单的按键向系统输入信息。
这时,可将每个按键接在一根I/O接口线上,这种方式的连接称为独立式键盘。
每个独立式按键单独占有一根I/O接口线,每根I/O接口线的工作状态不会影响到其他I/O接口线。
这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O接口线,I/O接口线浪费较大。
故只在按键数量不多时采用这种按键电路。
在此电路中,按键输入都采用低电平有效。
上拉电阻保证了按键断开时,I/O接口线有确定的高电平。
当I/O接口内部有上拉电阻时,外电路可以不配置上拉电阻。
图3.3独立式键盘
(2)蜂鸣器:
将蜂鸣器的一端电源,另一端接至晶闸管集电极,当需要闹钟响时,P2.5将发出有规律的电平使得晶闸管导通,从而使得蜂鸣器发出声响。
图3.4蜂鸣器接线图
(3)respack-8:
上拉电阻键K1~K4分别与单片机的P1.0~P1.3口相接。
3.4硬件电路设计图
将respack-8的1口接电源,2~8口顺序和P3口相连接,并和LCD的数据口D1~D7相接。
发光二极管D1和P2.4口相连接用以显示秒计时,发光二极管和P2.3口相连接用以显示闹钟时的广播,按键K1~K4分别与单片机的P1.0~P1.3口相接,以实现按键的多功能使用。
图3.5系统整体电路图
4、系统软件设计
系统软件主要包括主程序、显示子程序、键盘扫描子程序、定时子程序等。
本章节系统的介绍了可编程作息控制器的主程序和主要功能子程序的设计流程,具体的代码见附录。
4.1主程序软件设计
主程序无限循环,采用了程序结构的模块化,避免了一些函数的不必要的重复书写。
主要完成LCD初始化,单片机初始化,键盘扫描和显示时间等功能。
主程序流程图如图所示:
图4.1主程序流程图
4.2键盘扫描程序设计
由于键位未按下,输出高电平,键位按下,输出低电平,因此可以通过检测输出线路上的电平高低来判断有无按键按下。
但是无论按下键位还是松开键位都会产生抖动。
如果抖动不做处理,必然会出现错误。
抖动消除有两种方法:
硬件消除和软件消除。
硬件消除是通过在按键输出电路上加上一定硬件线路来消除抖动,一般采用R-S触发器。
软件消除是利用延时来跳过抖动过程。
一般情况下,延时10ms就可以跳过抖动过程了,然后又单片机开始执行相应的命令,下图为键盘程序设计流程图:
图4.2键盘扫描程序流程图
4.3时钟调节程序设计
按下K1键,进入始终调节模式,可是可以通过按下K1,K2按键来调节时钟时和分的大小,设置完毕后,按下K3,返回时钟显示模式。
流程图如下
图4.3时钟调节流程图
4.4闹钟时间调节程序设计
按下K3键进入闹钟模式,此时显示器第二行显示闹钟时间,K1和K2可调节闹钟的时间,设置完毕后,按下K3键完成设置此时会显示设置好的闹钟时间,250ms过后,自动返回时钟模式。
流程图如下:
图4.4闹钟时间调节程序流程图
4.5闹钟时间判断子程序设计
闹钟时间的判别主要是通过设定时间与实时时间逐位对比确定是否进行闹铃,流程图如图所示
图4.5闹钟时间判断子程序流程图
5、总结
在整个设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。
这次课程设计的制作过程是我的一次再学习,再提高的过程。
在课程设计中我充分地运用了大学期间所学到的知识。
我从资料的收集中,掌握了很多单片机、LED数码管的知识,让我对我所学过的知识有所巩固和提高,并且让我对当今单片机、LED的最新发展技术有所了解。
在整个过程中,我学到了新知识,增长了见识。
在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。
脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。
我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。
在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。
也练就了我的耐心,做什么事都在有耐心。
此次课程设计中学了很多很多东西,这是最重要的。
参考文献
[1]张毅刚主编,单片机原理及应用,北京:
高等教育出版社,2004
[2]陈涛编著,单片机应用及C51程序设计,北京:
机械工业出版社,2008
[3]周润景主编,PROTEUS入门实用教程,北京:
机械工业出版社,2007
[4]皮大能主编,单片机课程设计指导书,北京:
北京理工大学出版社,2010
[5]楼然苗主编,单片机实验与课程设计(Proteus仿真版),浙江:
浙江大学出版社,2010
附录:
;
*****************作息时间控制器;
***************
SIGN
BIT
2AH
设置按键输入完毕标志位为SIGN
ORG
0000H
LJMP
START
000BH
TIME0
设置定时器0的中断程序入口
ORG0013H
LJMPIINT1;
设置中断1的中断程序入口
START:
MOVSP,#60H;
设置指针
MOV31H,#250
MOV32H,#16
MOVTMOD,#02H;
设置定时器为方式2工作,自动载入初值
MOVTH0,#06H
MOVTL0,#06H
MOVIE,#86H;
允许CPU中断,外部1中断和定时器的中断
CLRIT1;
开外部中断1
CLRSIGN;
清标志位
MOVDPTR,#5FFFH
MOVA,#0DCH;
将显示RAM全部置1
MOVX
@DPTR,A
WAIT:
MOVX
A,@DPTR
JB
ACC.7,WAIT
;
清除完毕
MOV
A,#00H
设置为8*8左边输入
A,#34H
20分频
R2,#6
输入是6位数
R1,#39H
显示数据存放首地址
CLEAR:
MOV
@R1,#00H
INC
R1
DJNZ
R2,CLEAR
全部清零
LCALL
DISP
R3,#06H
KEYIN:
JNB
SIGN,KEYIN
CLR
扫描到键盘输入了一个新字符则调用显示
R3,KEYIN
EX1
SETB
TR0
时钟0启用
LOOP:
00H,NEXT
00H作1秒到标志
00H
ACALL
T0SERVE
调用时间步进子程序
RING
调用铃声时间对比子程序
调用显示子程序
NEXT:
SJMP
LOOP
*************************
TIME0:
DJNZ
31H,CCC
31H,#250
32H,CCC
32H,#16
SETB
CCC:
RETI
T0SERVE:
A,39H
ADD
A,#01H
秒数加一
39H,A
CJNE
A,#0AH,EXIT
39H,#00H
秒的个位逢十进一
A,3AH
ADD
3AH,A
A,#06H,EXIT
3AH,#00H
秒的十位逢六进一
A,3BH
3BH,A
3BH,#00H
分钟的个位逢十进一
A,3CH
A,#01H
3CH,A
CJNE
A,#06H,EXIT
3CH,#00H
分钟的个位逢六进一
A,3EH
SWAP
A
A,3DH
合并小时数
DA
R7,A
ANL
A,#0FH
3DH,A
A,R7
SWAP
3EH,A
A,#24H,EXIT
小时数逢二十四清零
3DH,#00H
3EH,#00H
EXIT:
RET
*************************
RING:
A,3EH
将小时的显示值合并载入A中
R7,A
将小时数装入R7寄存
SUBB
A,#08H
小时数与8比较
JC
OFF
A,R7
A,#11H
小时数与11比较
N1
JZ
A,#14H
小时数与14比较
A,#17H
小时数与17比较
JC