《基于S51单片机的开发板设计毕业论文.doc》由会员分享,可在线阅读,更多相关《基于S51单片机的开发板设计毕业论文.doc(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1/71基基于于 S5S51 1单片机的开发单片机的开发板设计毕业论文板设计毕业论文目录摘要摘要错误!未定义书签。错误!未定义书签。ABSTRACTABSTRACT 错误!未定义书签。错误!未定义书签。1 1 引言引言12 2 系统方案系统方案22.1 总体设计方案 22.2 设计原则 23 3 硬件部分硬件部分33.1 硬件结构框图 33.2 硬件电路设计 43.2.1S51 单片机主控制模块 43.2.2键盘模块 53.2.3AD 模块 63.2.4DA 模块 73.2.5DS1302 时钟模块 83.2.6测温模块 102/713.2.7串行通信模块 103.2.8显示模块 123.2.
2、9下载器模块 173.2.10 其他模块 194 4 软件部分软件部分204.1 整体程序设计 204.2 分模块程序设计 204.2.1键盘模块程序设计 204.2.2AD 模块程序设计 214.2.3DA 模块程序设计 234.2.4DS1302 时钟模块程序设计 244.2.5测温模块程序设计 264.2.6串行通信模块程序设计 294.2.7显示模块程序设计 314.2.8其他模块 405 5 开发板设计与测试开发板设计与测试435.1 开发板 PCB 设计 435.2 开发板测试 436 6 结论结论45致谢致谢错误!未定义书签。错误!未定义书签。参考文献参考文献473/71附录附录
3、48附录 1键盘模块部分程序 48附录 2AD 模块部分程序 49附录 3DA 模块部分程序 52附录 4DS1302 时钟模块部分程序 53附录 5测温模块部分程序 58附录 6单片机通过 MAX485 与 PC 机通讯程序 61附录 7LCD1602 显示模块部分程序 63附录 8开发板整观图 66附录 9下载器整观图 671/711 引言单片机具有成本低、体积小、可靠性高、具有高附加值、通过更改软件就可以改变控制对象等优点,单片机越来越成为电子工程师设计产品时的首选器件之一。因此拥有一块单片机开发板对单片机学习具有着极其重要的意义。但是单片机学习效果的优劣直接取决于单片机的选择,C51
4、系列单片机部具有 128 字节 RAM、5 个中断源、32 条 I/O 口线、2 个 16 位定时器、4KB 的程序存储器、一个全双工异步串行口。本开发板选择具有 ISP 在线编程功能的 S51 单片机,该单片机不需要烧写器,可在开发板上 ISP 在线编程,具有广泛的应用前景。S51 单片机除兼容 C51 单片机外,还具有工作频率 0 至 33MHz 的高工作频率;可以满足绝大多数的实际应用开发需求,在开发板上使用十分方便。本课题设计的 S51 单片机开发板,具有一般开发板通用结构,并基于硬件进行相关软件设计。利用程序开发语言开发程序并实现 ISP 在线下载到单片机,无需配置单独的下载器。单片
5、机使用 ISP 在线下载程序,加快了程序设计者调试的进度,使设计者所设计的程序尽快得到验证。通过对开发板上的模块进行实验,可以提高针对不同硬件进行编程的能力,同时通过实验现象对所用的硬件也有了更深一步的认识,因此该开发板具有一定的实用价值和现实意义。2/712 系统方案2.1 总体设计方案本开发板共分为十四个模块,分别是:S51 单片机主控制器模块、键盘模块、AD模块、DA 模块、DS1302 时钟模块、测温模块、MAX232 模块、MAX485 模块、数码管模块、LCD1602 模块、LCD12864 模块、下载器模块、流水灯模块、蜂鸣器模块。其中以 S51 单片机作为核心控制器;键盘模块用
6、来向单片机输入特定编码的信息;AD 模块用来实现模数转换;DA 模块用来实现 DA 转换;DS1302 时钟模块用来实现实时时钟;测温模块用来测量环境温度;RS232 模块和 RS485 模块通过电平转换实现通信;数码管模块用来显示简单的数字、字母;LCD1602 模块用来显示字母、数字、符号;LCD12864 模块用来显示图像、符号、汉字;下载器模块用来实现 S51 单片机的 ISP 在线编程;流水灯模块用来显示单片机 I/O 口电平的变化;蜂鸣器模块用来发出声音。2.2 设计原则开发板系统的扩展和配置应遵循以下设计原则:(1)尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模
7、块化打下良好的基础;(2)系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发;(3)硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑的原则是:软件能实现的功能尽可能由软件实现,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用 CPU 时间;(4)系统中的相关器件要尽可能做到性能匹配。如选用 CMOS 芯片单片机构成低3/71功耗系统时,系统中所有芯片都应尽可能选择低功耗产品;(5)可靠性与抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等;(6)单片
8、机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载;(7)尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。3 硬件部分3.1 硬件结构框图总体硬件结构主要包括:S51 单片机主控制器模块、键盘模块、AD 模块、DA 模块、DS1302 时钟模块、测温模块、MAX232 模块、MAX485 模块、数码管模块、LCD1602模块、LCD12864 模块、下载器模块、流水灯模块、蜂鸣器模块。硬件结构框图如图3-1 所示:4/71S51 单片机主控制模块DA
9、模块流水灯模块蜂鸣器模块AD 模块数码管模块LCD12864 模块LCD1602 模块MAX485 模块MAX232 模块下载器模块键盘模块DS1302 实时时钟模块测温模块图 3-1总体硬件结构框图3.2 硬件电路设计3.2.1S51 单片机主控制模块S51 单片机最小系统包括:MCU、复位电路、晶振电路。原理图如图 3-2 所示:5/71图 3-2S51 单片机主控制模块原理图采用按键复位方式,选取晶振为 12MHZ,系统机器周期为 1us。3.2.2 键盘模块在键盘中按键数量较多时,为了减少 I/O 口的占用,通常将按键排列成矩阵形式,如图 3-3 所示:图 3-3 键盘模块原理图JP7
10、 用来连接 P2 口与矩阵键盘模块,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如 P2 口)就可以构成 4*4=16 个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成 20 键的键盘,而直接用端口线则只能多出一键(9 键),在需要的按键数较多时,采用矩阵法来做键盘是合理的。6/713.2.3AD 模块a ADC0832 简介A/D 转换在单片机接口中应用广泛,串行 A/D 转换器具有功耗低、性价比较高、芯片引脚少等特点。ADC0832 是 NS(National Semiconductor)公
11、司生产的具有Microwire/Plus 串行接口的 8 位 A/D 转换器,通过三线接口与单片机连接,适宜在袖珍式智能仪器中使用。主要性能指标有:功耗低,只有 15mW;8 位分辨率,逐次逼近型,基准电压为 5V;输入模拟信号电压围为 05V;输入和输出电平与 TTL 和CMOS 兼容;在 250kHz 时钟频率时,转换时间为 32us;具有两个可供选择的模拟输入通道。ADC0832 有 DIP 和 SOIC 两种封装,DIP 封装的,ADC0832 引脚排列如图 3-4所示:图 3-4ADC0832 引脚图各引脚说明如下:CS片选端,低电平有效;CH0,CH1两路模拟信号输入端;D I两路
12、模拟输入选择输入端;DO模数转换结果串行输出端;CLK串行时钟输入端;VCC/REF正电源端和基准电压输入端;GND电源地。ADC0832工作时,模拟通道的选择与单端输入和差分输入的选择,都取决于输入时序的配置位。当差分输入时,要分配输入通道的极性,两个输入通道的任何一个通道都可作为正极或负极。b 硬件实现AD 模块的原理图如图 3-5 所示:7/71图 3-5 AD 模块原理图单片机与 ADC0832 通过 P2.5、P2.6、P2.7 相连,分别为时钟信号线、数据输出信号线、片选信号线。开发板可外接模拟信号,也可由电位器 R7、R8 将+5V 分压后提供两路模拟信号。3.2.4DA 模块a
13、 TLC5615 简介TLC5615 为美国仪器公司 1999 年推出的产品,是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。带有上电复位功能,即把 DAC寄存器复位至全零。TLC5615 性能价格比高,目前在国市场很方便购买。主要性能指标有:10 位 CMOS 电压输出;5V 单电源供电;与 CPU 三线串行接口;最大输出电压可达基准电压的二倍;输出电压具有和基准电压相同极性;建立时间 12.5s;部上电复位;低功耗,最大仅 1.75mW。TLC5615 有小型和塑料 DIP 封装,DIP 封装的 TLC5615 芯片引脚排列如图 3-6 所示:图 3-6 TLC
14、5615 引脚排列图引脚功能说明如下:8/71DIN串行数据输入端;SCLK串行时钟输入端;CS芯片选用通端,低电平有效;DOUT用于级联时的串行数据输出端;AGND模拟地;REFIN基准电压输入端;OUTDAC 模拟电压输出端;VDD正电源端。b 硬件实现DA 模块的原理图如图 3-7 所示:图 3-7 DA 模块原理图单片机与 TLC5615 通过 P2.0、P2.1、P2.2 相连,分别为片选信号线、时钟信号线、数据输入信号线。TLC5615 转换后的模拟信号通过 OUT 端输出。3.2.5DS1302 时钟模块a DS1302 简介DS1302 是美国 DALLAS 公司推出的一种高性
15、能、低功耗、带 RAM 的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达 2.55.5V。采用三线接口与 MCU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。DS1302 部有一个 31*8 的用于临时性存放数据的 RAM 寄存器。主要性能指标有:31 字节带后备电池的 RAM 用于数据存储;串行 I/O 口,管脚数量少;宽围工作电压:2.05.5V;工作电压 2.0V 时,电流小于9/71300nA;读/写时钟或 RAM 数据时有两种传送方式单字节传送和突发模式传送;8脚 DIP 封装或其他可选封装方式;简单的 3
16、线接口;与 TTL 兼容(Vcc=5V);可选工业级温度围:-40+85;与 DS1202 兼容。DS1302 的引脚如图 3-8 所示:图3-8 DS1302引脚图Vcc1 为后备电源,Vcc2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 高于 Vcc1+0.2V时,Vcc2 给 DS1302 供电。当 Vcc2 低于 Vcc1 时,DS1302 由 Vcc1 供电。X1、X2 为振荡源,外接 32.768 kHz 晶振。I/O 为串行数据输入/输出端(双向),SCL K 为时钟输入端。RST 是复位片选
17、线,通过把 RST 输入驱动置为高电平来启动所有的数据传送。RST 输入有两种功能:RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;RST 提供了终止单字节或多字节数据的传送手段。当 RST 为高电平时,所有的数据传送被初始化,允许 DS1302 进行操作。如果在传送过程中置 RST 为低电平,则会终止此次数据传送,并且 I/O 引脚变为高阻态。上电运行时,在 Vcc 高于 2.5V 之前,RST 必须保持低电平。只有在 SCL K 为低电平时,才能将 RST 置为高电平。b 硬件实现DS1302 时钟模块的原理图如图 3-9 所示:图 3-9 DS1302 时钟原理图单片机与 DS1
18、302 通过 P3.5、P3.6、P3.7 相连,分别为时钟信号线、输入输出10/71线、复位信号线。DS1302 的晶振引脚连接 32768HZ 的晶振。3.2.6 测温模块a DS18B20 简介DS18B20 是DALLAS 半导体公司生产的,是一种单总线温度传感器,属于新一代适配微处理器的智能温度传感器,有两种封装形式分别为3脚PR-35封装和16脚SSOP封装。本文采用的是3脚PR-35封装,其具有以下特点:采用了单总线技术,传感器直接以二进制输出被测温度,可通过串行口线,也可与单机通过I/O 口连接;测量温度围为:-55+125,测量精度高达+0.5;含寄生电源,在两线方式下可通过
19、数据线提供寄生电源,而不需要再单独供电;转换时间在分辨率为12位(即0.0625)时最大为750ms;用户可分别对每个器件设定温度上下限;DS18B20 在使用时不需要任何外围元件,全部传感元件与转换电路集成在形如一只三极管的集成电路;电源极性接反时,芯片不会因发热而烧毁,但不能正常工作;每个DSl8B20 器件对应一个唯一的64 位长的序号,该序号值存放ROM中,可通过序号匹配实现多点测温。引脚排列如图3-10所示:VDD:接电源引脚,电源供电3.05.5V;DQ:数据的输入和输出引脚;GND:接地图 3-10 DS18B20 引脚图10/71b 硬件实现DS18b20温度传感器模块的原理图
20、如图3-11所示:图 3-11 DS18b20 温度传感器模块原理图单片机与 DS18B20 通过 P3.7 相连,作为数据/控制信号线。3.2.7 串行通信模块a RS232 串行通信模块RS232 是由电子工业协会(Electronic Industries Association,EIA)所制定的异步传输标准接口。对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线与一条地线。RS232 与 TTL 电路之间需要进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。MAX232 芯片可完成 TTLRS232双向电平转换。MAX232 芯片是 RS23
21、2 标准接口芯片,使用+5v 单电源供电。是 PC 机与单片机串口进行通讯的电平转换芯片。部结构基本可分三个部分:第一部分是电荷泵电路。由 1、2、3、4、5、6 脚和 4 只电容构成。功能是产生+12v 和-12v 两个电源,提供给 RS232 串口电平的需要。第二部分是数据转换通道。由 7、8、9、10、11、12、13、14 脚构成两个数据通道。其中 13 脚(R1IN)、12 脚(R1OUT)、11 脚(T1IN)、14 脚(T1OUT)为第一数据通道。8 脚(R2IN)、9 脚(R2OUT)、10 脚(T2IN)、7 脚(T2OUT)为第二数据通道。TTL/CMOS 数据从 T1IN
22、、T2IN 输入转换成 RS232 数据从T1OUT、T2OUT 送到电脑 DP9 插头;DP9 插头的 RS232 数据从 R1IN、R2IN 输入转换成 TTL/CMOS 数据后从 R1OUT、R2OUT 输出。第三部分是供电。15 脚 DNG、16 脚 VCC(+5V)。MAX232 模块的原理图如图 3-12 所示:11/71图 3-12MAX232 模块的原理图单片机与 MAX232 通过 P3.0、P3.1 相连,分别为发送线、接收线,另外单片机要与 MAX232 共地。b RS485 串行通信模块RS232 由于传输速率慢,传输距离短,传输信号易受外界的干扰等缺点。新的串行通讯接
23、口标准 RS-449 被制定出来,与之相对应的是 RS-485 的电气标准。RS-485 是美国电气工业联合会(EIA)制定的利用平衡双绞线作传输线的多点通讯标准。它采用差分信号进行传输;最大传输距离可以达到 1.2 km;最大可连接32 个驱动器和收发器;接收器最小灵敏度可达 mV;最大传输速率可达 2.5Mb/s。由此可见,RS-485 协议正是针对远距离、高灵敏度、多点通讯制定的标准。MAX485 的引脚和结构如以下图 3-13 所示:图 3-13MAX485 的引脚和结构该芯片采用单一电源+5 V 工作,额定电流为 300 A,采用半双工通讯方式。它完成将 TTL 电平转换为 RS-4
24、85 电平的功能。MAX485 芯片的结构和引脚都非常简单,部含有一个驱动器和接收器。RO 和 DI 端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的 RXD 和 TXD 相连即可;/RE 和 DE 端分别为接收和发送的使能端,当/RE 为逻辑 0 时,器件处于接收状态;当 DE 为逻辑 1 时,器件处于发送状态,因为 MAX485 工作在半双工状态,12/71所以只需用单片机的一个管脚控制这两个引脚即可;A 端和 B 端分别为接收和发送的差分信号端,当 A 引脚的电平高于 B 时,代表发送的数据为 1;当 A 的电平低于 B 端时,代表发送的数据为 0。在与单片机连接时
25、接线非常简单。只需要一个信号控制 MAX485 的接收和发送即可。同时将 A 和 B 端之间加匹配电阻,一般可选 100的电阻。MAX485 模块的原理图如图 3-14 所示:图 3-14 MAX485 模块原理图单片机与 MAX485 通过 P3.0、P3.1、P3.2 相连,分别为接收输出线、发送输入线、发送/接收使能信号线。3.2.8 显示模块a 数码管模块(1)数码管驱动采用 8 位数据缓冲器 74HC573,其功能表如下表 3-1 所示:表 3-1 74HC573 功能表OPERATINGMODESINPUTINTERNALLATCHESOUTPUTSOELEDNQ0 to Q7en
26、able and read registerLHLLLLHHHH13/71Latch and read registerLLILLLLhHHLatch register and disable outputsHLILZHLhHZ注意:H=高电平h=要保持高电平到低电平转变时一个建立周期以上的高电平L=低电平I=要保持高电平到低电平转变时一个建立周期以上的低电平Z=高组态选用 74HC573 增强驱动能力,提高数码管显示亮度。A-DP 对应八段数码管的各段,当 A-DP 中有低电平输出时,被低电平片选中的数码管的相应段点亮。(2)硬件实现:数码管模块的原理图如图 3-15 所示:图 3-15 数
27、码管模块原理图单片机与 74HC573 通过 P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7相连,作为段码信号线;与 74HC138 通过 P1.0、P1.1、P1.2 相连,作为片选信号线。b LCD1602 模块(1)LCD1602 简介:LCD1602 点阵字符液晶模块是由点阵字符液晶显示器件和专用的行列驱动14/71器,控制器与必要的连接件,结构件装配而成,可以显示数字和英文字符。LCD1602 采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口说明如表 3-2 所示:表 3-2LCD1602 引脚接口图编号符号引脚说明编号符号引脚说明
28、1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据续表 3-2LCD1602 引脚接口图4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极(2)硬件实现:LCD1602 模块的原理图如图 3-16 所示:15/71图 3-16LCD1602 模块原理图单片机与 LCD1602 通过 P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7、P1.0、P1.1、P1.2 相连,P0.0P0.7 为数据线,P1.0、P1.1、P1.2 为控制线。c
29、LCD12864 模块(1)LCD12864 简介:LCD12864 汉字图形点阵液晶显示模块可以显示汉字、图形、ASC码和自定义字形,置 8192 个 16*16 的中文汉字、128 个 8*16 字符、以与 64*256 点阵显示 RAM,控制器为 ST7920,具有串/并接口方式,其部含有中文字库,LCD12864 显示屏为 128*64 点阵,可显示 4 行,每行 8 个字,模块含有多种软件功能:光标显示、画面移位、自定义字符、反白、清除、关闭显示和睡眠模式等,可方便地对模块进行控制。模块置升压电路,无需负压,配置 LED 背光。3V 低电平工作时,只需一个 20K 的电阻与 Vo 的
30、地相接。适用于 3.3V5V 宽围工作电压的系统。RS,R/W 的配合决定的 4 种模式见表 3-3:表 3-3RS,R/W 决定的控制模式RSR/W功能说明LLMPU 写指令到指令暂存器(IR)LH读出忙标志(BF)与地址记数器(AC)的状态HLMPU 写入数据到数据暂存器(DR)HHMPU 从数据暂存器(DR)中读出数据E 信号的状态产生的动作见表 3-4:表 3-4 E 信号的状态产生的动作E 状态执行动作结果高低I/O 缓冲DR配合/W 进行写数据或指令16/71高DRI/O 缓冲配合 R 进行读数据或指令低/低高无动作LCD12864 的并行接口见表 3-5:表 3-5 LCD128
31、64 的并行接口管脚号 管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示 DB7DB0 为显示数据RS=“L”,表示 DB7DB0 为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到 DB7DB0R/W=“L”,E=“HL”,DB7DB0 的数据被写到 IR 或 DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13DB6H/L三态数据线14DB7H/L
32、三态数据线15PSBH/LH:8 位或 4 位并口方式,L:串口方式(见注释 1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释 2)17/7118VOUT-LCD 驱动电压输出端19AVDD背光源正端(+5V)(见注释 3)20KVSS背光源负端(见注释 3)*注释 1:如在实际应用中仅使用并口通讯模式,可将 PSB 接固定高电平,也可以将模块上的 J8 和“VCC”用焊锡短接。*注释 2:模块部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。*注释 3:如背光和模块共用一个电源,可以将模块上的 JA、JK 用焊锡短接。(2)硬件实现:开发板上 LCD12864 模
33、块的原理图如图 3-17 所示:图 3-17LCD12864 模块原理图单片机与 LCD12864 通过 P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7、P1.0、P1.1、P1.2 相连,P0.0P0.7 为数据线,P1.0、P1.1、P1.2 为控制线。3.2.9 下载器模块ATmega8 是基于增强的 AVR RISC 结构的低功耗 8 位 CMOS 微控制器。由于其先进的指令集以与单时钟周期指令执行时间,ATmega8 的数据吞吐率高达 1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。ATmega8 有如下特点:8K 字节的系统可编程 F
34、lash(具有同时读写的能力,即 RWW),512 字节 EEPROM,1K 字节 SRAM,32 个通用 I/O 口线,32 个通用工作寄存器,三个具有比较模式的灵活的定时器/计数器(T/C),片/外中断,可编程串行 USART,面向字节的两线串行接口,10 位 6 路(8 路为 TQFP与 MLF 封装)ADC,具有片振荡器的可编程看门狗定时器,一个 SPI 串行端口,以与五种可以通过软件进行选择的省电模式。工作于空闲模式时 CPU 停止工作,而 SRAM、T/C、SPI 端口以与中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步1
35、8/71定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC 噪声抑制模式时终止 CPU 和除了异步定时器与 ADC 以外所有 I/O 模块的工作,以降低 ADC 转换时的开关噪声;Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力。ATMEGA8L 的引脚配置如以下图 3-18 所示:图 3-18 ATMEGA8L 的引脚配置图下载器模块原理图如图 3-19 所示:图 3-19 下载器模块原理图下载器模块实现将 USB 信号转换为能通过 SPI 协议传输的信号,从而实现对单片机的编程。19/713.
36、2.10 其他模块流水灯模块、蜂鸣器模块的原理图如图 3-20、图 3-21 所示:图 3-20 流水灯模块原理图图 3-21 蜂鸣器模块原理图如图 3-20 所示流水灯模块包含 8 个 LED 灯,单片机的 P0 口接 10K 上拉电阻,八个 LED 的负极依次连接单片机 P0 口的 8 个引脚,八个 LED 的正极依次与 510 欧姆的排阻的八个端子相连,排阻的公共端连接短路插针的一端,短路插针的另一端与电源相连,因此,若将短路插针用短路帽短路,则八个 LED 的正极上拉到高电平,LED 低电平点亮。如图 3-21 所示,单片机的 P3.4 与 Q1 的基极通过 1K 欧姆电阻连接,当 P
37、3.4为高电平时,Q1 导通,Q1 的发射极与集电极导通,将发射极下拉为低电平,蜂鸣器两端出现电位差,蜂鸣器发声;当 P3.4 为低电平时,Q1 不导通,蜂鸣器两端没有电流流过,蜂鸣器不发声。总结:对硬件的设计采用模块化设计方法,采用的电路为典型应用电路,资源配置合理,通过使用短路帽连接相应的功能模块,降低了功耗,减弱了器件之间的相互干扰,提高了系统稳定性,硬件工作稳定可靠。20/714 软件部分4.1 整体程序设计软件部分主要包括数码管程序、键盘程序、AD 程序、DA 程序、DS1302 时钟程序、DS18b20 温度传感器程序、串行通信程序、显示程序和其他简单模块程序。4.2 分模块程序设
38、计依据开发板上硬件资源,进行程序的开发,在软件的设计过程中,采用模块化的设计方法,依次分别为每个模块设计软件。下面分别介绍以上各个模块的程序设计。4.2.1 键盘模块程序设计矩阵式键盘的按键识别方法为:判断键盘中有无键按下:将全部行线 KEY0-KEY3 置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与 4 根行线相交叉的 4 个按键之中。若所有列线均为高电平,则键盘中无键按下。判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为
39、低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。矩阵式键盘的按键编码处理:将行线和列线依次进行数值编码,然后进行一定规则的运算,就是对键值的编码。键盘程序流程图如图 4-1 所示:21/71开始键盘扫描有键按下取键值YN原有键值不变键值送 P0选通数码管图 4-1 键盘程序流程图键盘采用的是行扫描法确定键值,在程序中具体是这样扫描键盘的:将键盘扫描码送入 P2 口,先是使行线依次为低电平,顺序为 KEY1、KEY2、KEY3、KEY4,在某一行线为低电平的状态下,读取 P2 口的状态,将状态值依次右移四位,这样便将 KEY5-KEY8 的
40、状态值移到了低四位,再将高四位状态值置一,将处理后的状态值与当前的扫描码比较,如果此时的状态值与四个扫描码中的一个相同,证明有键按下,此时保存扫描码的数组下标和与状态值相等的扫描码数组下标,并将两个值按照键盘编码值进行某一规则的四则运算后返回给主函数中的某一变量;如果在全部行线依次为低电平情况下的状态值与四个扫描码中没有一个相同,证明没有键按下,返回-1 到主函数。在主函数中调用键盘扫描函数对键盘进行扫描,判断返回键值,若返回值不为-1,证明右键按下,在某一个数码管上显示键值,若返回值为-1,证明没有键按下,显示先前按下的按键键值。4.2.2AD 模块程序设计a ADC0832 的工作时序AD
41、C0832 的工作时序图如图 4-2 所示:22/71图 4-2ADC0832 的工作时序图当CS由高变低时,选中ADC0832。在时钟的上升沿,D I端的数据移ADC0832部的多路地址移位寄存器。在第一个时钟期间,D I为高,表示启动位,紧接着输入两位配置位。当输入启动位和配置位后,选通输入模拟通道,转换开始。转换开始后,经过一个时钟周期延迟,以使选定的通道稳定。ADC0832 接着在第4个时钟下降沿输出转换数据。数据输出时先输出最高位(D7D0);输出完转换结果后,又以最低位开始重新输出一遍数据(D7D0),两次发送的最低位共用。当片选CS为高时,部所有寄存器清0,输出变为高阻态。如果要
42、再进行一次模/数转换,片选CS必须再次从高向低跳变,后面再输入启动位和配置位。b AD 程序流程图AD 程序流程图如 4-3 所示:开始启动 AD 转换输入方式选择输入通道选择读取数据数据处理与显示23/71图 4-3AD 程序流程图依据操作时序对ADC0832编程,包括转换启动和AD值读取函数,在AD转换函数中可以选择ADC0832的转换通道和输入方式,即通道0或通道1,单通道输入或差分输入。在主函数中循环读取某一通道的模拟电压值,将采集到的数据由16进制转换为ASCLL码。并在液晶或数码管上显示出来。4.2.3DA 模块程序设计a TLC5615 的工作时序TLC5615 的工作时序如图
43、4-4 所示:图 4-4TLC5615 的时序图由时序图可以看出,当片选CS为低电平时,输入数据DIN由时钟SCLK同步输入或输出,而且最高有效位在前,低有效位在后。输入时SCLK的上升沿把串行输入数据DIN移入部的16位移位寄存器,SCLK的下降沿输出串行数据DOUT,片选CS的上升沿把数据传送至DAC寄存器。当片选CS为高电平时,串行输入数据DIN不能由时钟同步送入移位寄存器;输出数据DOUT保持最近的数值不变而不进入高阻状态。由此要想串行输入数据和输出数据必须满足两个条件:第一时钟SCLK的有效跳变;第二片选CS为低电平。这里,为了使时钟的部馈通最小,当片选CS为高电平时,输入时钟SCL
44、K应当为低电平。串行数模转换器TLC5615的使用有两种方式,即级联方式和非级联方式。如不使用级联方式,DIN只需输入12位数据。DIN输入的12位数据中,前10位为TLC5615输入的D/A转换数据,且输入时高位在前,低位在后,后两位必须写入数值为零的低于LSB的位,因为TLC5615的DAC输入锁存器为12位宽。如果使用TL5615的级联功能,来自DOUT的数据需要输入16位时钟下降沿,因此完成一次数据输入需要16个时钟周期,输入的数据也应为16位。输入的数据中,前4位为高虚拟位,中间10位为D/A转换数据,最后2位为低于LSB的位即零。24/71b DA 程序流程图DA 程序流程图如图
45、4-5 所示:开始TLC5615 片选使能时钟上升沿读取数据12位数据读取完毕TLC5615 片选禁能YN图 4-5 DA 程序流程图4.2.4DS1302 时钟模块程序设计a DS1302 的工作时序DS1302 的复位特征和时钟控制要求:复位(RST)输入有两种功能:首先,用于接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,用于终止单字节或多字节数据的传送。当为RST高电平时,所有的数据传送被初始化,允许对DS1302 进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,并且I/O 引脚变为高阻态。上电运行时,在Vcc2.0之前,RST必须保持低电平。另外,当RST为高
46、电平时,SCLK必须为低电平。DS1302 的数据输入输出:向DS1302 写入数据时,数据在控制字节输入后的下一个SCLK周期的上升沿被写入,多余的SCLK将被忽略。数据写入时从低位(位0)开始;同样,从DS1302读取数据时,数据在紧跟控制字节后的下一个SCLK的下降沿读出,读出数据时也是从低位(0位)到高位(7位),只要RST 保持高电平,额外的SCLK将导致数据字节的持续读出,这个特性用于实现该芯片的突发读模式。数据读写时序如图4-6所示:25/71图 4-6DS1302 的读写时序突发模式下,可以一次性读出所有日历时钟数据或RAM数据。b DS1302 的寄存器DS1302 共有12
47、 个寄存器,其中有7 个寄存器与日历、时钟相关,存放的数据位为BCD 码格式。其日历、时间寄存器与其控制字见表4-1:表 4-1DS1302 的寄存器寄存器名命令字取值围各位容写操作读操作76543210秒寄存器80H81H00-59启动十位个位分寄存器82H83H00-590十位个位时寄存器84H85H00-12或00-2312/24010/AP十位个位日寄存器86H87H01-28,29,30,3100十位个位月寄存器88H89H01-12000十位个位周寄存器8AH8BH01-0700000个位年寄存器8CH8DH00-99十位个位26/71c DS1302 时钟程序流程图DS1302
48、时钟程序流程图如图 4-7 所示:开始读取 DS1302 的秒值写入允许时钟芯片关闭N写入初始化时间写入禁止获取时钟芯片的时间时间、日期数据转化为液晶字符显示Y图 4-7DS1302 时钟程序流程图在程序中定义了一个结构体,用来存储秒、分、时、星期、日、月、年信息,对 DS1302 的寄存器地址进行了声明,方便在编程时使用,依据 DS1302 读写单字节数据时序图编写实时时钟读写一个字节的函数,依据 DS1302 读写数据时序图编写向 DS1302 某地址写入数据和从 DS1302 某地址读出数据的函数,从DS1302 某地址读出数据可以获取时钟芯片的时钟数据到自定义的结构型数组中,这样单片机
49、就可以实时的从 DS1302 获取时间了,向 DS1302 某地址写入数据可以实现单片机对 DS1302 进行时间的初始化和修改操作。4.2.5 测温模块程序设计a DS18B20 的工作时序单总线在任何时刻只能有一个控制信号或数据,数据要能在单片机和单总线27/71芯片之间实现可靠的传送,遵循单总线处理次序通信协议,确保数据有条不紊地传送,单总线处理次序图如图4-8所示:图 4-8 单总线处理次序图处理次序操作时,一般有以下 4 个过程:(1)初始化。基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机的应答脉冲组成。应答脉冲使主机知道总线上有从机设备,且准备就
50、绪。(2)ROM 操作命令。在主机检测到应答信号后,主机可以发出 ROM 操作命令之一。所有的ROM 命令都是 8 位,而且这些命令与各个从机设备的唯一 64 位 ROM 代码相关,允许主机在单总线上连接多个从机设备时,指定操作某个从机设备。可发送的 ROM 命令有:读 ROM,匹配 ROM,搜索 ROM,跳过 ROM,超 ROM,超速跳过 ROM,条件查找 ROM。(3)RAM 操作命令。当成功执行上述某个 ROM 操作命令后,总线可以发出一个 RAM 命令来访问和控制 RAM。可发送的 RAM 命令有:写暂存 RAM,读暂存 RAM,复制暂存 RAM,数据转换,回读 E2PROM,读电源模