单片机课程设计.docx
- 文档编号:17671505
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:30
- 大小:454.76KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(30页珍藏版)》请在冰点文库上搜索。
单片机课程设计
电气与电子信息工程学院
单片机原理与应用课程设计报告
设计题目:
多功能数字电子钟
专业班级:
电子信息科学与技术
教师评语:
成绩评阅教师日期
一、摘要
该课程设计为数字电子钟的设计。
以AT89S52为核心,配合液晶显示器和按键为用户提供长期、连续、可靠、稳定的工作环境。
该数字电子钟有时分秒显示和日期显示以及时间和日期调整的功能。
系统软件设计包括单片机计算机两部分的编程。
计算机软件编程主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储。
单片机软件编程主要实现键盘、液晶显示器等各模块的功能,采用汇编语言编程。
关键词:
数字电子钟 单片机 液晶显示
二、课程设计目的
通过《单片机原理与应用》课程设计,使学生掌握单片机及其扩展系统设计的方法和设计原则及相应的硬件调试的方法。
进一步加深单片机及其扩展系统设计和应用的理解。
三、课程设计题目
多功能数字电子钟设计
四、课程设计内容及要求
1、设计内容:
1)有上电指示灯;
2)能正确手动复位;
3)有4位数码管显示,能按照分秒进制显示时间;
4)自定义的扩展功能。
2、设计要求:
1)独立设计原理图及相应的硬件电路。
2)针对选择的设计题目,设计系统软件。
软件要做到:
操作方便,实用性强,稳定可靠。
3)设计说明书格式规范,层次合理,重点突出。
并附上设计原理图及相应的源程序。
五、电路工作原理
设计思路
单片机的接口信号是数字信号。
要想用单片机获取时间这类非电信号的信息,必须使用时间芯片,将时间信息转换为电流或电压输出。
如果转换后的电流或电压输出是模拟信号,还必须进行A/D转换,以满足单片机接口的需要。
如果是数字信号就可以直接送往单片机进行数据处理。
在传统的基于单片机的数字时钟设计的基础上经过一些改进,引入12887时间芯片,将电路的控制部分和计时部分分开,电路的控制部分为单片机,计时部分为12887时间芯片。
12887芯片是独立计时,并且具有掉电保护功能,内部自带锂电池,能够在断电的情况下继续计时,主电路恢复供电之后能够不必调整时间,为时钟的日常操作省去了很大的麻烦,而且这种设计更节能,在需要观察时间的时候比如白天就可以给主电路通电。
而在夜晚不需要观察时钟的时候就可以给主电路断电,这样可以节约大量能量。
时间芯片12887采用了内部集成晶振的电路,并且具有内部温漂补偿电路设计。
能够准确计时,提供精确的时间,这样就简化了电路的器件选择,另外也使程序的设计更加简洁。
在硬件设计方面,由于只增加了一个12887时间芯片,因此并不是特别复杂,而且这种独立计时的设计使得产品排故更加方便。
采用LCD液晶显示器显示。
而LCD液晶显示则耗能少,能够显示年、月、日、星期等汉字,在显示方面更加灵活,而且改变显示时只要改变软件设计就可以,不用改变硬件电路的设计,易于电路的功能扩展。
电路的软件设计也很简单。
另外,这种设计硬件更加简洁。
采用LCD液晶显示方案的缺点是在显示位数比较少时,价格略显昂贵。
综上所述,本设计采用独立计时,主控芯片使用51系列STC89C52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM和内置电池的实时时钟DS12887。
采用DS12887作为主要计时芯片,可以做到计时准确。
更重要的是,DS12887可以在外部电源断电的情况下继续计时,在没有外部供电的情况下,DS12887可以连续计时10年以上。
系统由主控制器STC89C52、时钟芯片DS12887、LCD液晶显示电路、键盘扫描电路和通信系统模块电路组成。
系统硬件设计框图如图2-1所示。
图2-1系统硬件设计框图
单片机STC89C52
STC89C52是低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大STC89C52单片机适合于许多较为复杂控制应用场合。
STC89C52单片机为40引脚双列直插芯片,有四个I/O口P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。
STC89C52PDIP管脚封装,如图2-2所示。
图2-2STC89C52PDIP管脚封装
STC89c52包含以下部分,其结构图如图2-3所示
图2-3 STC89c52内部结构图
(1)一个8位微处理器CPU
(2)片内数据存储器RAM和特殊功能寄存器SFR
(3)片内程序存储器ROM
(4)两个定时/计数器T0、T1,可用作定时器,也可用以对外部脉冲进行计数
(5)四个8位可编程的并行I/O端口,每个端口既可作输入,也可作输出
(6)一个串行端口,用于数据的串行通信
(7)中断控制系统
(8)内部时钟电路
功能特性概述:
STC89C52提供以下标准功能:
8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,STC89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
单片机STC89C52的P0口作为输入口。
P0与DS12887的AD相连,进行时间图2-3数据的采集;P3.7(RD)与DS12887的17脚DS相连,P3.3与DS12887的19脚IRQ相连,P2.7与DS12887的13脚CS相连;30脚ALE与DS12887的14脚AS相连。
单片机的第18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,XTAL2接外部晶振和微调电容的另一端。
对外接电容的值虽然没
图2-4主控电路及其最小系统电路图
有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。
因此,此系统电路的晶体振荡器的值为11.0592MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。
第9引脚为复位输入端,接上电容,电阻后构成上电复位电路。
20引脚为接地端,40引脚为电源端。
/EA端(31引脚)接+5V电压。
由此就构成了单片机主控模块的最小系统,如图2-4所示。
DS12887时钟芯片简介
DS12887是美国DALLAS公司生产的时钟日历芯片,具有24个引脚。
DS12887和MC146818B及DS1287管脚兼容。
内部自带锂电池,在没有外部电源的情况下可工作十年。
它有内部集成晶振。
可计算到2100年前的时、分、秒、星期、日、月、年七种日历信息,并带闰年补偿。
用2进制或BCD码代表日历或闹钟信息。
可选用夏令时模式。
可以选用MOTOROLA和INTEL两种总线模式。
它采用数据地址总线复用模式。
内键128字节RAM,这128字节RAM中前14字节是时钟控制寄存器。
其余为通用RAM。
它可以输出可编程方波。
它可以产生3种可编程中断;一,时间中断,可产生每秒一次直到每天一次中断;二,周期性中断,可产生122ms到500ms周期性中断;三,时间更新结束中断。
DS12887有24个引脚,其引脚如图2-5所示。
图2-5DS12887引脚图
MOT是总线类型选择管脚,当此脚接在VCC上时选择MOTOROLA总线方式,如果此脚接在电源地上或者不接时选择的是INTEL总线模式。
AD0-AD7是数据复用总线。
GND是电源地。
CS是片选信号。
AS是ALE信号管教。
R/W在INTEL总线模式下是WR。
DS在INTEL总线模式下是RD,当它有效时表示DS12887正在往总线输出数据。
RD信号在贮存器芯片上被称为OE信号线。
RESET是复位信号,复位信号对日历、时间、RAM无效,系统上电时,复位信号要保持200ms以上DS12887芯片才能正常工作。
当复位引脚电平为低并且VCC高于4.5V时,以下情况发生。
周期中断允许位清零,闹钟中断允许位清零,更新完成中断标志位清零,中断请求状态标志位清零,周期中断标志位清零,DS12887不可以操作,闹钟中断标志位清零,IRQ呈高阻状态,方波输出允许位清零,更新完成中断允许位清零。
IRQ是中断请求输出,当中断状态位和中断允许位有效时,IRQ保持低电平。
复位和读C寄存器都可以清除中断信号。
没有中断时IRQ保持高阻状态,其它中断源还可以接到中断上。
另外由于IRQ是漏极输出,因此需要外接上拉电阻。
SQW是方波输出引脚,当电源电压低于4.25V时此脚没有作用。
VCC是电源引脚。
NC是空引脚。
DS12887由晶振,周期中断/方波选择器,方波输出,寄存器ABCD,时钟/日历/闹钟RAM,114字节通用RAM,BCD/二进制数码累加器,时钟/日历更新,总线选择,电源开关和写保护这些部分组成。
当VCC高于4.25V200ms之后,芯片可以被外部程序操作。
当VCC低于4.25V时,芯片处于写保护状态,所有的输入均无效,同时所有输出呈高阻状态,当VCC低于3V时,DS12887自动将供电方式改为由内部电池供电。
DS12887地址包括114字节通用RAM,10字节用于记录时间,日历,闹钟信息的RAM和4字节的控制、状态RAM.所有的字节都可以在除以下的情况下直接读写。
1,寄存器C、D为只读,寄存器A的第七位为只读,秒字节的高位为只读。
时间,日历,闹钟的信息所在的寄存器的详细分布图如表2-1所示
地址
功能
十进制范围
范围
二进制模式
BCD模式
0
秒
0-59
00-3B
00-59
1
秒闹钟
0-59
00-3B
00-59
2
分钟
0-59
00-3B
00-59
3
分钟闹钟
0-59
00-3B
00-59
4
小时(12时制)
1-12
01-0CAM,81-8CPM
01-12AM,81-92PM
小时(24时制)
0-23
00-17
00-23
5
时闹钟(12时制)
1-12
01-0CAM,81-8CPM
01-12AM,81-92PM
时闹钟(24时制)
0-23
00-17
00-23
6
星期(星期天=1)
1-7
00-07
00-07
7
日期
1-31
01-1F
01-31
8
月份
1-12
01-0C
01-12
9
年
0-99
00-63
00-99
表2-1,时间,日历,闹钟寄存器地址分布表
控制、状态寄存器及其功能描述:
寄存器A
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
UIP
DV2
DV1
DV0
RS3
RS2
RS1
RS0
UIP:
更新进行标志。
DV2-DV0:
为010时晶振工作,其他组合停止。
RS3-RS0:
频率选择。
寄存器B
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
SET
PIE
AIE
UIE
SQWE
DM
24/12
DSE
SET:
为1时禁止更新。
为0时正常。
PIE:
为1时周期中断允许。
AIE:
为1时警报中断允许。
UIE:
为1时更新结束中断允许。
SQWE:
为1时方波输出允许。
DM:
为0时时间为BCD码,为1时为二进制。
24/12:
为1时是24小时进制。
为0时是12小时进制。
DSE:
置0。
寄存器C
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
IRQF
PF
AF
UF
0
0
0
0
IRQF:
中断申请标志。
PF:
周期中断标志。
AF:
警报中断标志。
UF:
更新结束中断标志。
寄存器D
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
VRT
0
0
0
0
0
0
0
VRT:
为0时表示内部锂电池耗尽。
时钟模块
时钟模块DS12887的AD口与单片机的P0口相连,进行时间、日历数据输出。
其它各功能端口的连接在主控电路中已有描述,不在赘述。
另外DS12887的12脚与电源地相连,24脚与电源相连。
总线选择端口MOT端与电源地相连。
电路图如图2-8所示。
图2-8时钟模块电路
按键电路的设计
根据设计要求,系统的按键电路用4个按键和一个拨码开关就可以进行对时间的调整,按键就采用最简单的点动式按钮,由单片机的I/O进行扫描,来实现扫描按键功能。
其中,时间调整按钮与单片机STC89C52的P3.5相连,其功能是当按下此键时,开始调整年、月、日、星期、时、分、秒,没按一次就改变一个相应的要改变的位;闹钟调整按钮与单片机STC89C52的P3.4相连,其功能是当按下此键时开始进行闹钟调整,并且每按一次就改变一次要调整的位;加法按钮与单片机STC89C52的P2.5连,其功能是每按一次此键就将相应的要改变的位的数值加一;减法按钮与单片机STC89C52的P2.6连,其功能是每按下一次此键就将要改变的位的数值减一;近远程选择按钮与STC89C52的P2.4相连。
电路图如图2-9所示。
图2-9按键电路
图形点阵液晶显示器12864简介
点阵LCD的显示原理:
在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。
对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。
而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。
而剩下的低128位则留给英文字符使用,即英文的内码[15]。
那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?
这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状。
12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。
可完成图形显示,也可以显示8×4个(16×16点阵)汉字。
12864LCD的引脚说明如表2-2所示。
表2-2液晶模块12864的管脚说明
管脚号
管脚名称
LEVER
管脚功能描述
1
VSS
0
电源地
2
VDD
+5.0V
电源电压
3
V0
-
液晶显示器驱动电压
4
D/I(RS)
H/L
D/I=“H”,表示DB7∽DB0为显示数据
D/I=“L”,表示DB7∽DB0为显示指令数据
5
R/W
H/L
R/W=“H”,E=“H”数据被读到DB7∽DB0
R/W=“L”,E=“H→L”数据被写到IR或DR
6
E
H/L
R/W=“L”,E信号下降沿锁存DB7∽DB0
R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0
7
DB0
H/L
数据线
8
DB1
H/L
数据线
9
DB2
H/L
数据线
10
DB3
H/L
数据线
11
DB4
H/L
数据线
12
DB5
H/L
数据线
13
DB6
H/L
数据线
14
DB7
H/L
数据线
15
CS1
H/L
H:
选择芯片(右半屏)信号
16
CS2
H/L
H:
选择芯片(左半屏)信号
17
RET
H/L
复位信号,低电平复位
18
VOUT
-10V
LCD驱动负电压
19
LED+
-
LED背光板电源
20
LED-
-
LED背光板电源
液晶显示模块的特殊寄存器说明:
在使用12864LCD前先必须了解以下功能器件才能进行编程。
12864内部功能器件及相关功能如下:
1.指令寄存器(IR)
IR是用于寄存指令码,与数据寄存器数据相对应。
当D/I=0时,在E信号下降沿的作用下,指令码写入IR。
2.数据寄存器(DR)
DR是用于寄存数据的,与指令寄存器寄存指令相对应。
当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。
DR和DDRAM之间的数据传输是模块内部自动执行的。
3.忙标志:
BF
BF标志提供内部工作情况。
BF=1表示模块在内部操作,此时模块不接受外部指令和数据。
BF=0时,模块为准备状态,随时可接受外部指令和数据。
利用STATUSREAD指令,可以将BF读到DB7总线,从检验模块之工作状态。
4.显示控制触发器DFF
此触发器是用于模块屏幕显示开和关的控制。
DFF=1为开显示(DISPLAYOFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF)。
DDF的状态是指令DISPLAYON/OFF和RST信号控制的。
5.XY地址计数器
XY地址计数器是一个9位计数器。
高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。
X地址计数器是没有记数功能的,只能用指令设置。
Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。
6.显示数据RAM(DDRAM)
DDRAM是存储图形显示数据的。
数据为1表示显示选择,数据为0表示显示非选择。
DDRAM与地址和显示位置的关系见DDRAM地址表。
7.Z地址计数器
Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。
当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。
Z地址计数器可以用指令DISPLAYSTARTLINE预置。
因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。
此模块的DDRAM共64行,屏幕可以循环滚动显示64行。
8.字符显示
FYD12864-0402B每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。
FYD12864-0402B内部提供128×2字节的字符显示RAM缓冲区(DDRAM)。
字符显示是通过将字符显示编码写入该字符显示RAM实现的。
根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。
三种不同字符/字型的选择编码范围为:
0000~0006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H~7FH显示半宽ASCII码字符,A1A0H~F7FFH显示8192种GB2312中文字库字形。
字符显示RAM在液晶模块中的地址80H~9FH。
字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如表2-3所示。
表2-3字符显示RAM在液晶模块中的地址表
80H
81H
82H
83H
84H
85H
86H
87H
90H
91H
92H
93H
94H
95H
96H
97H
88H
89H
8AH
8BH
8CH
8DH
8EH
8FH
98H
99H
9AH
9BH
9CH
9DH
9EH
9FH
显示模块电路
显示模块电路如图2-10所示,液晶模块的1管脚接电源地,15管脚用于接电源地,19管脚用于接电源地。
2管脚接电源给液晶显示器供电,3管脚接电源用于提供液晶显示器显示驱动电压,17管脚接电源,20管脚接电源用与提供背景光。
4管脚接单片机的P1.3用于接收数据或者指令,5管脚接单片机的P1.4选择数据被读写到什么位置,6管脚接单片机的P1.5用于提供锁存信号。
图2-10显示模块
六、系统软件设计框图
软件是系统的主要组成部分,也是整个调试的重点和难点工作。
本设计采用了汇编语言,因为汇编语言更接近机器语言,可以直接存取寄存器和I/O,编写的代码可以非常精确的被执行,可以编写出比一般编译系统高效的代码,可以作为不同语言或不同标准的接口。
因此,依据课题设计的要求,采用汇编语言进行软件编程,用模块化程序设计思想,将软件划分成若干模块单元;包括:
DS12887时钟显示模块、延时等模块,键盘扫描子程序,按键处理子程序模块,通信中断子程序,
主程序的主要功能是显示日期时间信息。
在主程序中,系统上电自动复位以后首先进行系统的液晶显示、时钟芯片DS12887初始化,然后读写日期、时间等信息,待数据读写结束后显示时钟。
主程序流程如图3-1所示。
图3-1主程序流程图
主程序说明,当主程序运行时,先将液晶显示器清屏,然后将单片机和时钟日历芯片DS12887初始化,即将时钟的初始时间设定为2005年月日
首先对时钟芯片DS12887初始化,经过对状态寄存器判断之后,对DS12887进行读操作,读操作时利用时钟日历地址相邻的特点,直接使地址增加,随后判断数据是否读完了。
若读完了,则返回主程序;若没有读完,则继续增加地址,直到读数据完成为止。
如图3-2所示。
图3-2DS12887时钟芯片的读操作流程图
本设计用的液晶模块是12864液晶模块,这个模块可以进行串口通信也可以进行并口通信,由于单片机口线限制,在这里采用了串口设计思路。
本设计采用了分屏显示的原理,在时间显示时显示屏一,在时间调整时显示屏二,其流程图分别如图3-3、3-4所示。
图3-3时间显示,屏一显示流程图
在屏一显示流程图中,显示设置液晶显示设置为全屏显示,显示界面没有光标显示,年月日的显示从第二行第一个字符开始,时分秒的显示从第三行第一个字符开始。
图3-4时间调整显示,屏二显示流程图
在显示屏二时应先判断是否有调整时间的请求,如果有时间调整的要求即有按键按下则显示此屏,显示此屏时先进行显示设置,因为要调整时间因此要用光标表示出要调整的位,因此显示设置中要调整出光标,调整时间时先调出当前时间,从当前时间开始调整,然后判断按键,根据按键来调整时间,调整完成之后再返回时间显示即显示屏一。
按键调整程序模块是用来调整时间的,当P3.4按键按下时进入时间调整界面,再按P3.4就会依次改变要调整的参量,依次调整的参量为年、月、日、时、分、秒。
当选择好了要调整的位后再按P3.5就会实现相应位的加一操作,按P2.6就会实现相应位的减一操作。
当调整完毕之后,再按P3.4键就会返回时间显示界面,从刚才调整好的时间开始显示、计时。
其流程图如图3-5所示
图3-5按键调整模块流程图
七、心得体会
1、本文的主要工作和成果
系统采用了以广泛使用的单片机STC89C52为核心,配合时钟芯片DS12887,并采用LCD显示电路,键盘扫描电路所设计的一款可以进行远程调控的时钟电路。
主要工作和成果如下:
(1)介绍基于单片机的时钟电路的设计方法,并对基于单片机的时钟的应用进行了初步探
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计