毕业设计论文:基于单片机电铃系统设计[管理资料]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南信息职业技术学院毕业(论文)设计
答辩申请书
课题电铃系统设计
一、课题(论文)提纲
二、内容摘要
三、参考文献
注:学生凭此申请书和设计(论文)样文参加答辩
湖南信息职业技术学院教务处制
目录
摘要: (3)
关键词 (3)
一、绪论................................................................................................................... 错误!未定义书签。
二、总体方案设计 (8)
2.1芯片比较 (8)
单片机选型 (8)
液晶显示模块的选择 (8)
时钟芯片的选择 (10)
语音芯片的选择 (11)
2.2总体设计与系统原理 (13)
三、硬件设计 (13)
、单片机部分 (13)
STC89C52 (13)
(16)
、液晶显示模块 (17)
、时钟芯片部分 (22)
、电源与复位电路部分 (24)
电源部分 (24)
(24)
、电铃和音乐芯片部分 (25)
、按键部分 (25)
四、软件设计 (26)
五、系统调试与仿真图 (29)
、软件调试 (29)
、系统调试 (22)
、仿真图 (30)
六、总结................................................................................................................... 错误!未定义书签。
参考文献................................................................................................................... 错误!未定义书签。
单片机电铃系统设计
电子信息0601班方超 48号
摘要:
基于目前广泛应用的传统电铃系统噪声大,声音刺耳,不支持在线编程,用户改变响铃时间复杂。
在此基础上,我采用STC89C52单片机设计了一套智能自动打铃系统,可控制外围器件的一种音乐电铃,可根据学校等单位的作息制度自动打铃,从而有效地解决上述问题,有很好的实用价值。
该系统由三部分组成:程序控制、单片机硬件电路和仿真部分。
电源由定电压模块220V交流转12V在由7805转5V直流电压分别为各部分电路提供电源。
程序控制部分由时钟函数、LCD1602函数、键盘函数、主函数组成。
硬件部分由四个模块组成:单片机最小系统、时钟芯片DS1302、显示模块LCD1602、语音芯片AP8902。
实时时钟随时与CPU内定时数据表进行比较,当二者相吻合时,,再由语音芯片输出音乐并经过LM386处理在直接接到功放设备输出铃声,完成自动定时响铃任务。
关键词
单片机、C语言、流程、仿真
一绪论
1. 1 课题的提出及意义
单片机作息时间控制实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,实现代学校必不可少的设备。
1. 2 设计的任务及要求
1.作息时间能控制电铃
2.作息时间能启动和关闭放音机
单片机作息时间控制的功能如下:
●使用液晶屏显示现在的时间。
●使用时钟芯片可长时无人置守的响铃系统。
●显示格式为“年月日周时分秒”。
●具有复位功能,以及时间、星期调节功能。
●,可以控制音乐开启和关闭。
●具有多次定时响铃功能响铃时间、方式、时间长短可调。
二总体方案设计
2. 1 芯片比较
单片机选型
当今单片机厂商琳琅满目,产品性能各异。
常用的单片机有很多种:Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列、Microchip公司的PIC系列、Zilog 的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。
我们最终选用了ATMEL公司的STC89C52单片机。
STC89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和FLASH存储单元,功能强大STC89C52单片机适用于许多较为复杂控制应用场合。
LCD显示器芯片的选择常用的显示器芯片有HD44780、JHD12864E、JHD0801A、VP19264、MOBI2006、LCD1602等,由于HD44780、JHD12864E、VP19264、MOBI2006芯片价格批量生产时购买价格以及在电铃系统使用过程实际作用但LCD1602在系统设计中具有高性能价格比与技术支持强因此选用LCD1602液晶显示模块,下面对LCD1602作一下介绍。
特点
(1)LCD1602液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块;
(2)1602LCD又可分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别;
(3)主要技术参数:显示容量:16×2个字符、芯片工作电压:—、工作电流:() 模块最佳工作电压:、字符尺寸:×(W×H)mm
引脚功能说明
第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位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
工作原理简介
字符型LCD液晶显示模块是专用于显示字母、数字、符号等的点阵型液晶显示模块。
字符位可以是5*7或5*11等点阵组成。
每一个点阵字符位都可以显示一个字符,内置HD44780控制IC专用于字符显示的液晶驱动及控制。
HD44780的显示缓冲区及用户自定义的字符发生器CGRAM全部内藏在芯片内。
HD44780具有简单而功能较强的指令集,可实现字符移动、闪烁等显示功能。
HD44780的控制部是液晶显示模块的核心,它控制着HD44780的工作时序和各功能的实现,具有驱动40*16点阵的液晶显示器件的能力
AT89C51与LCD硬件原理图如下
时钟芯片的选择
为实现长时无人置守的响铃系统,我们对STC89C52进行外围扩展。
常用的时钟芯片有很多,如DS1302、 DS1307、PCF8485。
经过比较选择,最终选用了DALLAS公司的DS1302。
DS1302介绍:是一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
而且它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,~。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
DS1302在电铃系统中的硬件原理图
DS1302与CPU的连接仅需要三条线,即SCLK(7)、I/O(6)、RST(5)。
为避免电铃铃声优美,高性价比与技术支持等方面在三种型号中选用一次性(OTP): ISD系列从10s到16分钟的一系列芯片,以FLASHRAM闪烁存储器为IC为介质,断电后语音还能保存。
特点:内部没有单片机,控制较麻烦;容易丢失数据;芯片和编程器价格都较高。
一次性(OTP)型APLUS系列:芯片内部是PROM存储器,将语音文件烧录进去,以后不可以更改。
有API8108(10s可分8段),API8208(20s可分8段),API840N(40s可分32段), AP8821(21s最大15段),AP8842(42s最大30段)其中AP8821和AP8902可以选择单片机并口控制和按键控制。
此系列特点:控制较灵活,价格较低。
掩膜型(MASK)型:标准片(标准声源型):如各种报警声,倒车语音等大批量生产出来的标准品,价格非常便宜,此类特点是不能根据自己的情况更改,包括音质,音调,控制方式等。
AP8902工作原理与硬件原理图
控制音乐响铃电路由语音芯片AP8902、音频放大LM386组成其中音乐芯片AP89042是一次性编程(OTP)语音芯片是采用4-bit ADPCM 或 8-bit PCM压缩方式。
在6K 采样率下时间长度可达到42秒;可用按键或CPU方式触发,最大可以触发32段;3个输出端可以选择LED、STOP、BUSY不同组合;声音输出可外接三极管放大输出(COUT)或直接推喇叭(VOUT)方式。
AP89042工作电压:,静态电流小于5uA。
2. 2总体设计与系统原理
经比较我们选定单片机芯片为STC89C52,时钟芯片为DS1302。
在确定系统的大体形式之后,画出本系统的结构布局,方框原理如下。
三硬件设计
3. 1 单片机部分
STC89C52
特点:
●与MCS-51产品指令和引脚完全兼容
● 8K字节可重擦写FLASH闪存
● 1000次擦写周期
●全静态操作:0Hz-80MHz
●三级加密程序存储器
● 512字节内部RAM
● 32个可编程I/O口线
● 3个16位定时/计数器
● 8个中断源
●可编程串行UART通道
●低功耗空闲和掉电模式
功能特性概述:
STC89C52提供以下标准功能:8K字节FLASH闪存,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,STC89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
STC89C52的芯片管脚图如图3-1
图3-1
引脚功能说明:
VCC——电源电压
GND——地
P0口——P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口——P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级
可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输出口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
与AT89C51不同之处是,()和输入(),参见下表。
FLASH编程和程序校验期间,P1接收低8位地址。
P2口——P2是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR 指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
FLASH编程或校验时,P2亦接收高位地址和一些控制信号。
P3口——P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
单片机硬件资源分配
P0 连接LCD1602上D0-D7
P2.0 连接按键
P2.1 连接按键
P2.2 连接按键
连接LCD1602的RS端
连接LCD1602的RW端
连接LCD1602的E端
连接AP8902响铃控制端
连接DS1302的/RST端
连接DS1302的SCLK端
连接DS1302的I/O端
3. 2 液晶显示模块
在上一章我已选定了液晶显示模块LCD1602,下面对其作进一步的介绍:一般1602字符型液晶显示器实物如下图
1602LCD的基本参数及引脚功能
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:
1602LCD主要技术参数:
显示容量:16×2个字符
芯片工作电压:—
工作电流:()
模块最佳工作电压:
字符尺寸:×(W×H)mm
引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表所示:
编号符号引脚说明编号符号引脚说明
1 VSS 电源地9 D
2 数据
2 VDD 电源正极10 D
3 数据
3 VL 液晶显示偏压11 D
4 数据
4 RS 数据/命令选择12 D
5 数据
5 R/W 读/写选择13 D
6 数据
6 E 使能信号14 D
7 数据
7 D0 数据15 BLA 背光源正极
8 D1 数据16 BLK 背光源负极
1602LCD的指令说明及时序
1602液晶模块内部的控制器共有11条控制指令,如表所示:
现的。
(说明:1为高电平、0为低电平)
指令1:清显示,指令码01H,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H。
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:显示开关控制。
D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址设置。
指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
与HD44780相兼容的芯片时序表如下:
读状态输入RS=L,R/W=H,E=H 输出D0—D7=状态字
输出无
写指令输入RS=L,R/W=L,D0—D7=指令码,E=高
脉冲
读数据输入RS=H,R/W=H,E=H 输出D0—D7=数据
输出无
写数据输入RS=H,R/W=L,D0—D7=数据,E=高脉
冲
读写操作时序如下图所示:
读操作时序
写操作时序
1602LCD的RAM地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下图是1602的内部显示地址。
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)
+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
图10-58 字符代码与图形对应图1602LCD的一般初始化(复位)过程
延时15mS
写指令38H(不检测忙信号)
延时5mS
写指令38H(不检测忙信号)
延时5mS
写指令38H(不检测忙信号)
以后每次写指令、读/写数据操作均需要检测忙信号
写指令38H:显示模式设置
写指令08H:显示关闭
写指令01H:显示清屏
写指令06H:显示光标移动设置
写指令0CH:显示开及光标设置
3. 3 时钟芯片部分
,利用该系统具有硬件结构简单、软件编程容易和价格低廉的特点。
下面简单的介绍一下DS1302。
特点
(1)数据输入输出(I/O)
(2) DS1302的寄存器
引脚图如图
说明:
DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。
在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。
若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK 周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。
DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。
要特别说明的是备用电源B1,可以用电池或者超级电容器()。
虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。
如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。
100 μF就可以保证1小时的正常走时。
DS1302在第一次加电后,必须进行初始化操作。
初始化后就可以按正常方
法调整时间。
3. 4 电源与复位电路部分
电源部分
本次设计应用的电压有+5V。
220V交流电源经变压器,整流,滤波后分别进入芯片7805,产生+5V,这些电源的具体应用情况如下:
+5V电源:单片机及外围电路所用电源
+9V电源:压电喇叭所用电源
当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。
上电复位要求接通电源后,自动实现复位操作。
常用的上电复位电路如图 (a)中左图所示。
图中电容C1和电阻R1对电源十5V来说构成微分电路。
上电后,保持RST一段高电平时间,由于单片机内的等效电阻的作用,不用图中电阻R1,也能达到上电复位的操作功能,如图 (a)中右图所示。
要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。
常用的上电或开关复位电路如图 (b)所示。
上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。
当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。
根据实际操作的经验,下面给出这两种复位电路的电容、电
阻参考值。
图 (a)中:Cl=10-30uF,R1=1kΩ
图 (b)中:C2=1uF,Rl=lkΩ,R2=10kΩ
本系统的复位电路采用上电复位。
电铃和音乐芯片部分
当定时时间到了,,时间到时发出一阵音乐,按下K4键可以停止音乐或20S 自动后停止。
也可以按键5,由按键5可以控制音乐。
按键部分
按键设定部分比较简单,因为本系统按键少,所以在设计上采用了独立按键方式,程序的编制上也采用了简单的扫描方式。
程序执行后工作指示灯LCD闪动,表示程序开始执行,LCD显示“00”,按下操作键K1-K4动作如下:
●操作键K1:设置现在的时间;
●操作键K2:显示电铃设置时间;
●操作键K3:设置电铃时间;
●操作键K4:手动电铃ON/OFF设置开关;
设置现在的时间或是闹铃时间设置如下:
●操作键K1:设整时;
●操作键K2:设整分;
●操作键K3:设置完成;
至此,我们分七部分将硬件电路介绍完毕,从下一章,我将介绍该仪器的软件设计。
四软件设计
遵循结构化程序的设计原则,按结构化程序设计设计方法设计出的程序具有明显的优点,其一,程序易于理解、使用和维护。
程序员采用结构化编程方法,便于控制、降低程序的复杂性,应此容易编写程序。
便于验证程序的正确性,结构化程序清晰易读,可理解性好,程序员能够逐步求精、程序证明和测试,以确保程序的正确性,程序容易阅读并被人理解,便于用户使用和维护。
其二,提高了编程工作效率,降低了软件开发成本。
由于结构化编程方法能够把错误控制到最低限度,因此能够减少调试和查错时间。
结构化程序是由一些为数不多的基本结构模块组成,这些模块甚至可以由机器自动组成,从而极大地减轻了编程工作量。
在这次单片机电铃系统程序设计中我基本将程序分为主程序模块、中断定时模块、键盘扫描模块、LCD1602显示模块、DS1302时钟模块等等。
主程序流程图
、单片机电铃系统程序
主程序
#include <> //注
#include <>
#include ""
#include ""
#include ""
#include ""
#define uchar unsigned char
#define uint unsigned int
sbit XL = P1^0; //响铃传送数据IO口
uchar
xiangling[33]={0,0,7,0,0,8,0,0,9,0,0,10,0,0,11,0,0,12,0,0,13,0,0,14,0 ,0,15};
uchar m=0,k ;
uchar xl_i0;
void show_time(); //液晶显示程序
void show_time() //液晶显示程序
{
DS1302_GetTime(&CurrentTime); //获取时钟芯片的时间数据
TimeToStr(&CurrentTime); //时间数据转换液晶字符
DateToStr(&CurrentTime); //日期数据转换液晶字符
GotoXY(12,1); //液晶字符显示位置
GotoXY(0,1);
Print(); //显示时间
GotoXY(0,0);
Print(); //显示日期
GotoXY(15,0);
Print(week_value); //显示星期
GotoXY(11,0);
Print("Week"); //在液晶上显示字母 week
Delay1ms(400); //扫描延时
}
main()
{
TMOD=0X00;
TH0=0x0C;
TL0=0x78;
IE=0x8a;
flag=1; //时钟停止标志
LCD_Initial(); //液晶初始化
Initial_DS1302(); //时钟芯片初始化
up_flag=0;
down_flag=0;
done=0; //进入默认液晶显示
wireless_1=0;
wireless_2=0;
wireless_3=0;
wireless_4=0;
while(1)
{
while(done==1)
keydone(); //进入调整模式
while(done==0)
{
show_time(); //液晶显示数据
flag=0;
Setkey(); //扫描各功能键
}
}
}
void Interr()interrupt 1 using 0// 5ms 定时器0,寄存器0 { unsigned char h;
TR0=0;
TH0=0x0C;
TL0=0x78;
TR0=1;
h=m;
k++;
if(==xiangling[0]&&
==xiangling[++m]&&
==xiangling[++m])
{
XL = 1;
xl_i0=1; //中断外标识用来改变J 和低电位时间
k=0;
return;//返回
}
else m=h;
if(xl_i0=1&&k>200)//响铃时间判断函数
{
XL= 0;
xl_i0=0;
k=0;
}
}
五系统调试与仿真图
5.1 软件调试
采用模块化程序设计思想,首先调试子程序,然后逐级叠加调试。
5.2 系统调试
软硬件结合在一起,看是否能工作正常,由于在模块调试过程中,我们把软硬件所出现的错误都调整过来了,所以系统调试通过。
5.2 仿真图
六总结
该电铃系统吸取了他人的电铃优点的同时进行了进一步的优化,与其他电铃系统相比,该系统硬件上简单化大大减少了生产的成本把大部分工作交由软件完成。
并且支持在线编程,音乐优美、使用了C语言编写程序使程序更加简洁紧凑容易理解,系统中节约了大量的硬件资源只要对程序进行很小的修改和扩展接口就能开发出新的产品具有很大的扩充功能。
并且在后期的仿真为系统中稳定提供了保障,不需接任何硬件就可进行调试,用以替代在线仿真器。
只要在PC机上运行仿真系统软件,就可以对用户系统的目标码程序进行仿真跟踪调试,但由于初次制作产品中难免有不足点比如:单片机抗干扰方面未考虑引脚所产生干扰,
改进方法可在实际应用中单片机所有引脚加上拉电阻;电源部分使用隔离电源定电压模块以及过压保护电路可有效避免干扰;软件陷进,可在跳转等函数前加NOP指令;响铃时间表未完全完善,可在实际应用中添加响铃时间表通过按键切换。
总之,通过这次毕业论文,掌握了单片机、LCD显示屏、I2C等知识,使我对所学过的知识有所巩固和提高,并且让我对当今单片机、LCD显示屏、I2C的最新发展技术有所了解。
在整个过程中,我学到了新知识,增长了见识。
在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。
在此更要感谢我的指导老师和专业老师,是你们的细心指导和关怀,使我能够顺利的完成毕业论文。
在我的学业和论文的研究工作中无不倾注着老师们辛勤的汗水和心血。
老师的严谨治学态度、渊博的知识、无私的奉献精神使我深受启迪。
从尊敬的指导老师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。
在此我要向我的指导老师致以最衷心的感谢和深深的敬意。
参考文献
[1] 胡汉才编著,《单片机原理及其接口技术》清华大学出版社,1996年
[2] 徐爱均编著,《智能化仪表原理与设计》北京航空大学出版社,1996年
[3] 公茂法等编著,《单片机人机接口实力集》北京航空大学出版社,1998年
[4] 李朝青编著,《单片机原理及其接口技术》北京航空大学出版社,1998年
[5] 邬宽明编著,《单片机外围器件实用手册》北京航空大学出版社,1998年
[6] 先锋工作室编著,《单片机程序设计实例》清华大学出版社,2002年
[7] 陈明荧编著,《8051单片机课程设计实训教材》,北京,清华大学出版社,2003年
[8] 肖玲妮,袁增贵编著,《Protel99SE印刷电路板设计教程》,北京,清华大学出版社,2003年
[9] LCD1602的中英文资料。