基于单片机的智能广播系统设计方案.doc_第1页
基于单片机的智能广播系统设计方案.doc_第2页
基于单片机的智能广播系统设计方案.doc_第3页
基于单片机的智能广播系统设计方案.doc_第4页
基于单片机的智能广播系统设计方案.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的智能广播系统设计方案第1章 绪论1.1 课题来源近年来,随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,带来了科研和生产的许多重大飞跃,有力地推动了社会的发展。单片机因其体积小, 集成度高,价格便宜,强大的功能而受到广大科技工作者的好评。随着其性能不断提高,应用范围愈来愈广,在计算机应用领域已占重要的地位。智能广播系统的设计就是微型计算机的一个典型的应用。传统的广播系统,一般需要由人工定时操作,且只能实现一路广播,功能少。为了解决这些问题,我们采用单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。针对全自动定时的操作,可以通过软件编程轻而易举的实现。本设计要求系统能够按照设定好的时间点进行自动打铃和广播,能够随时通过键盘对打铃和广播时间进行设置修改,采用液晶显示时间和设置修改菜单等信息,通过继电器控制电铃和广播。1.2 课题研究的目的意义21世纪科学技术的发展日新月异,科技的进步带动了信息技术的发展,我们已经进入了高速发展的信息时代,定时控制技术也成为当今科技的主流之一,被广泛地应用于生产的各个领域。对于本次设计,其目的在于:(1) 掌握实时时钟芯片DS1302的原理、性能、使用特点和方法,利用C51对系统进行编程。(2) 本课题综合了电子信息、计算机技术专业领域方方面面的知识,具有综合性、科学性、代表性,可全面检验和促进学生的理论素养和工作能力。(3) 本课题的研究可以更好地掌握基于单片机应用系统的分析与设计方法,培养创新意识、协作精神和理论联系实际的学风,提高电子产品研发素质、增强针对实际应用进行控制系统设计制作的能力。1.3 国内外现状及水平广播系统很早就在国内外出现了,但那时的广播系统,一般需要由人工定时操作,且只能实现一路广播,功能少。随着改革开放日益深入,由于经济的发展和技术的进步,广播系统的发展势头已十分突出,无论从国内或国际上来说,情况都发生了很大的变化。到目前为止,广播领域已经由传统广播向着数控智能化网络化数字化飞速发展。在我国,广播领域的发展分三个阶段,从最初的普通广播、手动广播、传统广播,到之后的智能化、自动化广播,近期及未来发展的是数字网络化广播。在校园广播的发展过程中,校园广播的应用性,从最开始单一的广播体操、广播通知活动,到现在已经应用到了它的功能化。目前已经应用到了语音教学设备、外语听力考试等功能,广播事业的发展会随着经济、政策、文化水平的不断提高而不断完善。1.4 课题研究内容本设计研究的主要内容如下:(1) 在广泛查阅定时控制理论和方法、自动定时控制技术等资料的基础上,根据控制要求及应用领域完成对系统方案的总体设计。本设计采用以AT89C52为核心的单片机系统,来实现对电铃和广播的自动定时控制的功能。(2) 研究比较各相关元器件的功能与特点,选择合适的元器件。(3) 系统硬件设计。系统硬件设计主要包括:时钟控制、键盘控制、液晶显示、智能控制等部分。(4) 系统软件设计。本课题采用C语言,利用Keil编译器进行编程及调试。主要研究DS1302与单片机的通信协议、时序及C51通用程序等。本设计的难点分为硬件和软件两个方面。其中硬件开发的难点在于各种元器件的选择和使用,如各种电阻、电容等的选择。软件开发的难点在于DS1302的时序,如果时序不正确,将无法读出正确的时间值,对系统产生很大的影响。57第2章 系统总体方案设计及论证2.1 方案设计方案一:本方案系统控制器由降压整流电路、延时电路、继电控制电路等组成。该子系统的定时电路是由IC(555)和R,C等元件组成的单稳态延时电路,定时时间决定于充放电时间常数RC的大小。当时钟控制系统将触发开关接通的瞬间,继电器吸合,电源电路接通,控制电铃和广播。 如图2.1所示: 降压整流电路延时电路继电器控制电路广播、电铃图2.1 方框图键盘控制AT89C52单片机LCD显示时钟芯片智能控制广播、电铃方案二:系统以AT89C52单片机为核心,主要由时钟芯片、LCD液晶显示、键盘、智能控制电路组成。以时钟芯片DS1302为定时控制装置,通过44键盘模块对时间进行设置,显示电路采用1602LCD模块,通过继电器控制电路通断,发光二极管的亮灭和扬声器的工作状态来显示。如图2.2所示:图2.2 系统方框图本课题采用时钟芯片DS1302作为时间控制器件,它具有如下特点:(1) 一种高性能、低功耗、带RAM的实时时钟电路。(2) 可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。(3) 采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。(4) DS1302内部有一个318的用于临时性存放数据的RAM寄存器。(5) 增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。2.2 方案论证比较以上两种方案,方案一虽容易实现,但控制和性能方面都很差,硬件设计任务也比较麻烦, 时钟控制系统要完成自动控制这个功能至少需要3个555定时电路,即自动延时开机电路,延时电路,自动延时关机电路。系统的逻辑状态以及相互转移更是复杂,而且定时不准确,不能很好地达到预期的目的。而用纯粹的数字电路或小规模的可编程逻辑电路来实现该系统有一定的困难,需要用中大规模的可编程逻辑电路,这样,系统的成本就会急剧上升。而方案二利用单片机丰富的I/O端口,及其控制的灵活性,使其实现自动按照所设置的时间准确的打上下课铃声,自动播放广播等,并可直接利用本系统键盘,能够对作息时间表随时编辑改写,以适应不同季节、不同地域、不同学校的作息时间或者临时作息时间的调整等。方案二利用时钟芯片DS1302为定时控制器件,该时钟电路提供单片机的工作时钟,可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,可采用突发方式一次传送多个字节的时钟信号或RAM数据。而传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。本设计采用方案二。第3章 电路设计3.1 工作原理基于DS1302实时时钟系统以AT89C52为核心器件,以KEIL为系统开发平台,用C语言进行程序设计,以PROTEUS作为仿真软件设计而成的。系统主要由时钟控制电路、液晶显示电路、键盘电路、单片机复位电路、继电器智能控制电路组成,系统原理图如图3.1所示:图3.1 系统原理图DS1302是数字时钟芯片,采用三线接口与CPU进行同步通信,以单总线技术,接收主机发送的命令,根据DS1302内部的协议进行相应的处理,将控制的时间以串口通信方式发送给主机1。主机按照通信协议发送命令(初始化命令、RAM命令)给DS1302,然后读取定时时间值,在内部进行相应的数值处理,通过字符液晶模块显示时间。在系统启动后,可以通过44键盘设置系统时间,当前时间值等于设置值时,单片机产生一个信号,使继电器开关闭合,发光二极管灯亮,液晶显示该实际时间值。为了方便观察,打铃的时间设置为10秒,常亮;广播时间设置为1分钟,通过发光二极管闪烁、扬声器报警仿真,从而实现了自动按照所设置的时间准确的打上下课铃声,自动播放广播。3.2 单片机AT89C52介绍AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程2。 AT89C52单片机引脚分布如图3.2:图3.2 AT89C52引脚分布3.2.1主要功能特性:(1) 兼容MCS51指令系统 ;(2) 8k可反复擦写(1000次)Flash ROM; (3) 32个双向I/O口 ;(4) 256x8bit内部RAM ;(5) 3个16位可编程定时/计数器中断; (6) 2个串行中断; (7) 2个外部中断源 ;(8) 共6个中断源 ;(9) 2个读写中断口线。 3.2.2 管脚说明VCC和VSS为供电端口,分别接+5V电源的正负端。GND:接地。P0 口:P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口,P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)3。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。参见表3.1:表3.1 P1.0和P1.1的第二功能引脚号功能特性P1.0T2,时钟输出P1.1T2EX(定时/计数器2)P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX RI 指令)时,P2 口输出P2 锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号3。P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能。P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令4。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。3.2.3 中断:AT89C52 共有6 个中断向量:两个外中断(INT0 和INT1),3 个定时器中断(定时器0、1、2)和串行口中断。这些中断源可通过分别设置专用寄存器IE 的置位或清0 来控制每一个中断的允许或禁止。IE 也有一个总禁止位EA,它能控制所有中断的允许或禁止。定时器2 的中断是由T2CON 中的TF2 和EXF2 逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除,事实上,服务程序需确定是TF2 或EXF2 产生中断,而由软件清除中断标志位4。3.2.4 时钟振荡器AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,外接石英晶体(或陶瓷谐振器)及电容C1、C2 接在放大器的反馈回路中构成并联振荡电路。电容一般使用30pF10pF,本设计的晶振电路采用33pF4。3.2.5 复位时钟电路AT89C52的复位是由外部的复位电路来实现的。当AT89C52通电时,时钟电路开始工作,在RST引脚上,只要出现24个时钟周期以上的高电平,就能确保单片机复位。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中,上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。时钟频率用6MHz时,C取22uF,R取1K。除了上电复位外,有时还需要按键手动复位。本设计用的是按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。按键手动复位电路见图3.3。时钟频率选用6MHz时,C3取22uF,R1取200,R2取1K5。图3.3 AT89C52复位电路3.3 DS1302与单片机接口设计3.3.1 DS1302的引脚功能在单片机应用系统中,常常需要记录实时的时间信息并且长期保存。在银行的大厅中看到显示汇率的显示屏,上面除了显示利率等信息外,还显示着当时的准确时间信息,其中包括年、月、日、星期、时间等,这就需要用到时钟芯片来精确地提供时间信息和保存当时时间数据。本次设计用的是DS1302涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需要用到3个口线:(1) RES(复位),(2) I/O(数据线),(3)SCLK(串行时钟)。DS1302工作时,功耗很低,保持数据和时钟信息时,功率小于1mW8。引脚图如下图3.4: 1 82 73 64 5Vcc2X1X2GNDVcc1SCLKI/ODS1302图3.4 DS1302引脚图DS1302的引脚功能描述见表3.2表3.2 DS1302引脚功能描述序号名称引脚功能描述1Vcc2主电源2X1振荡源, 外接32.768kHz晶振3X2振荡源, 外接32.768kHz晶振4GND地信号5复位脚6I/O数据输入/输出引脚7SCLK串行时钟8Vcc1后备电源3.3.2 DS1302与单片机接口电路如图3.5所示,为单片机与DS1302的接口电路。DS1302的脚接P2.5,SCLK脚接P2.6,I/O脚接P2.7,Vcc1和Vcc2脚接电源,X1、X2中间接晶振。图3.5 DS1302与单片机的接口电路其基本工作原理:该串行时钟芯片主要由寄存器、控制寄存器、振荡器、实时时钟以及RAM组成。为了对任何数据传送进行初始化,需要将置为高电平且将8位地址和命令信息装入移位寄存器。数据在SCLK的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输入数据9。3.3.3 DS1302的控制字节 DS1302 的控制字如表3.3所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中;位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出6。 表3.3 DS1302的控制字节3.3.4 DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表3.4。表3.4 DS1302的日历、时钟寄存器及其控制字寄存器名称命令字取值范围各位内容写操作读操作76543210秒寄存器80H81H00-59CH10SECSEC分钟寄存 器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/24010HRHR日期寄存器86H87H01-28,29,30,310010DATADATA月份寄存器88H89H01-1200010MMONTH周日寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR表中有些特殊位需要特别指出:CH:时钟暂停位,当此位设置为1时,振荡器停止,DS1302处于低功率的备份方式;当此位变为0时,时钟开始启动。12/24:12或24小时方式选择位,为1时选择12小时方式。在12小时方式下,位5是AM/PM选择位,此位为1时表示PM。在24小时方式下,位5是第2个小时位(2023)6。3.3.5复位和时钟控制 通过将输入驱动置高电平来启动所有的数据传送。输入有两种功能:首先,接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,提供了终止单字节或多字节数据的传送手段。当为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,必须保持低电平。只有在SCLK为低电平时,才能置为高电平6。3.4 键盘电路设计3.4.1 行列式键盘与单片机接口电路在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键7。根据本设计需要,本系统采用了44键盘实现对时间值和功能键的设定。行列式键盘与单片机的接口电路如图3.6所示,H1-H4为行线,接单片机P1口的低4位,L1-L4为列线,接单片机P1口的高4位。初始化时键盘行线为低电平,列线为高电平。键盘的列线接4输入与门,4输入与门的输出接单片机的外部中断0引脚P3.2口。当有键按下时,将产生中断,在中断程序里对按键进行扫描,得到按键的键值8。图3.6 44键盘结构3.4.2 键盘面板键盘面板如图3.7所示,本系统使用的键盘有10数字键,6个功能按键。在系统启动时,液晶显示屏上显示系统的时间信息;若要修改当前时间或设置定时时间,则按“设置/保存”键,根据屏幕上的操作提示,按“左”、“右/清除”、“上”、“下”键,选择相应的操作,并按相应的数字键,改变时间的值;若在设置时有错误,要清除则按“右/清除”键;要退出设置则按“取消”键,设置好后按“设置/保存”键之后保存操作,系统开始运行。图3.7 键盘面板3.5 显示电路设计字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD。用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮10。3.5.1 LCD引脚分布及功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚.(1)1602液晶显示屏共有16个引脚,其引脚名称及引脚编号的对应关系如图3.8所示: VSS VDD VEE RS RW E D0 D1 D2 D3 D4 D5 D6 D7 BLA BLK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 图3.8 1602液晶显示模块引脚分布图(2) 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3.5所示: 表3.5 1602液晶显示模块引脚功能引脚符 号引 脚 功 能引脚符 号引 脚 功 能1VSS电源地9D2数据线2VDD电源+5V10D3数据线3VEE液晶显示偏压11D4数据线4RS数据/命令选择12D5数据线5R/W读/写选择13D6数据线6E使能信号14D7数据线7D0数据线15BLA背光源(+)8D1数据线16BLK背光源(-)3.5.2 1602LCD的指令说明及时序 1602液晶模块内部的控制器共有11条控制指令11。如表3.6所示:表3.6:控制命令表序号指令RSRWD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存储器地址0001字符发生存储器地址8置数据存储器地址001显示数据存储器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。3.5.3 单片机与图形液晶的接口电路 系统启动仿真后,液晶显示屏上显示系统里设定的时间、年、月、日、星期等。要进行修改当前时间和设置打铃、广播时间时,按键盘上的“保存/设置”键,则显示屏上会出现3个操作菜单:设置修改当前时间,设置修改打铃时间,设置修改广播的时间。根据屏幕上相应的操作提示,进行相应的设置修改,然后再按“保存/设置”键保存设置。LCD与单片机的接口电路如图3.9所示: 图3.9 LCD与单片机的接口电路3.6 继电器控制电路继电器控制电路是整个电路的关键执行部分。当系统的设置打铃时间到时,单片机产生一个信号,这个信号控制打铃继电器的开关,使其闭合,发光二极管灯亮,发光二极管按照系统里设定的时间常亮10秒,10秒后继电器开关断开,发光二极管灭,从而实现定时打铃;当系统的设置广播时间到时,单片机产生一个信号,此信号控制广播继电器的开关,使它闭合,发光二极管闪烁、扬声器按照系统设定的时间报警1分钟,1分钟后,继电器开关断开,发光二极管熄灭,扬声器停止工作,从而实现定时开机,播放完后自动关机的功能。控制电路图如图3.10、图3.11所示:图3.10 打铃机控制电路图3.11 广播控制电路3.7 电源电路设计电源是整个系统的能量来源,在本系统中单片机、液晶显示、继电器控制等电路需要5V的电源,因此电路中选用稳压芯片7805,其最大输出电流为1.5A,能够满足系统的要求,其电路如图3.12所示12。图3.12 电源电路第4章 程序设计4.1 系统资源分配4.1.1 系统硬件资源分配本系统电路连接及硬件资源分配如图4.1所示。采用AT89C52单片机作为核心器件,DS1302作为时间控制装置,通过AT89C52的P2口将时间值送入单片机处理,利用1602LCD显示器和44键盘作为人机接口。P1.0P1.3 P0.0P0.7P1.4P1.7 P2.0P2.2AT89C52 P3.2/INTO P3.6P2.5P2.7 P3.7 H1H4 44键盘 L1L4四输入与门 DS13021602LCD显示模块广播机电铃图4.1 系统硬件资源分配4.1.2 C51简介Keil Vision是Keil公司(ARM子公司)开发的一款用于MCS-51单片机开发的应用十分广泛的编译和调试软件。该软件可以编辑、编译汇编语言、C51语言,连接定位目标文件和库文件,创建HEX文件,调试目标程序等。Keil软件功能强大,包含很多部分,本文主要使用Keil Vision来开发C51项目、调试程序并生成HEX文件来用于单片机开发6。4.2 系统程序设计4.2.1主程序流程设计主程序上电时先对系统进行初始化,对时钟芯片写入初值,使DS1302开始工作,调用LCD显示子程序,显示启动画面,然后进入键盘设置界面。当设置键按下后,开始设置各点的时间,设置完之后,则系统开始工作。首先调用DS1302初始化子程序,再发送RAM命令,读取DS1302设置的时间值。当读取的时间等于设置的时间值时,发光二极管亮。LCD显示时间的实际值,当需要设置修改时间时就切换到设置修改时间界面。主程序流程如图4.2所示:Y定时器初始化允许中断开始DS1302开启涓流充电功能显示当前时间调用读键函数N外部中断0开启图4.2 主程序流程4.2.2 DS1302程序设计由单片机对DS1302的控制方法,设计出如下程序流程:YYN定义一个局部变量I=8从1302数据端读一个BIT位数据1302CLK端出现一个下降沿结束读1302程序退出定义一个局部变量I=8送BIT位数据到1302数据端1302CLK端出现一个下降沿结束写1302程序退出NI减1后是否为0I减1后是否为0图4.3 读1302命令子程序图4.4 写1302命令子程序1302RST=01302CLK=01302RST=1调用写1302子程序1302DAT=1调用读1302子程序1302CLK=0返回所读字节数据结束从1302读一个字节,退出1302RST=01302CLK=01302RST=1写地址数据到1302写入想要保存的数据到13021302CLK=01302CLK=1结束写一个字节到1302,退出图4.5 从1302读一个字节流程图 图4.6 写一个字节到1302流程图其程序设计如下:void Write(void) unsigned char i; for(i=8; i0; i-) ds1302_dat = ACC_0; ds1302_clk = 1; ds1302_clk = 0; ACC = ACC 1; uchar Read(void) unsigned char i; for(i=8; i0; i-) ACC = ACC 1; ACC_7 = ds1302_dat; ds1302_clk = 1; ds1302_clk = 0; return(ACC);uchar ReadRam_Byte(uchar address) ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ACC = address;Write(); ds1302_dat = 1;Read(); ds1302_rst = 0;return ACC;uchar ReadRTC_Byte(uchar address) ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ACC = address;Write(); ds1302_dat = 1;Read(); return ACC; uchar WriteRam_Byte(uchar address,uchar number) ds1302_rst = 0;ds1302_clk = 0; ds1302_rst = 1;ACC = address;Write(); ACC = number;Write(); ds1302_rst = 0;ds1302_clk = 1;return ACC;uchar WriteRTC_Byte(uchar address,uchar number) ds1302_clk = 0; ds1302_rst = 0;ds1302_rst = 1; ACC = address; ACC |= 0x80; Write(); ACC = number; Write(); ds1302_rst = 0; ds1302_clk = 1; return ACC;4.2.3 键盘程序本设计利用44矩阵式键盘对系统进行操作,通过键盘可以很方便的对时间进行修改和设置。键盘程序流程图如图4.7所示: YNP1口高四位置高低四位置低读P1口到temp1屏蔽temp1低四位P1口高四位置高低四位置低Key_value等于temp1与temp2相或读P1口到temp2屏蔽temp2高四位键码值处理结束按键扫描退出按键是否释放图4.7 键盘扫描流程图 4.2.4 显示程序 显示是实现人机对话的重要部分,选用1602LCD显示器可实现对字符的显示,下面是其相关指令的介绍。(1) 读取状态字RSRWD7D6D5D4D3D2D1D001BUSY0ONOFFRST0000当RW=1,RS =0时,在E信号由高电平跳变成低电平时,液晶模块执行命令。在每次对模块操作之前,都要判断BUSY是否为“0”。若不为“0”,则单片机需要等待,直至BUSY =0为止。(2)显示开关设置 RSRWD7D6D5D4D3D2D1D0000011111DD=1:开显示;D=0关显示。(3)写显示数据 RSRWD7D6D5D4D3D2D1010显 示 数 据该操作将8位数据写入先前已确定的显示存储器的单元内。 (4)读显示数据 RSRWD7D6D5D4D3D2D1D011显 示 数 据将1602模块中的CGRAM或DDRAM存储器对应单位中的内容读出。根据上面指令结合系统要实行的功能,其显示程序流程如图4.8所示。 关闭定时器0清时分标志NYNYYNYNYN定义局部存储单元关闭光标显示获取星期数据 显示星期获取时数据显示小时数字读年月日数据显示年月日置打铃时标志喇叭输入引脚电平翻转是否到打铃时置打铃时标志是否到打铃分置打铃分标志获取分数据显示分数字启动定时器0清时分标志获取秒数据显示秒数字打铃时和分标志位1定时器1是否已启动是否到00秒关闭定时器0清时分标志结束中断服务程序退出中断服务图4.8 1602的显示流程图1602各控制流程图如下:N定义一个局部变量dt1602数据端口置1延时300us,E=1RS=0,RW=1,E=0LCD1602是否忙退出Y调用忙子函数RS=0,RW=0,E=0控制命令送LCD数据端口E=1退出图4.9 读忙子函数流程图 图4.10 写控制命令子函数 清屏写入显示起始地址YN显示数据送LCD数据端口RS=1,RW=0,E=0调读忙子程序延时E=1调用数据显示子函数退出退出字符显示完毕否图4.11 写数据命令子函数流程图 图4.12在屏幕显示文字流程图4.2.5 中断服务程序 当系统正在运行,要突然进行时间的修改或设置时,就要调用中断程序;在本设计中,当设置时间到了的时候,单片机产生一个信号,该信号触发继电器开关闭合,发光二极管灯亮,整个电路导通,二极管亮了一段时间后,就需要调用中断程序,单片机停止信号的发送,继电器开关断开,发光二极管灯灭,终止了此操作。中断服务的流程图如下: NY定义两个存储单元temp1、temp2关外部中断0延时10msP1口设置为0xF0是否有键按下调用按键扫描无按键被按下key_value=0xF0结束按键扫描退出P1=0xF0NY喇叭输入引脚电平置低定时器0中断计数单元加1重置定时器0计时初值是否已中断60次定时器0计数单元清零关定时器0结束中断服务程序退出中断服务图4.13 中断服务程序流程图中断服务程序设计:void op_ex0(void) interrupt 0 using 1uchar temp1,temp2;key_value=0xff;EX0=0;delay(16);P1=0xF0;if(P1 & 0xF0)!=0xF0)delay(16);if(P1 & 0xF0)!=0xF0)P1=0xF0;temp1=P1 & 0xF0;P1=0x0F;temp2=P1 & 0x0F;while(P1 & 0x0F)!=0x0F) P1=0x0F;switch(temp1 | temp2)case 0xEE:key_value=0;break;case 0xDE:key_value=1;break;case 0xBE:key_value=2;break;case 0x7E:key_value=3;break;case 0xED:key_value=4;break;case 0xDD:key_value=5;break;case 0xBD:key_value=6;break;case 0x7D:key_value=7;break;case 0xEB:key_value=8;break;case 0xDB:key_value=9;break; case 0xBB:key_value=10;break; case 0x7B:key_value=11;break; case 0xE7:key_value=12;break; case 0xD7:key_value=13;break; case 0xB7:key_value=14;break; case 0x77:key_value=15;break; default:key_value=0xff;break;elsekey_value=0xff;P1=0xF0;elsekey_value=0xff;P1=0xF0;void op_et0(void) interrupt 1 using 2TH0=0x00;TL0=0x00;+ct_et0;if(ct_et0New Project,在弹出的对话框中输入工程的名字,点击保存;选择ATMEL公司的AT89C52单片机。(2)在Source Group 1上点击右键,选择“Add Files to Group Source Group 1 ”,把所有的源文件加进来。(3)点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论