单片机课程设计.docx
- 文档编号:5429551
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:61
- 大小:191.73KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(61页珍藏版)》请在冰豆网上搜索。
单片机课程设计
广东海洋大学寸金学院
《单片机》课程设计
论文题目:
高精度大屏幕LED日历时钟设计
AhighprecisionandlargescreenLEDcalendarclockdesign
系别:
信息技术系
专业:
电气工程及其自动化
班级:
_________________
姓名:
______-
学号:
______________-
指导老师:
_______
职称:
_______
日期:
______________
摘要
在51单片机应用的系统中,常常需要记录实时的时间信息并长期保存。
比如,在数据采集时,对某些重要的信息不仅需要几路车其内容,还需要记录下改事件发生的准确时间;在银行营业大厅中使用的利率或汇率显示屏,上面除了需要显示利率或汇率等数据以外,还需要显示实时的时间信息,如年、月、日、星期、时间等。
本文用51单片机以及DS1302日历时钟芯片实现日历时钟的设计。
论文研究了DS1302日历时钟芯片的相关功能。
设计结果表明本文设计的基于DS1302的实时日历时钟显示系统完全能够满足设计要求
关键词:
DS1302,51单片机,LCD1062显示器
Abstract
51SCMapplicationsystem,oftenneedtorecordreal-timeinformationandlong-termpreservation.Forexample,whendatacollectionforsomeimportantinformationnotonlyneedtorecordthecontent,butalsorecordtheexacttimeoftheincident;thebankinghallintheuseofinterestrateorexchangeratedisplay,shownaboveinadditiontotheinterestrateorexchangeratesuchdata,italsoneedstoshowreal-timeinformation,suchasyear,month,date,dayandtime.Inthispaper,51MCUandthecalendarclockchipDS1302calendarclockdesign.
ThesisofthecalendarclockchipDS1302-relatedfunctions.DesignresultsshowthattheDS1302-baseddesignofreal-timecalendarclockdisplaysystemcancompletelymeetthedesignrequirements.
KeyWord:
DS1302,51Microcontroller,LCD1062display
第1章引言
1.1背景与意义
LED显示屏作为信息传播的一种重要手段,具有高亮度、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定等优点,再加上集成电路的使用,LED显示屏的外围电路变得越来越简单,性价比不断攀升,使得LED显示屏广泛用于各行各业以及公共场所,成为了信息化时代发布工具。
现在的LED大屏幕一般应用于汽车站、银行、机场、高速公路可变报版、体育场馆比赛等人多去关注的地方,所以这就要求LED大屏幕要设计得鲜明、显眼、耐用、三防能力强。
本次设计将LED大屏幕和电子日历时钟的结合起来,打破传统电子时钟只适用于个人的局限,将日历时钟推广到公共场合,更方便人们。
本次设计将采用51单片机、DS1302日历时钟芯片和1062显示器(代替LED大屏幕,因为两者都差不多)。
1.2论文设计
1.2.1系统设计实现的目标
本文是以实时时钟芯片DS1302和AT89C52单片机为主要研究对象,着重进行51单片机如何读取DS1302内部时钟信息的研究。
主要内容包括:
1)实时温度显示;
2)年月日星期时分秒显示;
3)年月日星期时分秒调整;
4)闹钟定时小时分钟和秒;
1.2.2系统的总体设计
采用AT89C52作为主控单片机,时钟模块选用DS1302作为时钟芯片,显示模块选用LCD1062,设置部分选用按键电路。
AT89C52与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
DS1302实时时钟芯片功能丰富,可以用来直接代替IBMPC上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887相兼容。
由于DS1302能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;DS1302中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。
用户还可对DS1302进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
该系统的系统框图如图1.1示:
图1-1系统框图
第2章需求分析
2.1需求分析
数字电子钟一个无处不在的电子产品,经过多年的发展技术已经相当成熟了。
随着电子技术的产业结构调整,生产工艺的飞速发展,市场对智能电子时钟的需求也越来越大,而现今市场上多采用的普通电子表,不具备报时和闹钟的双重功能。
日前应用广泛的数字钟大多用DS1302时钟芯片,以51单片机为核心控制部件制作的。
可以实现对年、月、日、周、时、分、秒精确计时,闰年补偿,可计时至2100年。
DS1302内嵌一个锂电池,可以保证在没有电源系统的情况下做到非易挥发性计时。
通过对相应管脚电平的简单设置,就可以轻松地适应Intel处理器或Motorola处理器的总线时序。
通过扩展还可以实现对电子钟所在地点的温度显示和智能闹钟功能,广泛用于车站、医院、机场、厕所等公共场所的时间显示。
该电子钟运用单片机进行设计制作,通过软件编程完成实时时间显示、按键调节时间,与数字电路电子钟相比具有设计电路简单、成本低的优点。
与机械钟表和3V电源半机械表相比,数字电子钟具有时间精确度高、停电不用校准、较少汞的使用等优点。
2.2可行性分析
通过可行性分析对所开发的高精度时钟从适应性、经济效益以及开发成本进行研究。
通过调查和高精度时钟设计目标分析,对要开发的硬件、软件从技术、经济、资源和管理进行可行性的分析。
以保证资源合理使用、避免失误和浪费。
●技术可行性:
通过51单片机来设计电子时钟,采用K软件来进行编程,可以实现小时、分、秒和年、月、日的显示的功能。
本次设计的电子时钟系统由时钟电路、显示电路、按键调整电路、定时报警电路四个部分组成。
本次报告需要介绍51单片机的基本原理,分析时钟芯片DS1302各个管脚的功能及它在设计电路中的作用工作原理及其软件设计过程以及1062显示屏在设计电路中的作用。
●经济可行性:
本次设计使用的单片机是51单片机,是集CPU、RAM/ROM,计数和多种接口于一体的微控制器。
自从单片机在20世纪70年代问世,以其极高的性能价格比,受到人们的重视和关注。
它体积小、重量轻、抗干扰能力强、环境要求不高、价格相对比较低廉、可靠性高、灵活性好、开发较为容易,广泛应用于智能生产和工业自动化上。
DS1302时钟芯片设计了一种具有校时和闹钟功能的高精度电子钟,DS1302可精确计时到2100年。
其价格一般为几元到几十元,性价比比较高。
●操作可行性:
51单片机通过软件编程,在1062显示屏上实现时、分、秒和年、月、日,并且按秒实时更新显示,利用时钟芯片DS1302来实现计时,定时功能,通过四个按键开关:
一个用于功能选择、一个用于闹钟查看、另外两个为数值增多和减少,来实现参数设置和调节功能,到达设置的闹钟时间,由蜂鸣器发声,起报警作用。
本次设计的电子时钟,走时精度较高,可满足多种场合的应用需求。
2.3开发及运行环境
本次设计包括51单片机、DS1302时钟芯片、1062显示屏、K软件。
下图为原理图
图2-1原理图
第3章硬件电路设计
3.1单片机最小系统
本系统以AT89C52单片机为核心,本系统选用11.0592MHZ的晶振,,使得单片机有合理的运行速度。
起振电容30pF对振荡器的频率高低、振荡器的稳定性和起振的快速性影响较合适,复位电路为按键高电平复位。
AT89C52单片机最小系统电路设计如图3-1所示。
图3-1单片机最小系统
3.2时钟芯片设计
3.2.1时钟芯片引脚介绍
1)时钟芯片DS1302,其引脚分布图如下所示
图3-2时钟引脚分布
MOT(1脚):
总线时序模式选择脚。
接高电平,选择MOTOROLA总线时;序;接低电平或悬空,择选择INTEL总线时序。
NC(2,3,16,20,21,22脚):
悬空脚。
AD0~AD7(4~11脚):
地址/地址数据复用总线引脚。
CS(13脚):
片选脚,低电平有效。
AS(14脚):
地址锁存输入脚。
下降沿时,地址被锁存,紧接着的上升沿来时地址被清除。
R/W(15脚):
读/写输入脚。
在选择MOTOROLA总线时序模式时,此引脚用于指示当前的读写周期,高电平指示当前为读周期,低电平指示当前为写周期;选择INTEL中线时序模式时,此引脚为低电平有效的输入脚,相当于通用RAM的写使能信号(/WE)
DS(17脚):
选择MOTOROLA总线时序模式时,此引脚为数据锁存脚;选择INTEL总线时序模式时,此引脚为读输入脚,低电平有效,相当于典型的内存的输出使能信号(/OE)
RESET(18脚):
复位脚,低电平有效,复位不会影响到时钟、日历和RAM。
IRQ(19脚):
中断申请输出脚,低电平有效,可作为微处理器的中断输入。
SQW(23脚):
方波信号输出脚。
可通过设置寄存器位SQWE关断此信号输出,此信号的输出频率也可通过对芯片内部的寄存器编程予以改变。
VCC(24脚):
+5v电源端。
3.2.24个控制寄存器介绍
DS1302有4个控制寄存器,在任何时间都可以进行访问,即使处于更新周期。
寄存器A字节的内容如下。
MSBLSB
UIP
DV2
DV1
DV0
RS3
RS2
RS1
RS0
UIP:
更新标志位。
为只读位且不受复位操作的影响,为1时,表示即将发生的数据更新;为0时,表示至少244US不会更新数据。
当UIP为0时,可以获得所有时钟、日历、闹钟信息。
将寄存器B中的SET位置1可以限制任何数据更新操作,并且清除UIP位。
DV2、DV1、DV0:
此3位为010时将打开晶振,并开始计时。
RES3、RES2、RES1、RES0:
用于设置周期性中断产生的时间周期和输出方波的频率。
寄存器B字节的内容如下。
MSBLSB
SET
PIE
AIE
UIE
SQWE
DM
24/12
DSE
SET:
设置位,可读写,不受复位操作影响。
为0时,不处于设置状态,芯片进行正常时间数据更新;为1时,抑制数据更新,可以通过程序设定时间和日历信息。
PIE:
周期性中断使能位,可读写,复位时清除此位。
为1时,允许寄存器C中的周期中断标志位PF,驱动/IRQ引脚为低产生中断信号输出,中断信号产生的周期由RS3~RE0决定。
AIE:
闹钟中断使能位,可读写。
为1时,允许寄存器C中的闹钟中断标志位AF、闹钟发生时就会通过/IRQ引脚产生中断输出。
UIE:
数据更新结束中断使能位,可读写。
复位或者SET位为1时清除此位。
为1时允许寄存器C中的更新结束标志UF,更新结束时就会通过/IRQ引脚产生中断输出。
SQWE:
方波使能位,可读写,复位时清除此位。
为0时,SQW引脚保持低电平;为1时,SQW引脚输出方波信号,其频率由RS3~RS0决定。
DM:
数据模式位,可读写,不受复位操作影响。
为0时,设置时间、日历信息为二进制数据;为1时,设置为BCD码数据。
24/12:
时间模式设置为,可读写,不受复位操作影响。
为0时,设置为12小时模式;为1时,设置为24小时模式。
DSE:
为1时,会引起两次特殊的时间更新;4月的第一个星期日凌晨1:
59:
59会直接更新到3:
00:
00,10月的最后一个星期日凌晨1:
59:
59会直接更新到1:
00:
00;为0时,时间信息正常更新,此位可读写,不受复位操作影响。
寄存器C字节内容如下。
MSBLSB
IRQF
PF
AF
UF
0
0
0
0
IQRF:
中断申请标志位。
为1时,/IRQ引脚为低,产生中断申请。
当PF、PIE为1时或者AF、ATE为1或者UF、UIE为1时,此位为1,否则置0.
PF:
中期中断标志位。
为1时,它是只读位,和PIE位状态无关,由复位操作或者寄存器C操作清除。
AF:
闹钟中断标志位。
为1时,表示当前时间和闹钟设定时间一至,由复位操作或读寄存器C操作清除。
UF:
数据更新结束中断标志位。
每个更新周期后此位都会置1,当UIE位位置1时,UF若为1就会引起IRQF置1,将驱动/IRQ引脚为低电平,申请中断。
此位由复位操作或读寄存器C操作清除。
寄存器D字节的内容如下。
MSBLSB
0
0
0
0
0
0
0
0
VRT;RAM和时间有效位。
用于指示和VBAT引脚连接的电池状态。
此位不可写,也不受操作为影响,正常情况下读取时总去为1,如果出现读取为0的情况,则表示电池耗尽,时间数据和RAM中的数据就会出现问题。
芯片DS12CR887的113字节普通RAM空间为非易失性RAM空间,他不专门用于某些特别功能,而是可以在未处理器程序中作为非易失性内存空间使用。
3.3按键调整电路
系统四个独立键盘均采用查询方式,S2用于设置年、月、日、时、分、秒、星期的数值加,以及闹钟开,S3用于设置年、月、日、时、分、秒、星期的数值减以及闹钟关,s1用于具体设置时钟位的切换,s4键用于设置闹钟。
其电路图如3-3所示:
图3-3按键电路连接
3.4电源模块
电子钟的电源为5伏直流电源,本设计中我使用的是5V的充电模块,电源模块的原理图如图3-4所示:
图3-4电源模块
第4章软件设计
4.1主程序流程
主程序开始初始化,并打开中断,然后执行扫描闹钟、键盘及读取18B20值。
当有S1键按下时,执行时钟设置,当有S4键按下时,则进入闹钟设置,无论是时钟还是闹钟,设置完后退出,温度、时钟恢复实时显示。
主程序流程图如图4-1所示:
图4-1主程序流程图
4.2时间设置子流程
通过单片机判断S1按下的次数来设置,由s1num标志位来记录次数,用if语句判断执行命令。
系统程序不断扫面键盘,当s1键按下后产生一个低电平,即s1num加一。
在调节时间之前首先进行各个变量初始化,及设置起始时间,同时为读取数据作准备。
当s1=1时进入秒的设置,地址指针指向miao显示位置处,通过两个if语句分别循环控制显示秒数的加和减。
当s1=2时,地址指针指向fen显示位置处,变量最大值为59。
当s1=3时,地址指针指向shi显示位置处,变量最大值设为23。
当s1=4时,地址指针指向week显示位置处,最大值设为7,1至7分别用MON、TUE、WED、THU、FRI、SAT、SUN字符串显示。
随着s2、s3值的的变化显示不同的字符串。
当s1=5时,地址指针指向day显示位置,变量最大值为31。
当s1=6时,地址指针指向month显示位置,变量最大值为12。
当s1=7时,地址指针指向year显示位置,最大值为99。
图4-2时间设置流程图
4.3闹钟设置子程序流程
时间设置程序流程图如图4-3所示。
在开始时间设置之前程序会关闭全局中断,直至设置结束,中断又会重新开启,进入计时状态。
闹钟的设置时通过S1键的按下次数来判断的。
当单片机检测到S4键按下一次时则进入闹钟设置界面,光标并自动跳到秒设置位置,可以对秒进行设置,当S1键依次按下1、2、3次时,则分别进入闹钟的秒、分、时关的设置。
:
图4-3闹钟设置流程图
4.4程序设计问题
4.4.1按键抖动问题
按键在按下时因为机械原因会产生抖动,抖动的后果就是当按下一次按键时因为抖动的原因让系统读取到多次的按键按下的次数,由此导致设置时出现错误。
解决的方法如下:
当按键按下时读取按键键值,若5ms后键值和按下是相等,则确认为有效按键,以此消除按键抖动带来的问题。
4.4.2蜂鸣器设置
蜂鸣器报警时,设置响100毫秒,停100毫秒,循环响应,产生滴滴的声音。
4.4.3液晶显示器设置
初始化设置
显示模式设置
写入指令码write_com(0x38),设置功能16*2显示,5*7点阵,8位数据接口
显示/开关及光标设置
8)写入指令码write_com(0x0c),设置开显示,不显示光标,光标不闪烁。
16)写入指令码write_com(0x06),设置当读或写一个字符后地址指针加一,且光标加一。
当写一个字符,整屏显示不移动。
显示清屏,写入指令码write_com(0x01)。
写入指令码函数write_com()写指令过程:
输入:
rs=0,D0-D7=指令码,E=高脉冲
写入数据函数write_date()写指令过程:
输入:
rs=1,D0-D7=数据,E=高脉冲
写入指令和数据时rw端已经接地。
数据指针设置指令码80H+地址码(0-27H)显示第一行的字符
指令码80H+地址码(40H-67H)显示的第二行字符
4.4.4中断设置
EA=1;//打开总中断
EX1=1;//打开外部中断
IT1=1;//设置负跳变沿触发中断
当闹钟到点时响应外部中1时间到时IRQ端从高阻态转为低电平,此时读一次c寄存器清除IRQ端的输出,等待下一次定时。
voidexter()interrupt2//外部中断1服务程序
{
ucharc;//进入中断表示闹钟时间到
flag_ri=1;//设置标志位,用以大程序中报警
c=read_ds(0x0c);//读取12c887c寄存器表示响应了中端
}
第5章测试
5.1测试软件介绍
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
KeilC51软件是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。
Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:
μVisionIDE集成开发环境C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及Monitor-51、RTX51实时操作系统。
5.2软件调试
应用Keil进行软件仿真开发的主要步骤为:
编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试。
Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。
工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。
首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project-NewProject…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。
这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择“AddFiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。
加入文件后点close返回主界面,展开“SourceGroup1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。
紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-OptionforTarget‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“CreatHexFi”;其它选项卡内容一般可取默认值。
工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。
成功编译/汇编、连接后,选择菜单Debug-Start/StopDebugSession(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。
Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-StepOver)、全速执行等多种运行方式进行程序调试。
如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-InlineAssambly…),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。
对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug-Insert/RemoveBreakpoint或Debug-Breakpoints…等)。
在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。
结束语
本文是一篇关于用单片机实现高精度日历时钟论文,设计中使用到了AT89C52和1602液晶显示屏。
在设计过程中我通过在网上和图书馆查阅资料,收集了关于单片机和液晶显示方面的资料,通过对这些资料的学习,我了解了单片机的基本结构,使用和单片机在生活和生产中所发挥的作用;液晶显示的原理和使用。
本次毕业设计除了让我回顾以前学过的知识外,也使我学习到了新的东西。
这次毕业设计可以说是对四年的大学学习的总结。
本次毕业设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计