




免费预览已结束,剩余54页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1绪 论11.1系统开发背景和系统设计的意义11.2设计目标11.3设计方案的选择11.4论文结构32硬件系统设计42.1硬件设计框图42.2系统的硬件详细设计42.3主要芯片的介绍62.3.1单片机AT89S5262.3.2 A/D转换芯片MAX18772.3.3 D/A转换芯片TLC561882.4各功能模块电路的设计82.4.1串行通信电路82.4.2单片机外围电路92.4.3 A/D转换和D/A转换电路112.4.4 LED数码管显示电路142.4.5键盘电路152.4.6电源电路153软件系统设计173.1主程序流程图173.2 子模块程序设计173.2.1时钟处理模块173.2.2键盘处理模块183.2.3显示模块193.2.4串行通信模块194系统的调试214.1 硬件调试214.2 软件调试245结束语26参考文献27致谢28附录29附录1. 系统硬件电路图29附录2. 元件清单30附录3部分程序源代码31摘要本单片机系统采用AT89S52控制,整个硬件系统由A/D、D/A转换、LED显示、键盘、串行通信等模块组成。本设计只完成了单片机部分的开发设计,没有设计外部的采集和控制电路。因为没有外部采集电路,所以不能完成具体的测量功能,要完成具体的测量功能(如测量压力、温度、湿度)还要配上外部的各种传感器采集电路和相应的软件。若配上采集电路和相应的软件就能将测量结果用LED数码管十进制显示出来,其中包括了A/D、D/A转换,还可以用按键来控制,进行人机对话;系统中设置了5个按键,其中1个是复位键,其余的4个键,用程序来控制实现不同的功能。之所以没有设计外部采集电路是因为设计了外部采集电路系统的功能就比较单一,不方便系统功能的外部扩展。该系统还能实现单片机与PC机的串行通信和编程的下载、软件设计的时钟显示。关键词:单片机AT89S52;串行通信;A/D转换;D/A转换;LED数码管显示 AbstractIt adopts AT89S52 to control the Single Chip microcomputer system, the whole hardware system is composed of A/D and D/A transformation, LED display, keyboard, serial communication. The design has only completed part of the exploitation design and has not designed the circuit of external collection and control. Because of having not finished the external collection circuit, the material function of measuring has not been finished, in order to finlsh the material function of measuring such as measuring the pressure, temperature or the moisture, and it should be equiped with external sensor collection circuit and the relevant software. If collection circuit and the relevant software are equiped, it can realize that the metrical results are displayed by numeral tube LED in term of decimal system, including A/D and D/A transformation, it also can be controlled by keystroke, makes the man-machine conversation. The system is mounted by five keystroke, one restoring key, another four keys which can be used to realize different functions under the control of program. The reason why the external collection circuit has not been designed is because that the function of it will be single if it is designed and it will not be convenient to spread the function of the system. Here the whole system can realize serial communication of Single Chip Micyoco and machine PC, the download of programming, the display of the clock which is designed by software.Key words: Microcomputer AT89S52; serial communicaiton; A/D transformation; D/A tranformaiton; LED numeral tube display551绪论1.1系统开发背景和系统设计的意义自单片机出现至今,单片机技术已走过了近20年的发展路程。纵观20年来单片机发展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域为拉动,表现出较微处理器更具个性的发展趋势。与此同时在市场上以单片机为核心控制器的产品更是层出不穷,各种家用电器、智能仪器仪表、医疗器械、机电一体化、实时工业控制、交通领域无不用到单片机。从目前单片机的发展趋势来看,单片机控制技术已成为电子设计技术及计算机技术不可缺少的一个重要部分,因此单片机系统在电子世界里有着较好的前景,进行单片机的系统开发设计在当今电子领域有着重大的意义。1.2设计目标该设计要求实现:(1)、能够进行D/A转换功能;(2)、能够进行A/D转换功能;(3)、设计串行通信接口,实现与PC机的通信;(4)、具有人机对话功能,可通过键盘进行输入;(5)、LED显示器能够根据按键的输入进行相应的显示;(6)、自制+5V稳压电源。设计结果要求:完成电路的设计,硬件电路应该设计出原理图并画出PCB板图,完成软件程序的编写(包括流程图和部分源代码)。1.3设计方案的选择根基设计目标的要求,此系统可以采用以下两种设计方案来实现。方案一:设计的方框图如图1所示:D/A转换低通滤波功率放大激励装置电源电路控制器单片机AT89S52PC机A/D转换电路采样保持电路多路模拟开关传感器电路被测对象图1 方案一设计方框图从方案一的方框图中我们可以看出用此设计方案设计的系统由信号源即被测对象、传感器、多路模拟开关、采样保持电路、A/D转换电路、控制电路、PC机、D/A转换电路、低通滤波电路、功率放大电路、激励装置、电源电路等部分组成。此方案的特点是:硬件电路的实现相当的复杂,用到的元器件也较多;而且整个系统的控制过程用软件实现起来也比较的困难。总之是软件和硬件的实现都比较的复杂。方案二:设计的方框图如图2所示:外部采集电路A/D转换电路外部存储器按键电路LED显示电路控制器单片机AT89S52电源电路MAX232电平转换电路PC机D/A转换电路图2 方案二设计方框图从方案二的设计方框图中可以看出用此方案设计的系统由电源电路、数据采集放大电路、A/D转换电路、D/A转换电路、MAX232串行接口电路、单片机外围电路、LED显示电路、键盘电路等部分组成。此方案的特点是:硬件电路的实现较为简单、所用元器件也较少、系统可以配上外部的各种传感器采集电路作为系统的被测对象的模拟输入信号来源,如压力、温度、湿度的采集等等;配上相应的模拟采集电路和软件就可以实现各种不同的功能、还能用LED数码管十进制显示相应的测量数据,如可以显示测得的压力、温度、湿度;还可以实现和PC机串行通信和ISP编程下载功能,不需要编程器直接从PC上下载程序。对比两种设计方案,我选择方案二来设计此系统,因为方案二的硬件电路比方案一较简单;方案二配上外部的采集电路和相应的软件就可以实现各种不同的功能,而方案一只能实现一种功能;方案二的软件控制过程也比方案一的较为简单和直观,方案二的性能也比方案一的稳定,所以选择方案二来设计此系统。1.4论文结构本论文包括五个部分,分别为:1.绪论(系统开发背景、设计的意义、设计目标和方案的选择等);2.系统硬件设计(包括各模块的硬件电路设计、主要芯片的介绍等);3.系统软件设计(包括主程序流程图的设计、控制算法、);4.系统调试(包括硬件、软件的调试);5.附录(包括硬件整机原理图、元件清单、部分源程序代码)。2硬件系统设计2.1硬件设计框图硬件电路的设计框图就采用上面我们选择的方案二的设计框图。如图3所示:外部采集电路A/D转换电路D/A转换电路外部存储器按键电路LED显示电路控制器单片机AT89S52电源电路MAX232电平转换电路PC机图3 系统硬件设计框图本设计的主要硬件电路包括:电源电路、A/D转换电路、D/A转换电路、单片机与PC机串行通信接口和ISP编程下载电路、单片机外围电路、LED显示电路、键盘电路等部分。2.2系统的硬件详细设计 系统的硬件详细图如图4所示:图4 系统硬件详细设计图2.3主要芯片的介绍2.3.1单片机AT89S52AT89S52是低功耗,高性能CMOS 8位单片机,可反复擦写1000次的Flash只读程序存储器,兼容标准MCS-51指令系统及80C51引脚结构,其主要特点为:(1)、40个引脚DIP- 40封装,8k Bytes Flash片内程序存储器;(2)、256 bytes的随机存取数据存储器(RAM);(3)、5个中断优先级2层中断嵌套中断;(4)、2个16位可编程定时计数器,2个全双工串行通信接口。其引脚封装如图5所示;主要引脚介绍如下:图5 单片机AT89S52封装图(1)VCC、GND 电源、接地引脚;(2)XTAL1、AXTAL2 外部振荡器接入的两个引脚;(3)RESET 复位信号输入引脚;(4)RXD、TXD P3 口 作第二功能引脚用作串行通信接口输入、输出引脚;(5)P0.1P0.7 数据/地址总线引脚;P1.0P1.7一般的I/O口;P2.0P2.7一般的I/口。2.3.2 A/D转换芯片MAX187MAX187是串行12位ADC,内含高速采样保持器和基准电源,3条串口线,接口标准与ISP兼容,其主要特性如下:(1)+5V单电源供电;(2)正常工作电流小于1.5mA;(3)最大转换时间为8.5s,采样时间为1.5s;(4)采样频率达75Kbps,串行数据输出速率可达到5MHz。MAX187的封装图如图6所示:图6 MAX187的封装图(1)VDD +5V电源;(2)AIN 模拟量输入,电压范围0VREF;(3) 操作模式选择,低电平为休眠模式,正常操作模式为高电平或悬空,高电时使用内部参考模式,悬空时禁止使用内部参考;(4)REF 参考电压,内部参考为4.096V,使用内部参考时此引脚对地接一个4.7F的电容。使用外部参考时,接2.5VVDD的基准电压;(5)GND 接地引脚;(6)DOUT 数据输出引脚;(7) 片选信号输入引脚;(8)SCLK 时钟信号输入引脚,最高为5MHz。2.3.3 D/A转换芯片TLC5618TLC5618是可编程双路12位数/模转换器,TLC5618的特点:(1)可编程至0.5LSB的建立时间;(2)3线串行接口;(4)高阻抗基准输入;(5)电压输出范围为基准电压的两倍。 TLC5618的引脚排列如图7 所示,各个引脚的功能如下所述: 图7 TLC5618的引脚封装(1)DIN 数据输入; (2)SCLK 串行时钟输入; (3)CS 芯片选择,低电平有效; (4)OUTA DACA模拟输出; (5)AGND 模拟地; (6)REFIN 基准电压输入; (7)OUTB DACB模拟输出; (8)VDD 正电源。2.4各功能模块电路的设计2.4.1串行通信电路单片机与PC机串行通信接口电路及编程下载电路如图8所示:图8 单片机与PC机串行通信接口的电路本设计的串行通信部分主要是由MAX232电平转换电路和ISP编程下载电路组成,其原理是:MAX232芯片把单片机引脚的COMS电平(05V)转换为RS232电平(-12V +12V),AT89S52单片机有一个全双工的串行通信口,而PC机有一个RS232的通信接口。只要用RS232 D型9针的引脚的双边母头接到PC机上,而另一头和MAX232相连接,MAX232的输出再和AT58S52相连就可以实现单片机和PC机的串行通信1。具体连线如上图8所示,AT89S52的串行通信引脚的TXD和RXD分别接到MAX232的T1IN和T1OUT上,MAX232的R1OUT和R1IN分别接到RS232的2、3上,RS232的5脚接地。MAX232外围元件只有四个电容,根据MAX232的典型应用电路,可取0.1F 50V的电解电容。ISP编程口和AT89S52的连线为:AT89S52的P1.5、P1.6 P1.7、RESET分别连接到ISP的3、4、5、7脚上,ISP的1、2脚联合接电源9、10脚联合接地即可.直接从上位机上下载可执行的二进制代码文件,无须外加写读器。D1为下载指示灯,R1为限流电阻,发光二极管的压降为2V,电流取5mA,其阻值为:R1=5-2/0.005=600,考虑到和ISP一起共电,在此取1K。2.4.2单片机外围电路单片机外围电路如图9所示:图9 单片机外围电路单片机外围电路由复位电路、晶振电路、外部存储器电路组成。复位电路采用上电和按键都有效的复位电路。此电路能实现开机和单片机在运行时的复位,开机复位要求接通电源后,单片机自动实现复位操作,开机瞬间单片机的RST引脚获得高电平,随着电容C7的充电RST的高电平将逐渐下降。RST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。此电路还可以实现单片机在运行期间,手动来实现复位操作,在晶振为12MHz时,C7为10F、R1为10K、R2为1K。单片机的时钟信号为内部时钟方式,单片机内部有一振荡电路,只要在单片机的XTAL1和XTAL2引脚外接一石英晶体振荡器,就构成了自激振荡器并在单片机内部产生了时钟脉冲信号,图中C5和C6的作用是稳定频率和快速起振,电容值选为22F2。24C02是外部存储器,它的A0-A2管脚是地址脚,当一个电路中有多个I2C总线元器件时,单片机通过设置这三个管脚来区分是与那个元器件通信。现只有这一个I2C总线芯片,所以P3.4和P3.5上传输的I2C信号只能是与这个芯片进行通信3。我们将此三个管脚接地,表示其地址为000B。2.4.3 A/D转换和D/A转换电路 A/D转换和D/A转换电路如图10所示:图10 A/D和D/A转换电路A/D转换电路主要由A/D转换芯片MAX187和外围电容组成;D/A转换电路主D/A转换芯片TLC5618组成,MC1403是为TLC5618提供基准参考电压而设置的。 MAX187是12位AD转换芯片,C20和C12并联起电源去藕的作用。为保证采样精度,最好 将MAX187与AT89S52分开供电。4脚为参考端接一个4.7F的电容,这是使用内部4.096 V参考电压方式。输入模拟信号的电压范围为04.096 V,如模拟输入电压不在这个范围要外加电路进行电压范围的变换。其工作过程是:使用内部参考时,电源开启后,经过20 ms后参考引脚的4.7F电容充电完成,可进行正常的转换操作。当为低电平时,在下降沿MAX187的TH电路进入保持状态,并开始转换,8.5s后DOUT输出为高电平作为转换完成标志。这时可在SCLK端输入一串脉冲将结果从DOUT端移出,读入单片机中处理。数据读取完成后将置为高电平。要注意的是:在置为低电平启动A/D转换后,检测到DOUT有效(或者延时8.5s以上),才能发SCLK移位脉冲读数据,SCLK至少为13个,发完脉冲后应将置为高电平。MAX187完整的操作时序如图11所示。图11 MAX187的操作时系 D/A转换电路主要由D/A转换芯片TLC5618组成,TLC5618是带有缓冲基准输入的可编程双路12位数/模转换器。TLC5618的内部结构如下图图12所示,TLC5618由12位的A/D转换器、A逻辑控制器、双缓冲寄存器、16位移位寄存器、上电复位电路及寄存器A、B组成。上电复位功能可确保重复启动。DAC输出电压范围为基准电压的两倍,其输出极性与基准电压输入相同;基准电压来自基准电压芯片MC1403的输出端,其输出基准电压为VO=2.5V+0.025V,上电时内部电路把DAC寄存器复位至0,输出缓冲器具有可达电源电压幅度的输出。 图12 TLC5618的内部结构16位的数据中,前4位(D15D12)为编程控制位,其功能如下表1所示;后12位(D11D0)为数据位,用于模拟数据的输出。从表1中可以看出,TLC5618可工作在三种数据传送方式。 TLC5618的最大串行时钟速率为:f(SCLK)max=1/tW(CH)mintW(CL)min=20MHz数据的更新速率受片选周期限制,此时tp(cs)=16Xtw(CH)+tw(CL)+tsU(CS1)=820ns对于满度输入阶跃跳变,移位寄存器至12位寄存器的建立时间限制了更新速率。表1可知建立时间可选为3s或15s。当片选(CS)为低电平时,输入数据由时钟定时,以最高有效位在前的方式读入16位移位寄存器, SCLK的下降沿把数据移入寄存器A、B,然后CS的上升沿把数据送到12位DAC转换器。所有CS的跳变应当发生在SCLK输入为低电平时。D15D12编程控制位如下表1所示,TLC5618的时序如图13所示。图13 TLC5618的操作时序表1 D15D12编程控制位的功能编 程 位代 码 功 能D15D14D13D121XXX把串行接口寄存器的数据写入锁存器A并用缓冲器锁存数据更新锁存器B0XX0写锁存器B和双缓冲锁存器0XX1仅写双缓冲锁存器X1XX14S建立时间X0XX3S建立时间XXXX上电(Powerup)操作XX1X断电(Powerdown)方式2.4.4 LED数码管显示电路 LED数码显示电路如图14所示: 图14 LED数码显示电路 LED显示电路由74LS138译码器,三极管放大电路,限流电阻电路、共阳极LED数码管、驱动共阳级LED数码管的74LS47等组成。电路的工作原理是38译码器将单片机输出的三位二进制代码不同的八种组合“翻译”成不同的对应输出信号,其对应的8种组合分别与一个输出对应,8个输出在任何情况下都只有一个有效,在此我们只用其中的6种对应信号。因为只有6只数码管;分别用来选择6只数码管到底哪一只被点亮,如输出输入ABC=001时,则第一个数码管被选择点亮;ABC=010时,第二个数码管被点亮,其余的依此类推。采用逐个扫描哪个LED被点亮,由于人的视觉具有残留效应,因此感觉不到闪烁4。同时74LS47将单片机送来的BCD码翻译成LED显示该BCD的七段信息输出。驱动共阳的74LS47数码是低电平有效,当输入的段为逻辑“0”时,对应LED的段才点亮。如74LS47的输入DCBA=0001时,它转换为十进制就是1,那么此时选中的数码管就要显示十进制的1,那对应的输出就abcdefg=0110000,其他情况是依此类推。图中三极管起驱动LED的作用,电阻用作限流作用,取三极管基极限流电阻1K,LED限流电阻100。2.4.5键盘电路键盘输入电路与单片机的连接电路如图15所示:图15 键盘电路键盘用以控制程序的执行时数据的输入或是特殊功能的设置及操作,在此设计中用到5个按键,在硬件电路上采用AT89S52的P2端口的5条I/O线当作输入用,用程序来控制,在键没有按下的时候对应的输入端为高电平,当有一个键按下时对应的输入端为低电平,经过轮流扫描判断输入端是否为低电平,便可以知道是按下了哪个键4。当按下复位键时系统复位,单按下功能1键时发光二极管D5闪动2次,当按下功能2键D5闪动3次,当按下功能3键D5闪动4次,相应的按下功能4键D5闪动5次。图中的电阻为上拉电阻,在此我们选择阻值为10K。2.4.6电源电路电源电路如图16所示:图16 电源电路电源电路是整个系统工作的能量来源,主要由变压器、桥式整流电路、滤波电容电路、低功率三端稳压器LM7805等组成。上图中我们设计的是系统中所需的+5V的电源。其工作原理是变压器把市电220V的交流电降压为低压交流电,通过桥式整流电路把低压交流整流为含有脉动和谐波成份的直流电,再通过滤波电容把其中含有的脉动的交流成份滤出,就成为平缓的直流电,直流电压不够稳定,它再通过三端稳压器LM7805把电压稳定在一个基本不变的数值上,LM7805输出的稳定的电压就可以作系统的电源用了。3软件系统设计3.1主程序流程图系统由AT89S52单片机作为中央控制器,控制各功能模块的正常工作及数据的接收和处理。系统分为五个模块,分别为:时钟、串行通信、键盘扫描、显示子程序。但在此我们没有外部传感器采集电路,因而不能进行A/D和D/A转换,整个软件系统是这样来设计的:首先上位机编辑好源程序再转换为相应的可执行的二进制代码文件由串口通信程序经过串口传送到单片机中存储。通过按键来控制系统的功能,主程序的流程图如图所17示:开 始 系统初始化 键盘处理子程序键盘处理 时 钟时钟处理子程序 串行通信串行处理子程序 A/D、D/A转换 LED显示 返 回图17 系统主程序主程序流程图3.2各子模块程序设计3.2.1时钟处理模块时钟子程序的流程图如图18所示:开 始定时中断10ms 是否为60? Y N是否为60? N Y 小时加1,分钟复位是否为24? Y Y N秒加1,毫秒复位分钟加1,秒复位 Y小时复位返 回 图18 时钟流程图3.2.2键盘处理模块设有5个按键分别由P2.3P2.7来检测,当开关被按下时为“0”电平,因此要取反向和0X0F作AND运算,但同时只能按下一个键,其源程序如下所示:/one key detect Void Inputkey1(void) Byte keytmp;Keytmp= (P2.3-P2.7) & 0 x0f; /”0”:activeIf (keytmp= =1) keydata = KEY1;Else if (keytmp= =2) keydata =KEY2; Else if (keytmp= =4) keydata =KEY3; Else if(keytmp= =8) keydata =KEY4; Else if(keytmp= =16) keydaata =KEY5; 3.2.3显示模块显示模块程序的流程较简单,在此就不画流程图,其源程序如下所示: void ScrShift(uchar keyIndex) /*六位数码管顺序左移*/ uchar i; for(i=5;i0;i-) DisplayArrayi=DisplayArrayi-1; DisplayArray0=c_keyCodekeyIndex; void ClearScr(void) /*清屏*/ uchar i; for(i=0;i6;i+) DisplayArrayi=0 x00; 3.2.4串行通信模块串行通信子程序的流程图如图19所示:开中断串口是否空闲? Y N发送数据接收数据关空闲信号返 回 图19 串行通信程序流程图4系统的调试4.1 硬件调试硬件的调试包括:PCB板的设计和制作、元件的装配、电路中各部分电压和电流的测试等。其中难点是PCB板的设计和制作。因为PCB板的设计要涉及到元器件的封装,PCB板上元器件的封装和我们买来的元器件的封装不相同,系统将无法装配,即使能装上元件,系统也将不能工作,设计将不会成功。PCB板的设计的主要过程如图20到图22所示。在原理图中元件封装正确的情况下创建网络表。把网络表导入PCB文件,修改封装中出现的错误直到完全正确为止,在PCB板中排放元件封装的合适位置,然后自动布线。经过以上几个主要的步骤设计出如图23和图24所示的PCB板图。图20 网络表导入PCB板图文件图21 更新PCB板元件封装错误显示对话框(有错) 图22 更新PCB板元件封装错误显示对话框(无错)图23 电源部分PCB板图图24 整机PCB板图4.2 软件调试在整个软件系统中包含了时钟模块,键盘处理模块,串行通信模块,LED显示模块,由于没有输入和输出控制器,在编译时在主程序中未加入MAX187和TLC5618处理程序,编译结果如图25所示: 图25 程序编译结果图程序执行结果如图26所示:图26 程序执行结果图5.结束语本单片机开发系统的设计思路与方法新颖,它可满足单片机初学者、在校学生课程设计、毕业设计、电子科技制作使用,也为单片机研究开发人员创造了很好的开发环境,以节省大量的开发时间,它的适用性很强,经过反复验证,仿真,并做好电路板,可直接生产使用。参考文献1 陈明荧8051单片机课程设计实训教材M. 清华大学出版社,2004:2843.2 秦实宏,周龙等单片机原理与应用技术M. 中国水利水电出版社,2005:3550.3 求是科技单片机通信技术与工程实践M. 人民邮电出版社, 2004:1214.4 求是科技单片机典型模块设计实例导航M. 人民邮电出版社, 2004:122135.5 马忠梅等单片机的C语言应用程序设计M. 北京航空航天大学出版社,2003:3739.6 杨将新,李华军等单片机程序设计及应用M. 电子工业出版社, 2006:142154.7 范风强,兰蝉丽单片机语言C51应用实战集锦M. 电子工业出版社, 2005:212234.8 胡汉才单片机原理及接口技术M. 青华大学出版社,1996:132145.9 刘迎春传感器原理设计与应用M. 国防科技大学出版社,2005:122154.10 赵亮,侯国锐等单片机C语言编程与实例M. 人民邮电出版社,2003:5284.11 何立民单片机与嵌入式系统应用J. 北京航空航天出版社,2003:142164.12 夏路易等电路原理图与电路板设计教程M. 北京希望电子出版社, 2002:222284.致 谢经过几个月的努力,我按时完成了毕业设计。毕业设计是对大学四年所学知识的综合应用,也是理论走向实践的第一步,在此设计过程中,我更深刻地理解了设计的概念,扩展了知识面,加深理解了某些知识点,提高了独立思考和自学的能力,更重要的是提高了实践能力,为以后走向工作岗位奠定了基础,这将使我终身受益。当懂得很多以前没有弄懂的知识时,心中充满了欣慰。在此首先感谢母校的辛勤培育之恩;其次,感谢物理学与电子信息工程系给我提供了很好的设计环境,使我的设计得以顺利的进行。最后,感谢设计指导老师,他渊博的专业知识,严谨的治学作风,育人求实的工作态度都体现在这次设计的指导中;每当我遇到困难时,他总是耐心细致地给我讲解,帮助我度过一个又一个难关,使得我的设计能有条不紊的进行。对在整个毕业设计过程中,方老师给予的指导和帮助,我表示衷心的感谢;另外系上其他老师和同学都给了我大力支持和帮助,对这些老师和同学表示诚挚的谢意;谢谢你们。在未来的工作和学习中,我将以更好的成绩来回报各位领导和老师。附录附录1. 系统硬件电路图 系统总的硬件电路图如图27 所示: 图27 系统硬件整体原理图附录2. 元件清单 表3 元件清单元件编号元件名称元件型号数量1单片机AT89S521块2A/D转换器MAX1871块3D/A转换器TLC56181块4 存储器芯片24C021块5串行接口9针母头RS2321个6电平转换芯片MAX2321块7三端稳压器LM78051块8 2.5V基准电压芯片MC14031块938译码器74LS1381块10共阳极数码管驱动器74LS471块11变压器7.5V1个12桥式整流器BRIDGEG11块13ISP编程接口ISP1块14共阳极数码管LED6个15三极管PNP6个16发光二极管红 光2个17电解电容2200、47(各1)、4.7(2)、0.01(4)8个18无极性电容22(2)、10、0.7、0.1(各1)5个19电阻10K(8)、1K(9) 、1006(7)24个附录3. 部分程序源代码/* 本程序集成了与PC通信的串口服务程序,所有按键的功能也可以通过PC机的控制软件实现。状态也可以反馈到此* 控制软件上。* 资源配置:Timer0用于为系统提供时基;Timer2用于串口波特率发生器。* 2个中断源,其中一个为Timer0,另一个为串口中断,主要完成与PC机的通信。*/*/Beginning of Program/*/#include at89x52.h#include #include #define nop _nop_() #define uchar unsigned char #define uint unsigned int#define SCAN_CYCLE 500/*/*Constant Tables*/static const char c_keyCode16=0 x01,0 x02,0 x03,0 x0a, /*键盘1,2,3,A*/ 0 x04,0 x05,0 x06,0 x0b, /*键盘4,5,6,B*/ 0 x07,0 x08,0 x09,0 x0c, /*键盘7,8,9,C*/ 0 x0e,0 x00,0 x0f,0 x0d; /*键盘*,0,#,D*/*Constant Tables Over*/*/*DA转化DAC5618sbit DIN=P13; /定义P1.3为串行数据口sbit CLK=P14; /P1.4为串行时钟端sbit CS =P15; /P1.5为片选端/*AD转化MAX187sbit SCLK =P16; /MAX187时钟sbit CS187=P17; /MAX187片选sbit SDOUT=P30; /MAX187数据输出/*System Variables*/uint keyFlag;uchar hour=10;min=0;sec=0;uchar DisplayArray6;static uchar LEDFlag=0;bit LEDCycle100msFlag=0,LEDCycle500usFlag=0,LEDCycle10msFlag=0,LEDAutoFlag=1,LEDKeyFlag=0;static uchar s_musicCounter=0 x00,s_tableCounter;uchar Int0Flag,TH0Global,TL0Global;uchar UARTKeyFlag=0 xaa,modifyTimeFlag=0;/*System Variables Over*/*/*System Functions*/void Login(void);void MainSystem(void); /*系统主程序*/void ScanKeys(void); /*扫描键盘模块*/uchar KeyJudge(void); /*按键预处理*/void KeyHandle(uchar keyIndex); /*按键处理模块*/void LEDHandle(void); /*流水灯方案选择*/void AutoShow(void); /*开始流水灯自动循环演示*/void StopAutoShow(void); /*停止流水灯自动循环演示*/void DropDown(void); /*水滴方案*/void CircleFlash(void); /*环扫方案*/void GradualFlash(void); /*渐明渐暗方案*/void SlowFlash(void); /*慢闪方案*/void FastFlash(void); /*快闪方案*/void ScrShift(uchar keyIndex); /*六位数码管顺序左移*/void ClearScr(void); /*清屏*/void StatusSend(void); /*下位机状态反馈(串口)*/ void Delay (uint value); /*10us延时*/void ModifyTime(void); /*调整时间*/void ScanSeg7(); /*数码管扫描显示*/*System Functions Over*/*/*/void main(void) /*主程序入口*/ TMOD=0 x11;/*Timer0工作在案MODE1,16位定时器,Timer1工作在MODE2,自动重新装载模式*/ /*| 定时器1 | 定时器1 |*/ /*| GATE|C/T| M1 | M0 | GATE|C/T| M1 | M0 |*/TH0=(65536-SCAN_CYCLE)/256; /*设定Timer0每隔SCAN_CYCLEu中断一次*/ TL0=(65536-SCAN_CYCLE)%256; TR0=1; /*启动TEMER0*/ TH1=(65536-10000)/256;/*设定Timer1每10ms中断一次*/ TL1=(65536-10000)%256;T2CON=0 x38;/*令定时器2作为串口波特率发生器 /*|TF2|EXF2|RCLK|TCLK|EXEN2|TR2|C/T2|CP/RL2|*/TL2=0 xd9;/*设定串口波特率为9600,晶振为12MHz*/TH2=0 xff;RCAP2L=0 xd9; /*根据串口波特率9600设定自动重载寄存器*/RCAP2H=0 xff; TR2=1;/*启动定时器2*/SCON=0 x50;/*设定UART工作在MODE3模式,可传送和接收数据,REN=1*/ /*| SM0| SM1| SM2| REN| TB8| RB8| TI | RI |*/ IE=0 x9a;/*使能总中断、Timer0,1中断、外部中断1,2*/ /*| EA| - | ET2| ES | ET1| EX1| ET0| EX0|*/ IP=0 x12;/*优先Timer0中断*/ /*| - | - | PT2| PS | PT1| PX1| PT0| PX0|*/ ClearScr();/*预清屏*/ P3_3=1;/*关喇叭*/P2=0 x00; /*点亮8个发光二极管*/ while(1) Login();void Login(void)/*系统登录模块*/ static uint s_UARTSendCounter;uchar keyPtr; TR1=1; /*启动系统时基Timer1,中断周期10ms*/ keyPtr=KeyJudge(); /*键盘扫描判断*/if(keyPtr!=0 x55) switch(c_keyCodekeyPtr) case 0 x0a: case 0 x0b: case 0 x0c: case 0 x0d: case 0 x0e: case 0 x0f: ClearScr();/*清屏*/ Login(); break; default: ScrShift(keyPtr); /*以上均不是则为数字键,六位数码管顺序左移*/ break; UARTKeyFlag=0 xaa; /*清串口键盘命令标志位*/if(+s_UARTSendCounter200) /*定期上传系统状态*/ s_UARTSendCounter=0; StatusSend(); ClearScr(); /*清屏*/ LEDFlag=0 x01;ModifyTime(); /*初始设定时间*/ while (1) MainSystem(); /*进入系统主程序*/*/void MainSystem(void) /*系统主程序*/ static uint s_UARTSendCounter;uchar keyPtr; keyPtr=KeyJudge(); /*键盘扫描判断*/if(keyPtr!=0 x55) /*如果按某键则进行相应处理*/ KeyHandle(keyPtr);UARTKeyFlag=0 xaa; /*清串口键盘命令标志位*/ LEDHandle(); /*流水灯处理模块*/if(+s_UARTSendCounter200) /*定期上传系统状态*/ s_UARTSendCounter=0; StatusSend();if(modifyTimeFlag=1) ModifyTime(); /*根据新秒值调整时间*/modifyTimeFlag=0;/*/void ScanKeys(void) /*扫描键盘模块*/uchar scanValue=0 xef,iScan,scanTempUchar; for(iScan=0;iScan4;iScan+) P1=scanValue; /*发扫描值*/ scanTempUchar=P1; /*读入扫描值*/ if(scanTempUchar&0 x01)=0 x00) /*第一列被按*/ keyFlag|=(0 x0001(iScan*4+0); /*置此键的标志位*/ else keyFlag&=(0 x0001(iScan*4+0);/*清此键的标志位*/ if(scanTempUchar&0 x02)=0 x00) /*第二列被按*/ keyFlag|=(0 x0001(iScan*4+1); /*置此键的标志位*/ else keyFlag&=(0 x0001(iScan*4+1);/*清此键的标志位*/ if(scanTempUchar&0 x04)=0 x00) /*第三列被按*/ keyFlag|=0 x0001(iScan*4+2); /*置此键的标志位*/ else keyFlag&=(0 x0001(iScan*4+2);/*清此键的标志位*/ if(scanTempUchar&0 x08)=0 x00) /*第四列被按*/ keyFlag|=0 x0001(iScan*4+3); /*置此键的标志位*/ else keyFlag&=(0 x0001(iScan*4+3);/*清此键的标志位*/ scanValue=scanValue1|0 x01; /*置下一次扫描值*/ /*/uchar KeyJudge(void) /*按键预处理*/ uchar j,counterKeyPressedNum; uchar keyRet=0 x55; /*初始按键返回码设定为无按码0 x55*/ uint uintTemp; ScanKeys(); /*扫描键盘*/ if(keyFlag!=0) Delay(1000); /*延时10ms以消除抖动*/ ScanKeys(); P1=0 x0f;while(P1&0 x0f)!=0 x0f); /*没松开按键就等按键松开*/ counterKeyPressedNum=0; for(j=0;j16;j+) uintTemp=(uint)0 x0001)1) /*如果不止一个键被按则丢弃此状态返回无按码0 x55*/ return 0 x55; else /*某键被按,返回此键的标识码*/ return(keyRet); if(UARTKeyFlag!=0 xaa) /*如果上位机发键盘指令则返回此键盘值*/ return(UARTKeyFlag);return(0 x55);/*/void KeyHandle(uchar keyIndex) /*按键处理模块*/ switch(c_keyCodekeyIndex) /*按数字键N:循环播放第N首音乐*/ case 0 x00: break;case 0 x01: break; case 0 x02: break;case 0 x03: break;case 0 x04: break;case 0 x05: break;case 0 x06: break;case 0 x07: break;case 0 x08: break;case 0 x09: break;case 0 x0a: sec+; /*按A键:调整时钟秒值*/ ModifyTime(); break; case 0 x0b: min+; /*按B键:调整时钟分值*/ ModifyTime(); break; case 0 x0c: hour+; /*按C键:调整时钟时值*/ ModifyTime(); break; case 0 x0d: break; case 0 x0e: if(LEDKeyFlag=1) /*按*键:开始/停止流水灯自动演示*/ AutoShow(); LEDKeyFlag=LEDKeyFlag; else StopAutoShow(); LEDKeyFlag=LEDKeyFlag; break; case 0 x0f: if(+LEDFlag5) /*按#键:流水灯方案循环切换*/ LEDFlag=1; break; default: break; /*/void LEDHandle(void) /*流水灯方案选择*/ switch(LEDFlag) /*判断该演示的流水灯方案*/ case 0 x01: DropDown(); break; /*水滴方案*/case 0 x02: CircleFlash(); break; /*环扫方案*/case 0 x03: GradualFlash(); break; /*渐明渐暗方案*/case 0 x04: SlowFlash(); break; /*慢闪方案*/case 0 x05: FastFlash(); break; /*快闪方案*/ /*/void AutoShow(void) /*开始流水灯自动循环演示*/ LEDFlag=1; LEDAutoFlag=1;/*/void StopAutoShow(void) /*停止流水灯自动循环演示*/ LEDAutoFlag=0;/*/void DropDown(void) /*水滴方案*/ static uchar s_dropdownCounter=0,s_dropdown_i=7,s_dropdown_OverCounter; uchar rest; if(LEDCycle100msFlag=1) /*判断100ms是否到*/ LEDCycle100msFlag=0; rest=s_dropdownCounter%8;P2=(0 x01(7-s_dropdown_i);/*使水滴流到某个灯并且让流到底的灯常亮*/if(s_dropdownCounter=(8-s_dropdown_i)*7) /*判
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GM/T 0139-2024信息系统密码应用安全管理体系
- 村服务平台管理办法
- 固化炉模具管理办法
- 垃圾焚烧炉管理办法
- 员工操作室管理办法
- 朝天区民宿管理办法
- 文物网格化管理办法
- 干细胞种子管理办法
- 原纸分切机管理办法
- 果树未挂果管理办法
- 人员异地办公管理办法
- 2025年新修订治安管理处罚法课件
- 提高服务意识培训课件
- 贸易公司员工职业操守行为准则制度
- 护理50项操作考核评分标准
- 22J403-1楼梯栏杆栏板
- GB/T 45792-2025专题地图地理底图编制规范
- 慢性阻塞性肺疾病急性加重(AECOPD)
- 2025-2030年中国固体氧化物燃料电池(SOFC)行业市场现状供需分析及投资评估规划分析研究报告
- 2025至2030年中国氟化磷腈橡胶行业市场现状调查及发展趋向研判报告
- 2025-2030中国微创仪器行业市场发展趋势与前景展望战略研究报告
评论
0/150
提交评论