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