倒计时单片机课设.docx
- 文档编号:18003713
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:24
- 大小:99.98KB
倒计时单片机课设.docx
《倒计时单片机课设.docx》由会员分享,可在线阅读,更多相关《倒计时单片机课设.docx(24页珍藏版)》请在冰点文库上搜索。
倒计时单片机课设
学号10700230
天津城建大学
单片机原理及接口技术课程设计—
设计说明书
LCD1602显示的倒计时装置设计
起止日期:
2014
年1月6
日至2014年1月17日
学生姓
名
彭建超
班
级
10电信2班
成
绩
指导教师(签
字)
计算机与信息工程学院
2014年1月17日
天津城建大学
课程设计任务书
2013—2014学年第1学期
计算机与信息工程学院电子信息工程专业班级_10_电信2_学号_10700230_
课程设计名称:
_单片机原理及接口技术_
设计题目:
LCD1602显示的倒计时装置设计完成期限:
自2014_年_1_月_6_日至_2014_年丄月_17_日共2_周
设计依据、要求及主要内容:
1.设计的目的
1.进一步熟悉和掌握单片机系统设计和编程原理。
2.掌握单片机的接口技术及相关外围芯片的外特性、控制方法。
3.通过设计,掌握以单片机核心的电路设计的基本方法和技术。
4.通过实际程序设计和调试,掌握模块化程序设计方法和调试技术。
5.通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用系统的全过程,为今后从事相应开发打下基础。
2.设计的基本要求
1.认真认识设计的意义,掌握设计工作程序,学会使用工具书和技术参考资料,并培养科学的设计思想和良好的设计作风。
2.提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。
3.提高独立分析、解决问题的能力,逐步增强实际应用训练。
4.设计的说明书要求简洁、通顺,电路图内容完整、清楚、规范。
3.设计主要内容
a)设计实现功能
STC12C5A60S2引脚排序及基本功能同AT89S51作为主控芯片,设计利用LCD1602显示时间和倒计时时间(最大99:
59:
59)的装置。
一是扩展DS12C887时钟电路设计;二是利用LCD1602显示时间和倒计时剩余时间;三是在倒计时时间减为零以后,进行加1时间显示;四是设计启动、暂停、停止按键。
b)原理图设计
1.原理图设计要符合项目的工作原理,连线要正确。
2.图中所使用的元器件要合理选用,电阻、电容等器件的参数要正确标明
3.原理图要完整,CPU外围器件、外扩接口、输入/输出装置要一应俱全。
c)程序调计
1.根据要求,将总体功能分解成若干个子功能模块,每个功能模块完成一个特定的功能。
2.根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计出完整的程序流程图。
d)程序调试
1.编写相关程序,并进行仿真。
2.将程序下载到单片机,进行运行调试。
e)设计说明书
1.原理图设计说明
简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。
2.程序设计说明
对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。
3.画出工作原理图,程序流程图并给出相应的程序清单。
指导教师(签字):
教研室主任(签字):
批准日期:
2014年1月2日
第一章设计原理1
1.1设计内容1
1.2设计思路说明1
1.3设计原理框图1
第二章硬件的选择2
2.1主控制芯片AT89S512
2.1.1主要性能特点2
2.1.2管脚说明2
2.2DS12C887时钟芯片4
2.2.1器件特性4
2.2.2引脚功能5
2.3LCD1602液晶显示屏6
2.3.1性能说明6
2.3.2管脚功能及特性6
第三章软件程序设计8
3.1主程序模块8
3.31602显示模块8
3.4键盘输入模块10
3.2DS12C887时钟模块10
第四章心得总结12
第五章参考文献13
附录一(电路原理图)14
附录二(C程序)15
第一章设计原理
1.1设计内容
STC12C5A60S2引脚排序及基本功能同AT89S51作为主控芯片,设计利用LCD1602显示时间和倒计时时间(最大99:
59:
59)的装置。
一是扩展DS12C887时钟电路设计;二是利用LCD1602显示时间和倒计时剩余时间;三是在倒计时时间减为零以后,进行加1时间显示;四是设计启动、暂停、停止按键。
1.2设计思路说明
本文主要对使用单片机设计电子时钟进行了分析,并介绍了基于单片机电子时钟硬件组成。
利用单片机为控制核心,以液晶屏LCD1602显示器为显示模块,依靠DS12C887芯片高精度计时的特点,可以设计出一个具有显示年月日,星期,时分秒,以及定时闹钟功能为一体的高精度电子时钟。
并且本文分别从原理图,主要芯片,以及程序的调试来详细阐述。
如果直接使用单片机进行定时、计时,那么单片机运行代码时,难免会因环境、人为操作等因素导致时间不能准确,产生一定的误差等,如果没有特殊的方法,系统意外掉电时,时间数据会丢失,重启系统时还需重设时间,所以本设计采取使用高精度计时芯片DS12C887方案。
1.3设计原理框图
LCD液晶显示倒计时器以AT89C52单片机为核心,起着控制作用,系统包括液晶显示电路,
按键电路,复位电路,DS12C887寸钟模块和矩阵键盘电路。
倒计时的总体框图如下图1.1所
示:
图1.1系统原理框图
第二章硬件的选择
2.1主控制芯片AT89S51
单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
它的应用必定导致传统的控制技术从根本上发生变革。
因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-system
programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATME公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
2.1.1主要性能特点
1、4kBytesFlash片内程序存储器;2、128bytes的随机存取数据存储器(RAM;3、32个外部双向输入/输出(I/O)口;4、2个中断优先级、2层中断嵌套中断;5、5个中断源;
6、2个16位可编程定时器/计数器;7、2个全双工串行通信口;8、看门狗(WDT电路;9、片内振荡器和时钟电路;10、与MCS-5兼容;11、全静态工作:
0Hz-33MHz12、三级程序存储器保密锁定;13、可编程串行通道;14、低功耗的闲置和掉电模式。
2.1.2管脚说明
VCC电源电压输入端。
GND电源地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
图2.1PDIP封装的AT89S51管脚图
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写T时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2
口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器
或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内
容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口除了作为普通I/O口,还有第二功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(T0定时器的外部计数输入)
P3.5T1(T1定时器的外部计数输入)
P3.6/WR(外部数据存储器的写选通)
P3.7/RD(外部数据存储器的读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从
外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到内部总线。
89C51的PO、P1、P2、
P3口作为输入时都是准双向口。
除了P1口外PO、P2、P3口都还有其他的功能。
RST复位输入端,高电平有效。
当振荡器复位器件时,要保持RST脚两个机器周期的高
电平时间。
ALE/PROG地址锁存允许/编程脉冲信号端。
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE
端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉
冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOV,MOVC旨令时ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位
无效。
PSEN夕卜部程序存储器的选通信号,低电平有效。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP外部程序存储器访问允许。
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH,不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET当/EA端保持高电平时,此间内部程序存储器。
在FLASHS程期间,此引脚也用于施加12V编程电源(VPP。
XTAL1片内振荡器反相放大器和时钟发生器的输入端。
XTAL2片内振荡器反相放大器的输出端。
2.2DS12C887时钟芯片
2.2.1器件特性
图1DS12C887的弓I脚排列
DS12C887实时时钟芯片功能丰富,可以用来直接代替IBMPC上的时钟日DS12887同时,它的管脚也和MC146818BDS12887相兼容。
由于DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子千年”问题;DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。
在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一
种用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节RAM其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM使用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
2.2.2引脚功能
DS12C887的引脚排列如图1所示,各管脚的功能说明如下:
GNDVCC直流电源,其中VCC接+5V输入,GND接地,当VCC输入为+5V时,用户可以访问DS12C887内RAM中的数据,并可对其进行读、写操作;当VCC的输入小于
+4.25V时,禁止用户对内部RAM进行读、写操作,此时用户不能正确获取芯片内的时间信息;当VCC的输入小于+3V时,DS12C887会自动将电源发换到内部自带的锂电池上,以保证内部的电路能够正常工作。
(1)MOT模式选择脚,DS12C887有两种工作模式,即Motorola模式和Intel模式,当MOT接VCC时,选用的工作模式是Motorola模式,当MOT接GND时,选用的是Intel模式。
本文主要讨论Intel模式。
(23)SQW方波输出脚,当供电电压VCC大于4.25V时,SQW却可进行方波输出,此时用户可以通过对控制寄存器编程来得到13种方波信号的输出。
AD0-AD7:
复用地址数据总线,该总线采用时分复用技术,在总线周期的前半部分,出现在AD0-AD7上的是地址信息,可用以选通DS12C887内的RAM总线周期的后半部分出现在ADAAD7上的数据信息。
(14)AS:
地址选通输入脚,在进行读写操作时,AS的上升沿将ADAAD7上出现的地址信息锁存到DS12C887上,而下一个下降沿清除ADAAD7上的地址信息,
(15)不论是否有效,DS12C887都将执行该操作。
(17)DS/RD数据选择或读输入脚,该引脚有两种工作模式,当MOT接VCC时,选
用Motorola工作模式,在这种工作模式中,每个总线周期的后一部分的DS为高电平,
被称为数据选通。
在读操作中,DS的上升沿使DS12C887将内部数据送往总线ADAAD7上,以供外部读取。
在写操作中,DS的下降沿将使总线AD0-AD7上的数据锁存在DS12C887中;当MOT接GND时,选用Intel工作模式,在该模式中,该引脚是读允许输入脚,即ReadEnable。
(15)R/W读/写输入端,该管脚也有2种工作模式,当MOT接VCC时,R/W工作在Motorola模式。
此时,该引脚的作用是区分进行的是读操作还是写操作,当R/W为高电平时为读操作,R/W为低电平时为写操作;当MOT接GND时,该脚工作在Intel模式,此时该作为写允许输入,即WriteEnable。
产込
(13)CS:
片选输入,低电平有效
在DS12C887内有11字节体垢地址及取值如表1所列。
RAM用来存储时间信息,
4字节用来存储控制信息,其具
2.3LCD1602液晶显示屏
2.3.1性能说明
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAJM显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD4478液晶芯片的,控制原理是完全相同的,因此基于HD4478写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
2.3.2管脚功能及特性
管脚功能
1602采用标准的16脚接口,其中:
第1脚:
VSS为电源地
图2.3LCD1602引脚图
第2脚:
VCC接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生鬼影”使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳变时执行指令。
第7〜14脚:
D0-D7为8位双向数据端。
第15〜16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
特性
3.3V或5V工作电压,对比度可调
内含复位电路
提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能
有80字节显示数据存储器DDRAM
内建有192个5X7点阵的字型的字符发生器CGROM
8个可由用户自定义的5X7的字符发生器CGRAM
第三章软件程序设计
3.1主程序模块
程序设计思想是采用自顶向下、逐步求精的方法,将一个复杂的问题分解成若干独立的子问题,每个子问题对应一个功能独立的程序模块,将这些模块有机的连接在一起,构成完整的程序。
先进行主程序模块的设计,描述程序的总体框架,在进行子模块的设计,完成相应的子功能。
首先,程序启动应先对单片机资源进行初始化操作,其过程包括:
打开中断,向ds12c887
芯片写入控制字,读取芯片內相应寄存器的时间数据,并将lcd1602进行初始化,写入控制
字,写入数据,完成时间日期的显示,然后进入循环中不断重复以下过程:
扫描键盘,有键盘按下则执行相应的操作,进行ds12c887芯片的寄存器数据读取,向lcd1602发送相应数据并显示。
(1)显示时间程序用软件调节时间,通过程序的调节,最后用LCD现实时钟
(2)
调节时间程序按键调节时间,能实现启动,暂停,停止的调节倒计时。
3.31602显示模块
1602液晶模块内部的字符发生存储器(CGROM)经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母A”
在单片机编程中还可以用字符型常量或变量赋值,如'A'因为CGRO储存的字符代码与我们PC中的字符代码是基本一致的,因此我们在向DDRAIWC51字符代码程序时甚至可以直接用P仁A'这样的方法。
PC在编译时就把'A'先转换为41H代码了。
字符代码0x00~0x0F为用户自定义的字符图形RAM对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRA了。
0x20〜0x7F为标准的ASCII码,0xA0〜0xFF为日文字符和希腊文字符,其余字符码(0x10〜0x1F及0x80〜0x9F)没有定义。
以下是1602的16进制ASCII码表地址:
读的时候,先读左边那列,再读上面那行,如:
感叹号!
的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
控制指令集如下:
指令码
功能
指令
RS
R
/
W
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
清除显示
0
0
0
0
0
0
0
0
0
1
将DDRAI填满"20H",并且设定DDRA的地址计数器
(AC)至到"00H"
地址归位
0
0
0
0
0
0
0
0
1
X
设定DDRAI的地址计数器(AC)到"00H",并且将游标
移到开头原点位置;这个指令不改变DDRAM的内容
显示状态
开/关
0
0
0
0
0
0
1
D
C
B
[D=1:
整体显示0N][C=1:
游标ON]
[B=1:
游标位置反白允许]
进入点设
疋
0
0
0
0
0
0
0
1
I
/
D
S
指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位
游标或显
示移位控
制
0
0
0
0
0
1
S
/
C
R
/
L
X
X
设定游标的移动与显示的移位控制位;这个指令不
改变DDRAM勺内容
功能设定
0
0
0
0
1
D
L
X
R
E
X
X
[DL=0/1:
4/8位数据]
[RE=0/1:
基本指令操作/扩充指令操作]
设定
CGRAM地
址
0
0
0
1
A
C
5
A
C
4
A
C
3
A
C
2
A
C
1
A
C
0
设定CGRAM地址
设定
DDRAM地
址
0
0
1
0
A
C
5
A
C
4
A
C
3
A
C
2
A
C
1
A
C
0
设定DDRAM地址(显示位址)
[第一行:
80H-A7H]
[第二行:
C0H-E7H]
读取忙标
志和地址
0
1
B
F
A
C
6
A
C
5
A
C
4
A
C
3
A
C
2
A
C
1
A
C
0
读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值
写数据到
RAM
1
0
数据
将数据D7——D0写入到内部的RAM(DDRAM/CGRAM/IRAM/GRAM)
读RAM
1
1
数据
从内部RAM读取数据D7——D0(DDRAM/CGRAM/IRAM/GRAM)
3.4键盘输入模块
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接
用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,下图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
具体的识别及编程方法如下所述。
1、判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
检测到按键之后,再执行相应的程序即可实现时间的启动,暂停,停止功能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 倒计时 单片机