1、1 引言 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。 单片机技术起着不可忽视的作用并且在智能控制领域有着举足轻重的地位。本设计就是 利用 Atmel 公司生产的单片机 AT89S52 芯片 和 AT24C02 芯片(存储芯片),以及利用 DS1302 用作时钟芯
2、片(具有实时显示当 前时间,按设定时间用蜂鸣器报时,能修改当前时钟(闹钟)等功能) 。 在以单片机为核心的基础上加上其外围设备实现的小的系统 自动打铃系统 。 所谓的单片机小系统从系统的角度来定义 就是完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统 。 硬件设计部分分别从各个功能电路进行阐述,包括电源电路、复位电路、时钟电路、红外遥控及显示电路。软件部分分成了四个模块:初始化模块、时间显示模块、遥控按键设定模块、以及定时打铃模块。初始化模块主要是 对定时计数器的方式及初值的设定。时间显示模块负责正确的显示当前时间。按键设定模块主要是对时间的校准及设定。定时打铃模块负责到时响铃功能
3、。 也就是说系统的功能是由硬件和软件两大部分共同合作完成 。 2 第 1 章 系统总体设计 1.1 设计要求 设计一个校园打铃系统, 使用的是 24 小时制 。 要求 在掉电状态下数据不丢失,可以设置多个打铃时间点(在本系统中我利用 AT24C02 芯片 存储 使系统能够设置 25 组的打铃时间点 ), 用红外线遥控按键 设置同样的打铃时间 , 数字键输入设置内容,不只上、下键地调时 。由 于用的不是单片机内部的定时器,定时功能用的是外部时钟 DS1302 芯片,而 DS1302 芯片的精度取决于 32768HZ 晶振的精度, 32768HZ 晶振的精度小于 0.01%,所以整个系统的精确度高
4、于 99.99%。 1.2 功能特点 25 路掉电不丢失数据的用户定时功能。 采用首创的忽略定时新概念,可以设置定时某项为忽略值,再配合多路定时项目使定时的内容自由发挥,千变万化 ,能够适应各种的定时要求 。 SAA3010 红外线遥控器输入控制,数字键输入数据,方便快捷。 全程帮助提示和独立的帮助菜单,易学易用。数字键输入设置内容,不只 上、下键地调时了 。 人性化软件设计,设计时考虑到许多使用细节。 1.3 总体设计图 图 1-1 系统总体设计图 中央处理单元 AT89S52 存储模块 AT24C02 红外接收模块 打铃电路 时钟模块 DS1302 复位电路 红外发送模块 时间显示模块 L
5、CD2402 3 第 2 章 方案的 论证 2.1 电源模块 电源模块是为系统提供电源,本设计中用到的是 正 5V 的直流稳压电源。 方案一 :采用串联反馈式稳压电路获得直流稳压电源。该电路由比较放大电路、稳压管、三极管、限流电阻及两个取样电路组成,此电路 由 主回电路式起调整作用的 BJTT 与负载串联而得名的。但它的输出电源不可能绝对稳定的,只能 是 基本稳定,且负载电流较大时 ,调整管的集电极损耗大,电源效率低,有时还要配有庞大的散热装置。 方案二 :本设计用到的电源为 5V,属于 中 小功率稳压电源, 所以可以采用 三端稳压 芯片 LM7805。用其设计的是线性开关,线性稳压电路 ,
6、具有结构简单、调节方便、输出电压稳定性强、文波电压小等优点,但是,在负载电流较大且输出电压较低时,其自身的功耗很大 。但如果给本系统供电,完全满足要求 。 综上所述,我选择方案 二 。 2.2 AT89S52 芯片 模块 方案一: 采用 AT89C2051芯片 , 它具有体积小、功耗小。含有中断、定时 /计数器 。 本次设计 需要 非常大的编程量 , 虽然其价钱相对便宜,但 IO 口数和存储空间相对较少,所以此芯片 不利于系统的工作和系统功能的扩展。 方案二: 采用 AT89C51 芯片,它具有 AT89C2051 芯片 的所有功能,且 IO 口数相对较多,价钱相对也比较便宜,但存储空间不是非
7、常大,而本次的设计需要大量的存储空间。 方案 三 : 采用 AT89S52 芯片,它具有 AT89C2051 和 AT89C51 芯片 的所有功能,且 IO口数非常多,比 AT89C2051 和 AT89C51 多。价钱虽然比 AT89C2051 和 AT89C51 昂贵,但存储空间非常大,可以到达 8K。而本次的设计正需要 此容量的空间。 综上所述,我选择 AT89S52 芯片作为本次设计的主控芯片 2.3 显示模块 在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器 件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专 用符号和图形
8、。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、 LED 数码 管、液晶显示器。 方案一: 采用 LCD1602 液晶模块 , 1602 液晶模块内部的字符发生存储器( CGROM)已经存储了 160 个不同的点阵字符图形,这些字符有:阿拉伯数字 、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母 “A”的代码是 01000001B( 41H),显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母 “A”。 方案二: 采用 LCD2402液晶模块, 用 LCD 显示一个字符时比较复杂,因为一个字符由 68 或88 点阵组成,既要找到
9、和显示屏幕上某几个位置对应的显示 RAM 区的 8 字节,还要使每字节的不同位为 “1”,其它的为 “0”,为 “1”的点亮,为 “0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说, 显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD 上开始显示的行列号及每行的列数找出显示 RAM 对应的地址,设立光标,在此送上该字符对应的代码即可。 由于 LCD1602液晶显示模块只能显示 16*2个字符,而 LCD2402液晶显示模块能够显示 24*2个字符,在本设计中要显示的字符比较多,综上所述,我选择 LCD2402作为本设计的显示模块。 2.4 其他模块 在通过各种的
10、考虑后,时钟芯片我选用的是 DS1302, DS1302 是 DALLAS 公司推出的涓4 流充电时钟芯片内含有一个实时时钟 /日 历和 31 字节静态 RAM 通过简单的串行接口与单片机进 , 行通信实时时钟 /日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过 AM/PM 指示决定采用 24 或 12 小时格式 DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线 1 RES 复位 2 I/O 数据线 3 SCLK 串行时钟时钟/RAM 的读 /写数据以一个字节或多达 31 个字节的字符组方式通信 DS1302 工作时功耗很低保持数据和
11、时钟信息时功率小于 1mW。 数据存储芯片选用的 AT24C02, AT24C02 是美国 ATMEL公司的低功耗 CMOS 串行 EEPROM,它是内含 2568 位存储空间 ,具有工作电压宽 (2.5 5.5V)、擦写次数多 (大于 10000 次 )、写入速度快 (小于 10ms)等特点 。 本设计板上安装的是红外线接收器是 HS0038B, 可以接收所有载波为 38kHz 的红外信号,当然由于各个遥控器的通讯协议不同,所采用的芯片也不同,解码方式就有所不同,不管怎样,大多数遥控器都是采用 38kHz 频率作为载波频率的 ,所以,只要知道通讯协议,绝大部分遥控器是可以解码的 。 5 第
12、3 章 系统硬件 设计 3.1 电源模块电路的设计 本设计用到的电源为 正 5V,其主要芯片为,由于的输入端电压为正的电压,就少了整流和滤波电路,使电源电路简单化了,虽然输入的是的直流电压,但还有可能存在杂波等,所以在的输入和输出端各用了一个/和的滤波电容,分别滤除低频和高频干挠经过之后的电压就基本保持在左右具体电路图如图 3.1 所示 图 -电源 电路 3.单片机系统及外围电路 AT89S52是一种低功耗、高性能 CMOS8位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上 Flash
13、允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位CPU 和在系统可编程 Flash,使得 AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节 Flash, 256字节 RAM, 32 位 I/O 口线,看门狗定时器, 2 个数据指针,三个 16 位定时器 /计数器,一个 6向量 2级中断结构,全双工串行口,片内晶振及时钟电路。另外, AT89S52 可降至 0Hz 静态逻辑操作,支持 2种软件可选择节电模式。空闲模式下, CPU停止工作,允许 RAM、定时器 /计数器、串口、中断继续工作。掉电保护方式下,
14、 RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 主要性能 与 MCS-51单片机产品兼容 8K字节在系统可编程 Flash存储器 1000次擦写周期 全静态操作: 0Hz 33Hz 三级加密程序存储器 32个可编程 I/O口线 三个 16位定时器 /计数器 八个中断源 6 全双工 UART串行通道 低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 3. .1 时钟脉冲电路 AT89S52 单片机有一个用于构成内部振荡器的反相放大器, XTAL1 和 XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自
15、激振荡器 , 如图 3.2所示 。图 3-2 晶振电路 石英晶振 (利用 12MHZ晶振 ) C1,C2=30PF 陶瓷谐振器 C1,C2=40PF XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 3. .复位电路 AT89S52 的复位引脚( RESET)是第 9 脚,当此引脚连接高电平超过 2 个机器周期,即可产生复位的动作。以 12MHz 的时钟脉冲为例,每个时钟脉冲 为 1 S,两个机器周期为2S,因此,在第 9脚上连接一个 2 S的高电平脉冲,即可产生复位动作。 最简单的就是只有 一个电阻跟一个电容 就可组成一个可靠复位的 电路, 电
16、阻一般选择 10K,电容一般选择10F,复杂一 点的就加个按键,可以进行手动复位 如图 3.3 所示。 7 图 3-3 复位电路 3. .程序及数据存储器设定 MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。 程序存储器 : 如果 EA引脚接地,程序读取只从外部存储器开始。对于 89S52,如果 EA 接VCC,程序读写先从内部存储器(地址为 0000H 1FFFH)开始,接着从外部寻址,寻址地址为: 2000HFFFFH。 数据存储器: AT89S52 有 256 字节片内数据存储器。高 128 字节与特殊功能寄存器重叠。也就是说 高 128字节与
17、特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于 7FH 的地址时,寻址方式决定 CPU 访问高 128 字节 RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器( SFR)。例如,下面的直接寻址指令访问 0A0H( P2口)存储单元 ,MOV 0A0H , #data使用间接寻址方式访问高 128 字节 RAM。例如,下面的间接寻址方式中, R0 内容为 0A0H,访问的是地址 0A0H的寄存器,而不是 P2口(它的地址也是 0A0H)。 MOV R0 , #data堆栈操作也是简介寻址方式。 因此,高 128字节数据 RAM也可用于堆栈空间。 因为 一般 单片机
18、内部 数据存储器只有 128 Byte,非常有限,而且程序存储器空间也只有4K,大一点的程序就存储不下, AT89S52是一种低功耗、高性能 CMOS8位微控制器,具有8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上 Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52为众多嵌入式控制应用 系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节 Flash,256字节 RAM, 32 位 I
19、/O 口线,看门狗定时器, 2 个数据指针,三个 16 位定时器 /计数器,一个 6向量 2级中断结构,全双工串行口,片内晶振及时钟电路。另外, AT89S52 可降至 0Hz 静态逻辑操作,支持 2种软件可选择节电模式。空闲模式下, CPU停止工作,允许 RAM、定时器 /计数器、串口、中断继续工作。掉电保护方式下, RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 AT89S52芯 片及外围电路如图 3.4所示。 8 图 3-4 AT89S52芯片及外围电路 3.2.4 蜂鸣器模块 系统 蜂鸣器的工作原理如下:当单片机端口输出高电平时,三极管 B极 (三极
20、管的各个参数如 3.6节所示) 处于高电平,三极管不导通,蜂鸣器不响。当单片机端口输出低电平时,三极管 B极处于低电平,三极管导通,蜂鸣器鸣响。 在本系统中如果要运用到实际中的话本来是要把单片机端口 P3.4口接上继电器再控制 220V电源的电铃的,但由于各种原因,在这次设计中我是用蜂鸣器来显示出打铃的效果的,蜂鸣器与单片机的 连接图如图 3-5 图 3-5 蜂鸣器连接图 9 3. .5 Flash编程并行模式 AT89S52 带有用作编程的片上 Flash 存储器阵列。编程接口需要一个高电压( 12V)编 程使能信号,并且兼容常规的第三方 Flash或 EPROM编程器。 AT89S52程序
21、存储阵列采用字节式编程。 编程方法 对 AT89S52编程之前,需根据 Flash编程模式表和对地址、数据和控制信号设置。可采用下列步骤对 AT89S52编程: 1在地址线上输入编程单元地址信号 2在数据线上输入正确的数据 3激活相应的控制信号 4把 EA/Vpp升至 12V 5 每给 Flash写入一个字节或程序加密位时,都要给 ALE/PROG一次脉冲。字节写周期时自身定制的,典型值仅仅 50us。改变地址、数据重复第 1步到第 5步,知道全部文件结束。 3.3 时钟芯片 模块 电路 DS1302 是由 DS1202 改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应 Vcc1 为
22、可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域,下面将主要的性能指标作一综合 实时时钟能计算 2100 年之前的秒分时日日期星期月年的能力还有闰年调整的能力 31 8 位暂存数据存储 RAM 串行 I/O 口方式使得管脚数量最少 宽范围工作电压 2.0 5.5V 工作电流 2.0V 时 ,小于 300nA 读 /写时钟或 RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式 8 脚 DIP 封装或可选的 8 脚 SOIC 封装根据表面装配 与 TTL 兼容 Vcc=5V 可选工业级温度范围 -40 +85 与 DS1202 兼容 在
23、DS1202 基础上增加的特性 对 Vcc1 有可选的涓流充电能力 双电源管用于主电源和备份电源 供应 备份电源管脚可由电池或大容量电容输入 附加的 7 字节暂存存储器 1. DS1302 的基本组成 管脚描述 X1 X2 32.768KHz 晶振管脚 GND 地 RST 复位脚 I/O 数据输入 /输出引脚 SCLK 串行时钟 Vcc1,Vcc2 电源供电管脚 图 3-6 DS1302管脚配置 10 2. DS1302 内部寄存器 CH: 时钟停止位 寄存器 2 的第 7 位 12/24 小时标志 CH=0 振荡器工作允许 bit7=1,12 小时模式 CH=1 振荡器停止 bit7=0,24 小时模式 WP: 写保护位 寄存器 2 的第 5 位 :AM/PM 定义 WP=0 寄存器数据能够写入 AP=1 下午模式 WP=1 寄存器数据不能写入 AP=0 上午模式 TCS: 涓流充电选择 DS: 二极管选择位 TCS=1010 使能涓流充电 DS=01 选择一个二极管 TCS=其它 禁止涓流充电 DS=10 选择两个二极管 DS=00 或 11, 即使 TCS=1010, 充电功能也被禁止 图 3-7 RS配置表 图 3-8 DS1302时钟