基于S51单片机的开发板设计毕业论文

上传人:无*** 文档编号:154669312 上传时间:2022-09-21 格式:DOC 页数:56 大小:3.22MB
返回 下载 相关 举报
基于S51单片机的开发板设计毕业论文_第1页
第1页 / 共56页
基于S51单片机的开发板设计毕业论文_第2页
第2页 / 共56页
基于S51单片机的开发板设计毕业论文_第3页
第3页 / 共56页
点击查看更多>>
资源描述
基于S51单片机的开发板设计毕业论文目录摘要IABSTRACTII1 引言12 系统方案22.1 总体设计方案22.2 设计原则23 硬件部分33.1 硬件结构框图33.2 硬件电路设计43.2.1 S51单片机主控制模块43.2.2 键盘模块43.2.3 AD模块53.2.4 DA模块63.2.5 DS1302时钟模块73.2.6 测温模块93.2.7 串行通信模块103.2.8 显示模块123.2.9 下载器模块163.2.10 其他模块174 软件部分194.1 整体程序设计194.2 分模块程序设计194.2.1 键盘模块程序设计194.2.2 AD模块程序设计204.2.3 DA模块程序设计224.2.4 DS1302时钟模块程序设计234.2.5 测温模块程序设计254.2.6 串行通信模块程序设计284.2.7 显示模块程序设计304.2.8 其他模块385 开发板设计与测试415.1 开发板PCB设计415.2 开发板测试416 结论43致谢44参考文献45附录46附录1 键盘模块部分程序46附录2 AD模块部分程序46附录3 DA模块部分程序48附录4 DS1302时钟模块部分程序48附录5 测温模块部分程序51附录6 单片机通过MAX485与PC机通讯程序52附录7 LCD1602显示模块部分程序53附录8 开发板整观图55附录9 下载器整观图5554 / 561引言单片机具有成本低、体积小、可靠性高、具有高附加值、通过更改软件就可以改变控制对象等优点,单片机越来越成为电子工程师设计产品时的首选器件之一。因此拥有一块单片机开发板对单片机学习具有着极其重要的意义。但是单片机学习效果的优劣直接取决于单片机的选择,C51系列单片机部具有128字节RAM、5个中断源、32条I/O口线、2个16位定时器、4KB的程序存储器、一个全双工异步串行口。本开发板选择具有ISP在线编程功能的S51单片机,该单片机不需要烧写器,可在开发板上ISP在线编程,具有广泛的应用前景。S51单片机除兼容C51单片机外,还具有工作频率0至33MHz的高工作频率;可以满足绝大多数的实际应用开发需求,在开发板上使用十分方便。本课题设计的S51单片机开发板,具有一般开发板通用结构,并基于硬件进行相关软件设计。利用程序开发语言开发程序并实现ISP在线下载到单片机,无需配置单独的下载器。单片机使用ISP在线下载程序,加快了程序设计者调试的进度,使设计者所设计的程序尽快得到验证。通过对开发板上的模块进行实验,可以提高针对不同硬件进行编程的能力,同时通过实验现象对所用的硬件也有了更深一步的认识,因此该开发板具有一定的实用价值和现实意义。2系统方案2.1总体设计方案本开发板共分为十四个模块,分别是:S51单片机主控制器模块、键盘模块、AD模块、DA模块、DS1302时钟模块、测温模块、MAX232模块、MAX485模块、数码管模块、LCD1602模块、LCD12864模块、下载器模块、流水灯模块、蜂鸣器模块。其中以S51单片机作为核心控制器;键盘模块用来向单片机输入特定编码的信息;AD模块用来实现模数转换;DA模块用来实现DA转换;DS1302时钟模块用来实现实时时钟;测温模块用来测量环境温度;RS232模块和RS485模块通过电平转换实现通信;数码管模块用来显示简单的数字、字母;LCD1602模块用来显示字母、数字、符号;LCD12864模块用来显示图像、符号、汉字;下载器模块用来实现S51单片机的ISP在线编程;流水灯模块用来显示单片机I/O口电平的变化;蜂鸣器模块用来发出声音。2.2设计原则开发板系统的扩展和配置应遵循以下设计原则: (1)尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良好的基础;(2)系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发; (3)硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑的原则是:软件能实现的功能尽可能由软件实现,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间;(4)系统中的相关器件要尽可能做到性能匹配。如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品; (5)可靠性与抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等;(6)单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载; (7)尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。3硬件部分3.1硬件结构框图总体硬件结构主要包括:S51单片机主控制器模块、键盘模块、AD模块、DA模块、DS1302时钟模块、测温模块、MAX232模块、MAX485模块、数码管模块、LCD1602模块、LCD12864模块、下载器模块、流水灯模块、蜂鸣器模块。硬件结构框图如图3-1所示: S51单片机主控制模块DA模块流水灯模块蜂鸣器模块AD模块数码管模块LCD12864模块LCD1602模块MAX485模块MAX232模块下载器模块键盘模块DS1302实时时钟模块测温模块图3-1 总体硬件结构框图3.2硬件电路设计3.2.1S51单片机主控制模块S51单片机最小系统包括:MCU、复位电路、晶振电路。原理图如图3-2所示: 图3-2 S51单片机主控制模块原理图 采用按键复位方式,选取晶振为12MHZ,系统机器周期为1us。3.2.2键盘模块在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图3-3所示:图3-3 键盘模块原理图JP7用来连接P2口与矩阵键盘模块,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P2口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键),在需要的按键数较多时,采用矩阵法来做键盘是合理的。3.2.3AD模块a ADC0832简介A/D转换在单片机接口中应用广泛,串行A/D转换器具有功耗低、性价比较高、芯片引脚少等特点。ADC0832是NS(National Semiconductor)公司生产的具有Microwire/Plus串行接口的8位A/D转换器,通过三线接口与单片机连接,适宜在袖珍式智能仪器中使用。主要性能指标有:功耗低,只有15mW;8位分辨率,逐次逼近型,基准电压为5V;输入模拟信号电压围为05V;输入和输出电平与TTL和CMOS兼容;在250kHz时钟频率时,转换时间为32us;具有两个可供选择的模拟输入通道。ADC0832有DIP和SOIC两种封装,DIP封装的,ADC0832引脚排列如图3-4所示:图3-4 ADC0832引脚图各引脚说明如下:CS片选端,低电平有效;CH0,CH1两路模拟信号输入端;D I两路模拟输入选择输入端;DO模数转换结果串行输出端;CLK串行时钟输入端;VCC /REF正电源端和基准电压输入端;GND电源地。ADC0832工作时,模拟通道的选择与单端输入和差分输入的选择,都取决于输入时序的配置位。当差分输入时,要分配输入通道的极性,两个输入通道的任何一个通道都可作为正极或负极。b 硬件实现AD模块的原理图如图3-5所示:图3-5 AD模块原理图单片机与ADC0832通过P2.5、P2.6、P2.7相连,分别为时钟信号线、数据输出信号线、片选信号线。开发板可外接模拟信号,也可由电位器R7、R8将+5V分压后提供两路模拟信号。 3.2.4DA模块a TLC5615简介TLC5615为美国仪器公司1999年推出的产品,是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。带有上电复位功能,即把DAC寄存器复位至全零。TLC5615性能价格比高,目前在国市场很方便购买。主要性能指标有:10位CMOS电压输出;5V单电源供电;与CPU三线串行接口;最大输出电压可达基准电压的二倍;输出电压具有和基准电压相同极性;建立时间12.5s;部上电复位;低功耗,最大仅1.75mW。 TLC5615有小型和塑料DIP封装,DIP封装的TLC5615芯片引脚排列如图3-6所示:图3-6 TLC5615引脚排列图引脚功能说明如下: DIN串行数据输入端; 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公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.55.5V。采用三线接口与MCU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或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 兼容。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是复位片选线,通过把RST输入驱动置为高电平来启动所有的数据传送。RST输入有两种功能:RST接通控制逻辑,允许地址/命令序列送入移位寄存器;RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/ O引脚变为高阻态。上电运行时,在Vcc高于2. 5V之前,RST必须保持低电平。只有在SCL K为低电平时,才能将RST置为高电平。b 硬件实现DS1302时钟模块的原理图如图3-9所示:图3-9 DS1302时钟原理图单片机与DS1302通过P3.5、P3.6、P3.7相连,分别为时钟信号线、输入输出线、复位信号线。DS1302的晶振引脚连接32768HZ的晶振。3.2.6测温模块a DS18B20简介DS18B20 是DALLAS 半导体公司生产的,是一种单总线温度传感器,属于新一代适配微处理器的智能温度传感器,有两种封装形式分别为3脚PR-35封装和16脚SSOP封装。本文采用的是3脚PR-35封装,其具有以下特点:采用了单总线技术,传感器直接以二进制输出被测温度,可通过串行口线,也可与单机通过I/O 口连接;测量温度围为:- 55+125,测量精度高达+0.5;含寄生电源,在两线方式下可通过数据线提供寄生电源,而不需要再单独供电;转换时间在分辨率为12位(即0.0625)时最大为750ms;用户可分别对每个器件设定温度上下限;DS18B20 在使用时不需要任何外围元件,全部传感元件与转换电路集成在形如一只三极管的集成电路;电源极性接反时,芯片不会因发热而烧毁,但不能正常工作;每个DSl8B20 器件对应一个唯一的64 位长的序号,该序号值存放ROM中,可通过序号匹配实现多点测温。引脚排列如图3-10所示: VDD:接电源引脚,电源供电3.05.5V;DQ:数据的输入和输出引脚;GND:接地图3-10 DS18B20引脚图b 硬件实现DS18b20温度传感器模块的原理图如图3-11所示:图3-11 DS18b20温度传感器模块原理图单片机与DS18B20通过P3.7相连,作为数据/控制信号线。3.2.7串行通信模块a RS232串行通信模块RS232是由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线与一条地线。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)、14脚(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-12所示:图3-12 MAX232模块的原理图单片机与MAX232通过P3.0、P3.1相连,分别为发送线、接收线,另外单片机要与MAX232共地。b RS485串行通信模块RS232由于传输速率慢,传输距离短,传输信号易受外界的干扰等缺点。新的串行通讯接口标准RS-449被制定出来,与之相对应的是RS-485的电气标准。RS-485是美国电气工业联合会(EIA)制定的利用平衡双绞线作传输线的多点通讯标准。它采用差分信号进行传输;最大传输距离可以达到1.2 km;最大可连接32个驱动器和收发器;接收器最小灵敏度可达 mV;最大传输速率可达2.5 Mb/s。由此可见,RS-485协议正是针对远距离、高灵敏度、多点通讯制定的标准。MAX485的引脚和结构如以下图3-13所示:图3-13 MAX485的引脚和结构该芯片采用单一电源+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。在与单片机连接时接线非常简单。只需要一个信号控制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 Q7enable and read registerLHLLLLHHHHLatch and read registerLLILLLLhHHLatch register and disable outputsHLILZHLhHZ注意:H=高电平h=要保持高电平到低电平转变时一个建立周期以上的高电平L=低电平I=要保持高电平到低电平转变时一个建立周期以上的低电平Z=高组态 选用74HC573增强驱动能力,提高数码管显示亮度。A-DP对应八段数码管的各段,当A-DP中有低电平输出时,被低电平片选中的数码管的相应段点亮。(2) 硬件实现:数码管模块的原理图如图3-15所示:图3-15 数码管模块原理图单片机与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点阵字符液晶模块是由点阵字符液晶显示器件和专用的行列驱动器,控制器与必要的连接件,结构件装配而成,可以显示数字和英文字符。LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3-2所示:表3-2 LCD1602引脚接口图编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据续表3-2 LCD1602引脚接口图4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极(2) 硬件实现:LCD1602模块的原理图如图3-16所示:图3-16 LCD1602模块原理图单片机与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 LCD12864模块 (1) LCD12864简介:LCD12864汉字图形点阵液晶显示模块可以显示汉字、图形、ASC码和自定义字形,置8192个16*16的中文汉字、128个8*16字符、以与64*256点阵显示RAM,控制器为ST7920,具有串/并接口方式,其部含有中文字库,LCD12864显示屏为128*64点阵,可显示4行,每行8个字,模块含有多种软件功能:光标显示、画面移位、自定义字符、反白、清除、关闭显示和睡眠模式等,可方便地对模块进行控制。模块置升压电路,无需负压,配置LED背光。3V低电平工作时,只需一个20K的电阻与Vo的地相接。适用于3.3V5V宽围工作电压的系统。RS,R/W的配合决定的4种模式见表3-3:表3-3 RS,R/W决定的控制模式RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)与地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据E信号的状态产生的动作见表3-4:表3-4 E信号的状态产生的动作E状态执行动作结果高低I/O缓冲DR配合/W进行写数据或指令高DRI/O缓冲配合R进行读数据或指令低/低高无动作 LCD12864的并行接口见表3-5:表3-5 LCD12864的并行接口管脚号管脚名称电平管脚功能描述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三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)(见注释3)20KVSS背光源负端(见注释3)*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。*注释2:模块部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。 (2) 硬件实现:开发板上LCD12864模块的原理图如图3-17所示:图3-17 LCD12864模块原理图单片机与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字节的系统可编程 Flash(具有同时读写的能力,即 RWW),512 字节 EEPROM,1K 字节 SRAM,32个通用I/O口线,32 个通用工作寄存器,三个具有比较模式的灵活的定时器 / 计数器 (T/C), 片 / 外中断,可编程串行 USART,面向字节的两线串行接口,10 位6 路(8 路为 TQFP与MLF 封装)ADC,具有片振荡器的可编程看门狗定时器,一个SPI 串行端口,以与五种可以通过软件进行选择的省电模式。工作于空闲模式时 CPU 停止工作,而 SRAM、T/C、SPI 端口以与中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有 I/O 模块的工作,以降低ADC 转换时的开关噪声;Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力。 ATMEGA8L的引脚配置如以下图3-18所示:图3-18 ATMEGA8L的引脚配置图下载器模块原理图如图3-19所示:图3-19下载器模块原理图下载器模块实现将USB信号转换为能通过SPI协议传输的信号,从而实现对单片机的编程。3.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欧姆电阻连接,当P3.4为高电平时,Q1导通,Q1的发射极与集电极导通,将发射极下拉为低电平,蜂鸣器两端出现电位差,蜂鸣器发声;当P3.4为低电平时,Q1不导通,蜂鸣器两端没有电流流过,蜂鸣器不发声。总结:对硬件的设计采用模块化设计方法,采用的电路为典型应用电路,资源配置合理,通过使用短路帽连接相应的功能模块,降低了功耗,减弱了器件之间的相互干扰,提高了系统稳定性,硬件工作稳定可靠。4软件部分4.1整体程序设计软件部分主要包括数码管程序、键盘程序、AD程序、DA程序、DS1302时钟程序、DS18b20温度传感器程序、串行通信程序、显示程序和其他简单模块程序。4.2分模块程序设计依据开发板上硬件资源,进行程序的开发,在软件的设计过程中,采用模块化的设计方法,依次分别为每个模块设计软件。下面分别介绍以上各个模块的程序设计。4.2.1键盘模块程序设计矩阵式键盘的按键识别方法为:判断键盘中有无键按下:将全部行线KEY0-KEY3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 矩阵式键盘的按键编码处理:将行线和列线依次进行数值编码,然后进行一定规则的运算,就是对键值的编码。 键盘程序流程图如图4-1所示:开始键盘扫描有键按下取键值YN原有键值不变键值送P0口选通数码管图4-1 键盘程序流程图键盘采用的是行扫描法确定键值,在程序中具体是这样扫描键盘的:将键盘扫描码送入P2口,先是使行线依次为低电平,顺序为KEY1、KEY2、KEY3、KEY4,在某一行线为低电平的状态下,读取P2口的状态,将状态值依次右移四位,这样便将KEY5-KEY8的状态值移到了低四位,再将高四位状态值置一,将处理后的状态值与当前的扫描码比较,如果此时的状态值与四个扫描码中的一个相同,证明有键按下,此时保存扫描码的数组下标和与状态值相等的扫描码数组下标,并将两个值按照键盘编码值进行某一规则的四则运算后返回给主函数中的某一变量;如果在全部行线依次为低电平情况下的状态值与四个扫描码中没有一个相同,证明没有键按下,返回-1到主函数。在主函数中调用键盘扫描函数对键盘进行扫描,判断返回键值,若返回值不为-1,证明右键按下,在某一个数码管上显示键值,若返回值为-1,证明没有键按下,显示先前按下的按键键值。4.2.2AD模块程序设计a ADC0832的工作时序ADC0832的工作时序图如图4-2所示:图4-2 ADC0832的工作时序图当CS由高变低时,选中ADC0832。在时钟的上升沿,D I端的数据移ADC0832部的多路地址移位寄存器。在第一个时钟期间, D I为高,表示启动位,紧接着输入两位配置位。当输入启动位和配置位后,选通输入模拟通道,转换开始。转换开始后,经过一个时钟周期延迟,以使选定的通道稳定。ADC0832 接着在第4个时钟下降沿输出转换数据。数据输出时先输出最高位(D7D0);输出完转换结果后,又以最低位开始重新输出一遍数据(D7D0),两次发送的最低位共用。当片选CS为高时,部所有寄存器清0,输出变为高阻态。如果要再进行一次模/数转换,片选CS必须再次从高向低跳变,后面再输入启动位和配置位。b AD程序流程图AD程序流程图如4-3所示:开始启动AD转换输入方式选择输入通道选择读取数据数据处理与显示图4-3 AD程序流程图依据操作时序对ADC0832编程,包括转换启动和AD值读取函数,在AD转换函数中可以选择ADC0832的转换通道和输入方式,即通道0或通道1,单通道输入或差分输入。在主函数中循环读取某一通道的模拟电压值,将采集到的数据由16进制转换为ASCLL码。并在液晶或数码管上显示出来。4.2.3DA模块程序设计a TLC5615的工作时序TLC5615的工作时序如图4-4所示:图4-4TLC5615的时序图由时序图可以看出,当片选CS为低电平时,输入数据DIN由时钟SCLK同步输入或输出,而且最高有效位在前,低有效位在后。输入时SCLK的上升沿把串行输入数据DIN移入部的16位移位寄存器,SCLK的下降沿输出串行数据DOUT,片选CS的上升沿把数据传送至DAC寄存器。当片选CS为高电平时,串行输入数据DIN不能由时钟同步送入移位寄存器;输出数据DOUT保持最近的数值不变而不进入高阻状态。由此要想串行输入数据和输出数据必须满足两个条件:第一时钟SCLK的有效跳变;第二片选CS为低电平。这里,为了使时钟的部馈通最小,当片选CS为高电平时,输入时钟SCLK应当为低电平。 串行数模转换器TLC5615的使用有两种方式,即级联方式和非级联方式。如不使用级联方式,DIN只需输入12位数据。DIN输入的12位数据中,前10位为TLC5615输入的D/A转换数据,且输入时高位在前,低位在后,后两位必须写入数值为零的低于LSB的位,因为TLC5615的DAC输入锁存器为12位宽。如果使用TL5615的级联功能,来自DOUT的数据需要输入16位时钟下降沿,因此完成一次数据输入需要16个时钟周期,输入的数据也应为16位。输入的数据中,前4位为高虚拟位,中间10位为D/A转换数据,最后2位为低于LSB的位即零。b DA程序流程图DA程序流程图如图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为高电平时,SCLK必须为低电平。DS1302 的数据输入输出:向DS1302 写入数据时,数据在控制字节输入后的下一个SCLK周期的上升沿被写入,多余的SCLK将被忽略。数据写入时从低位(位0) 开始;同样,从DS1302 读取数据时,数据在紧跟控制字节后的下一个SCLK的下降沿读出,读出数据时也是从低位(0位) 到高位(7位) ,只要RST 保持高电平,额外的SCLK将导致数据字节的持续读出,这个特性用于实现该芯片的突发读模式。数据读写时序如图4-6所示:图4-6 DS1302的读写时序突发模式下,可以一次性读出所有日历时钟数据或RAM数据。b DS1302的寄存器DS1302 共有12 个寄存器,其中有7 个寄存器与日历、时钟相关,存放的数据位为BCD 码格式。其日历、时间寄存器与其控制字见表4-1:表4-1 DS1302的寄存器寄存器名命令字取值围各位容写操作读操作76543210秒寄存器80H81H00-59启动十位个位分寄存器82H83H00-590十位个位时寄存器84H85H00-12或00-2312/24010/AP十位个位日寄存器86H87H01-28,29,30,3100十位个位月寄存器88H89H01-12000十位个位周寄存器8AH8BH01-0700000个位年寄存器8CH8DH00-99十位个位c DS1302时钟程序流程图DS1302时钟程序流程图如图4-7所示:开始读取DS1302的秒值写入允许时钟芯片关闭N写入初始化时间写入禁止获取时钟芯片的时间时间、日期数据转化为液晶字符显示Y图4-7 DS1302时钟程序流程图在程序中定义了一个结构体,用来存储秒、分、时、星期、日、月、年信息,对DS1302的寄存器地址进行了声明,方便在编程时使用,依据DS1302读写单字节数据时序图编写实时时钟读写一个字节的函数,依据DS1302读写数据时序图编写向DS1302某地址写入数据和从DS1302某地址读出数据的函数,从DS1302某地址读出数据可以获取时钟芯片的时钟数据到自定义的结构型数组中,这样单片机就可以实时的从DS1302获取时间了,向DS1302某地址写入数据可以实现单片机对DS1302进行时间的初始化和修改操作。4.2.5测温模块程序设计a DS18B20的工作时序单总线在任何时刻只能有一个控制信号或数据,数据要能在单片机和单总线芯片之间实现可靠的传送,遵循单总线处理次序通信协议,确保数据有条不紊地传送,单总线处理次序图如图4-8所示:图4-8 单总线处理次序图处理次序操作时,一般有以下4 个过程:(1)初始化。基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机的应答脉冲组成。应答脉冲使主机知道总线上有从机设备,且准备就绪。(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,读电源模式。(4)数据交换。主机和从机之间进行数据的传输,所有的数据都是从低位开始读写的。所有的单总线器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号:复位脉冲、应答脉冲、写0、写1、读0 和读1。这些信号当中,除了应答信号是由从机发给主机的以外,其他的信号都是由主机发出同步信号,并且发送所有的命令和数据都是从字节的低位开始的。单总线上的所有通信都是以初始化时序开始,包括主机发出的复位脉冲与从机的应答脉冲,初始化时序如图4-9所示:图4-9 初始化时序当主机把数据从逻辑高电平拉到逻辑低电平时,写时序开始,写“1”和“0”, 写时序如图4-10所示:图4-10 写时序图4-11 读时序b 测温程序流程图测温程序流程图如图4-12所示: 开始DS18B20初始化跳过读序列号操作启动温度转换延时DS18B20初始化跳过读序列号操作读取温度寄存器值延时读取温度值低位读取温度值高位相加的温度值温度值转化为液晶字符图4-12 DS18b20温度传感器程序流程图根据初始化时序对DS18B20进行初始化,根据读写时序对DS18B20进行读写编程,另外,在循环读取温度数据后,要将读取的温度数据转换为可以在液晶上显示的液晶字符。4.2.6串行通信模块程序设计a RS232通信模块程序设计单片机通过MAX232与PC机通讯程序流程图4-13所示: 开始串口初始化保存数据发送数据RI等于1YNTI等于1RI置零TI置零YN4-13 单片机通过MAX232与PC机通讯程序流程图在PC机串口调试助手的发送窗口发送数据到单片机,单片机接收到数据后发送给PC机,并在串口调试助手接收窗口中显示。 b RS485通信模块程序设计单片机通过MAX485与PC机通讯程序流程图如图4-14所示:开始串口初始化保存数据发送数据RI等于1YNTI等于1RI置零TI置零YN485接收485发送4-14 单片机通过MAX485与PC机通讯程序流程图在程序中,当串口要接收数据时,使P3.2为低电平,当串口要发送数据时,使P3.2为高电平。在PC机串口调试助手的发送窗口发送数据到单片机,单片机接收到数据后发送给PC机,并在串口调试助手接收窗口中显示。4.2.7显示模块程序设计a 数码管程序数码管的显示方式可以分为动态和静态的。动态的也叫扫描方式,是利用发光二极管的余辉效应和人眼的视觉暂留效应来实现的,只要在在一定时间数码管的笔段亮的频率够快,人眼就看不出闪烁,一般外围硬件较少,但是对单片机资源耗用巨大。静态的也叫锁存方式,单片机送出数据后控制外围锁存器件锁存数据,这样数码管笔段里的电流不变,数码管稳定显示,这样单片机可以干别的活不用管数码管了。这种方案的优点是对单片机的P口资源和时间耗用很少,但是数码管的外围辅助电路复杂。在本程序中使用动态扫描法控制数码管显示,数码管程序流程图如图4-15所示:开始“4”段码送P0口位码送P1口选中第四位数码管“3”段码送P0口位码送P1口选中第三位数码管“2”段码送P0口位码送P1口选中第二位数码管“1”段码送P0口位码送P1口选中第一位数码管图4-15 数码管程序流程图P0口提供数码管显示所需的段码,4、3、2、1四位数字对应的共阴数码管的段码分别赋给变量dis0、dis1、dis2、dis3,在主函数中,依次将dis0、dis1、dis2、dis3送至P0口,由于八个数码管的每个段所对应的连线连在一起,只有被片选的数码管才会点亮。因此在将段码送至P0口的同时,还要用P1口送出位码片选中要显示的数码管,这样片选中的数码管就会显示特定的数字。程序中由低位到高位循环点亮数码管显示4、3、2、1。由于间隔时间的总和小于0.1秒,根据人眼的视觉暂留效应,四个数码管看起来同时点亮。b LCD1602显示程序1602液晶模块部的控制器共有11条控制指令,如表4-2所示:表4-2 控制指令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据容11从CGRAM或DDRAM读数11读出的数据容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明: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地址设置。指令8DDRAM地址设置。指令9读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10写数据。指令11读数据。读写操作时序如图4-16和4-17所示:图4-16 读操作时序图4-17 写操作时序LCD1602显示程序流程图如图4-18所示: 开始显示两个字符串完毕设置显示模式关闭显示显示清屏显示光标移动设置显示开与光标设置图4-18 LCD1602显示程序流程图液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,LCD1602的部显示地址见表4-3:表4-3 LCD1602的部显示地址12345678910111213141516第一行000102030405060708090A0B0C0D0E0F第二行404142434445464748494A4B4C4D4E4F比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。c LCD12864显示程序模块控制芯片提供两套控制命令,基本指令和扩充指令见表4-4:表4-4 基本指令表和扩充指令表指 指 令 码功 能令RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满20H,并且设定DDRAM的地址计数器(AC)到00H地址归位000000001X设定DDRAM的地址计数器(AC)到00H,并且将游标移到开头原点位置;这个指令不改变DDRAM 的容显示状态开/关0000001DCBD=1: 整体显示 ONC=1: 游标ON B=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向与指定显示的移位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的容 功能 设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作 设定CGRAM 地址0001AC5AC4AC3AC2AC1AC0设定CGRAM 地址 设定DDRAM 地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入到部的RAM (DDRAM/CGRAM/IRAM/GRAM)读出RAM的值11数据从部RAM读取数据D7D0(DDRAM/CGRAM/IRAM/G
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!