2000t成型材料(模塑料)扩产项目职业病危害预评价报告书-毕业论文.doc
目录第一章 绪论11.1 设计背景11.2设计目的11.2设计任务1第二章 方案选择12.1 单片机芯片12.2 数码管驱动方式22.3 显示模块22.4 时钟芯片3第三章 硬件设计33.1 单片机主机系统33.1.1 STC89C52单片机33.1.2 时钟电路73.1.3 复位电路73.2 USB下载部分.83.3 数码管93.3.1 数码管原理介绍93.3.2 数码管电路设计103.3.3 74LS573芯片113.4 矩阵式键盘123.5 LED灯133.6 LCD液晶显示屏133.7 闹钟16第四章 软件设计164.1 点亮LED164.2 数码管显示59秒倒计时174.3 矩阵键盘检测及控制184.4 串口通信184.5 LCD1602液晶显示年月日,时间可用键盘调节19第五章 调试及结果分析204.1 测试仪器204.1 软件测试平台 Keil C51214.1 测试结果21第六章 总结21第七章 参考文献22附录一23附录二231 绪论1.1 设计背景近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。本课设设计一个基于51单片机开发系统的PCB电路板,使之能够完成一系列基本功能。1.2设计目的1加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。2用单片机模拟实现具体应用,使个人设计能够真正使用。3把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。4提高利用已学知识分析和解决问题的能力。5)提高实践动手能力。1.3设计任务 1基本系统:在51单片机开发系统PCB电路板上完成电子元器件的焊接、调试、程序下载,并实现数码管显示、矩阵键盘扫描、中断程序、定时器程序、串口通讯等基本功能;2显示功能:焊接电路并实现对1602液晶屏的显示功能,要求能滚动显示字符;3输出控制:焊接电路并实现对继电器的控制功能;4数据采集:焊接电路并实现对AD0832的数据采集功能; 2 方案选择2.1单片机芯片方案一: 采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用STC89C52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,使用ISP下载方式,重新编程时自动擦除原有的程序。当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用STC89C52作为主控制系统.2.2数码管的驱动方式方案一74HC595是美国国家半导体公司生产的通用移位寄存器芯片。并行输出端具有输出锁存功能。与单片机连接简单方便,只须三个I/O口即可。而且通过芯片的Q7引脚和SER引脚,可以级联。而且价格低廉,每片单价为1.5元左右。方案二CH452是数码管显示驱动和键盘扫描控制芯片。CH452 内置时钟振荡电路,可以动态驱动8 位数码管或者64 位LED,具有BCD 译码、闪烁、移位、段位寻址、光柱译码等功能;同时还可以进行64 键的键盘扫描;CH452 通过可以级联的4线串行接口或者2 线串行接口与单片机等交换数据;并且可以对单片机提供上电复位信号。方案三带锁存的驱动芯片(设想中未试验通过)74HC573 主要针对单片机IO口充足,但是要求对单片机时间资源占用少的情况。综上,选择74HC573。2.3显示模块方案一:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示.方案二:采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,但无法显示图形文字,在显示星期是也只能用数字表示,而且采用动态扫描法与单片机连接时,在编程时比较复杂。所以也不采用了LED数码管作为显示。方案三:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见。所以在此设计中采用LCD液晶显示屏。2.4时钟芯片方案一:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。方案二:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案可以减少芯片的使用,也可以节约成本。所以采用此方案。 3 硬件设计3.1单片机主机系统 图3 -1 单片机主机系统图3.1.1 STC89C52单片机 STC89C52单片机最初是由Intel 公司开发设计的,但后来Intel 公司把51 核的设计方案卖给了几家大的电子设计生产商,譬如 SST、Philip、Atmel 等大公司。如是市面上出现了各式各样的但均以51 为内核的单片机,倒是Intel 公司自己的单片机却显得逊色了。这些各大电子生产商推出的单片机都兼容51 指令、并在51 的基础上扩展一些功能而内部结构是与51 一致的。 STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。 3-1a STC89C52单片机的基本组成框图(1) STC89C52单片机主要特性1. 一个8 位的微处理器(CPU)。 2. 片内数据存储器RAM(128B),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89 系列单片机最多提供1K 的RAM。 3. 片内程序存储器ROM(4KB),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带ROM/EPROM,如8031,8032,80C31 等。目前单片机的发展趋势是将RAM 和ROM 都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。SST 公司推出的89 系列单片机分别集成了16K、32K、64K Flash 存储器,可供用户根据需要选用。 4. 四个8 位并行IO 接口P0P3,每个口既可以用作输入,也可以用作输出。 5. 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52 系列单片机都会提供3 个16 位定时器/计数器。 6. 五个中断源的中断控制系统。现在新推出的单片机都不只5 个中断源,例如SST89E58RD 就有9 个中断源。 7. 一个全双工UART(通用异步接收发送器)的串行IO 口,用于实现单片机之间或单机与微机之间的串行通信。 8. 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为12MHz。SST89V58RD 最高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。 (2) STC89C52单片机管脚图 3-1b STC89C52单片机管脚图部分引脚说明: 1. 时钟电路引脚XTAL1 和XTAL2: XTAL2(18 脚):接外部晶体和微调电容的一端;在8051 片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。 要检查8051/8031 的振荡电路是否正常工作,可用示波器查看XTAL2 端是否有脉冲信号输出。 XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。 2. 控制信号引脚RST,ALE,PSEN 和EA: RST/VPD(9 脚):RST 是复位信号输入端,高电平有效。当此输入端保持备用电源的输入端。当主电源Vcc 发生故障,降低到低电平规定值时,将5V 电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。RST 引脚的第二功能是VPD,即接入RST 端,为RAM 提供备用电源,以保证存储在RAM 中的信息不丢失,从而合复位后能继续正常运行。 ALE/PROG(30 脚):地址锁存允许信号端。当8051 上电正常工作后,ALE 引脚不断向外输出正脉冲信号,此频率为振荡器频率fOSC 的1/6。CPU 访问片外存储器时,ALE 输出信号作为锁存低8 位地址的控制信号。 平时不访问片外存储器时,ALE 端也以振荡频率的1/6 固定输出正脉冲,因而ALE 信号可以用作对外输出时钟或定时信号。如果想确定8051/8031 芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。如有脉冲信号输出,则8051/8031 基本上是好的。 ALE 端的负载驱动能力为8 个LS 型TTL(低功耗甚高速TTL)负载。 此引脚的第二功能PROG 在对片内带有4KB EPROM 的8751 编程写入(固化程序)时,作为编程脉冲输入端。 PSEN(29 脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引肢接EPROM 的OE 端(见后面几章任何一个小系统硬件图)。PSEN 端有效,即允许读出EPROMROM 中的指令码。PSEN 端同样可驱动8 个LS 型TTL 负载。要检查一个8051/8031 小系统上电后CPU 能否正常到EPROMROM 中读取指令码,也可用示波器看PSEN 端有无脉冲输出。如有则说明基本上工作正常。 EA/Vpp(31 脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA 引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过0FFFH(对8751/8051 为4K)时,将自动转去执行片外程序存储器内的程序。当输入信号EA 引脚接低电平(接地)时,CPU 只访问外部EPROM/ROM 并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内ROM 的8031 或8032,需外扩EPROM,此时必须将EA 引脚接地。此引脚的第二功能是Vpp 是对8751 片内EPROM固化编程时,作为施加较高编程电压(一般12V21V)的输入端。 3. 输入/输出端口P0/P1/P2/P3: P0口(P0.0P0.7,3932 脚):P0口是一个漏极开路的8 位准双向I/O口。作为漏极开路的输出端口,每位能驱动8 个LS 型TTL 负载。当P0 口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0 口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写1,这就是准双向口的含义。在CPU 访问片外存储器时,P0口分时提供低8 位地址和8 位数据的复用总线。在此期间,P0口内部上拉电阻有效。 P1口(P1.0P1.7,18 脚):P1口是一个带内部上拉电阻的8 位准双向I/O口。P1口每位能驱动4 个LS 型TTL 负载。在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。 P2口(P2.0P2.7,2128 脚):P2口是一个带内部上拉电阻的8 位准双向I/O口。P口每位能驱动4个LS 型TTL 负载。在访问片外EPROM/RAM 时,它输出高8 位地址。 P3口(P3.0P3.7,1017 脚):P3口是一个带内部上拉电阻的8 位准双向I/O口。P3口每位能驱动4个LS型TTL负载。P3口与其它I/O 端口有很大的区别,它的每个引脚都有第二功能,如下: P3.0:(RXD)串行数据接收。 P3.1:(RXD)串行数据发送。 P3.2:(INT0#)外部中断0输入。 P3.3:(INT1#)外部中断1输入。 P3.4:(T0)定时/计数器0的外部计数输入。 P3.5:(T1)定时/计数器1的外部计数输入。 P3.6:(WR#)外部数据存储器写选通。 P3.7:(RD#)外部数据存储器读选通。 (3) STC89C52单片机的中断系统 STC89C52系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。 (4) STC89C52单片机的定时/计数器 在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。89C52单片机内集成有两个可编程的定时/计数器:T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器。3.1.2时钟电路 时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图3-1所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。图3-1中外接晶体以及电容C21和C22构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值为33pF左右,晶振频率选11.0592MHz 。3.1.3复位电路为了初始化单片机内部的某些特殊功能寄存器,必须利用复位电路,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。图2-1中R19和C20组成上电复位电路,其值R取为10K, C取为10uF。3.2 USB下载部分 图3-2 USB下载部分电路图USB 转串口芯片 CH340G1 概述 CH340G 是一个 USB 总线的转接芯片,实现 USB 转串口、USB 转 IrDA 红外或者 USB 转打印口。 在串口方式下,CH340G 提供常用的 MODEM 联络信号,用于为计算机扩展异步串口,或者将普通的 串口设备直接升级到 USB 总线。 在红外方式下,CH340 外加红外收发器即可构成 USB 红外线适配器,实现 SIR 红外线通讯。2 特点 全速 USB 设备接口,兼容 USB V2.0,外围元器件只需要晶体和电容。 仿真标准串口,用于升级原串口外围设备,或者通过 USB 增加额外串口。 计算机端 Windows 操作系统下的串口应用程序完全兼容,无需修改。 硬件全双工串口,内置收发缓冲区,支持通讯波特率 50bps2Mbps。 支持常用的 MODEM 联络信号 RTS、DTR、DCD、RI、DSR、CTS。 通过外加电平转换器件,提供 RS232、RS485、RS422 等接口。 支持 IrDA 规范 SIR 红外线通讯,支持波特率 2400bps 到 115200bps。 由于是通过 USB 转换的串口,所以只能做到应用层兼容,而无法绝对相同。 软件兼容 CH341,可以直接使用 CH341 的驱动程序。 支持 5V 电源电压和 3.3V 电源电压。 提供 SSOP-20 无铅封装,兼容 RoHS。3.3 数码管3.3.1 数码管原理介绍 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管; 按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。3.3.2数码管电路设计 如下图所示为一位共阴极数码管的硬件电路连接图,由于数码管内部实际为8个LED灯,如果把LED的阳级直接单片机的IO的口,会使LED通过的电流过大从而把数码管烧毁,因此在设计的时候在LED的阳级和单片机的IO之间加上了限流电阻从而起到限流作用。根据经验,这里选取了1K电阻。程序编写的时候我们预先根据要显示的字符,编写了个对应要显示的数组,这样可以使程序更加简化。 图3-3a 共阴极数码管的管脚平排列和内部结构图3.3.3 74LS573芯片 图3-3b 74LS573芯片驱动电路图3-3c 74LS573芯片引脚图3.4矩阵式键盘STC89C52单片机的并行口P1接4×4矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;P1口输出按键信息,在数码管上显示每个按键的“0F”序号。实际电路图连接如图3-4所示 3-4 矩阵式键盘电路3.5 LED灯LED(Light-Emitting-Diode中文意思为发光二极管)是一种能够将电能转化为可见光的半导体,它改变了白炽灯钨丝发光与节能灯三基色粉发光的原理,而采用电场发光。据分析,LED的特点非常明显,寿命长、光效高、无辐射与低功耗。 图3-5 LED电路图3.6 LCD1602液晶显示屏工业字符型液晶,能够同时显示16x02即32个字符。(16列2行),有16个引脚,通过D0D7的8位数据端传输数据和指令,引脚图如3-6。 图3-6 LCD1602引脚示意图LCD1602液晶显示屏引脚功能如表3-6所示:表3-6 LCD1602引脚功能管脚1Vss一般接地管脚2Vdd接电源(+5V)管脚3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高管脚4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器管脚5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。管脚6EE(或EN)端为使能(enable)端,下降沿使能。管脚7DB0底4位三态、 双向数据总线 0位管脚8DB1底4位三态、 双向数据总线 1位管脚9DB2底4位三态、 双向数据总线 2位管脚10DB3底4位三态、 双向数据总线 3位管脚11DB4高4位三态、 双向数据总线 4位管脚12DB5高4位三态、 双向数据总线 5位管脚13DB6高4位三态、 双向数据总线 6位管脚14DB7高4位三态、 双向数据总线 7位管脚15BLA背光电源正极管脚16BLK背光 电源负极1602液晶模块内部的控制器共有11条控制指令,如表3-6b所示: 表3-6b 控制命令表 序号指令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地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。将lcd的引脚与单片机连接,通过单片机实现对显示的输出,电路图实现如下: 图3-6 LCD1602接口电路图3.7闹钟闹钟模块采用蜂鸣器实现,蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电。通过单片机的p1.7引脚输出的电平变化来控制蜂鸣器的导通与否,设计如下: 3-7 蜂鸣器电路图 4 软件设计4.1 点亮LED 图4-1 点亮LED流程图4.2 数码管显示59秒倒计时 图4-2 数码管59秒倒计时流程图4.3 矩阵键盘检测及控制流程图初始化按键扫描 是否有键按下执行相应功能数码管显示开始结束否是 图4-3矩阵键盘检测及控制流程图键盘采用低电平扫描的方式,依次给每行赋低电平,按键按下时,相对应的所在列的端口也是低电平,不断扫描,然后执行相应操作,第一个按键控制定时器的启动与停止,第二个按键控制对应LED灯的亮灭,第三个按键使时间加一,第四个按键使时间减一,具体程序见附录。4.4 串口通信开始设定串行通信方式发送数据T1=1?清T1数据发送完结束T1初始化,并启动开始结束数据发送完R1=1?清R1发送数据设定串行通信方式T1初始化,并启动 NNYNYNNYY图4-4a 查询发送流程图 图4-4b 查询接受流程图4.5 LCD1602液晶显示年月日,时间可用键盘调节 5 调试与结果分析单片机应用系统的调试包括硬件和软件两部分,但是他们并不能完全分开。一般的方法 是排除明显的硬件故障,再进行综合调试,排除可能的软/硬件故障。硬件可能会因为在焊的过程中出现漏焊或元器件焊错的情况,通过串口软件将程序下载到单片机中,若出现的现象与理论上的功能不相同时,则应该学会排除各种可能出现的错误,可以用电压表对各个焊点进行测量验证,发现问题后及时改正,直到出现理想的结果。5.1 测试仪器表5 测试仪器序号名称作用1KELL 51 软件编写调试C程序并生成可烧录hex文件2变压器提供5伏输出电源3数字万用表测试工作电源检测电路运行状况5.2软件测试平台 Keil C51Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。Keil C51工具包的整体结构,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。调试的主要方法 : 1. 启动Keil c51 2. 新建一个工程。Project菜单New project ,选择好我们要保存的文件夹后,键入Frist 保存。接着弹出CPU类型选择框,我们选择最常用的AT89C51,按确定。 3. 在工程中加入文件。新建一个文件,文件菜单FileNew,我们再选择:文件菜单FileSave As? (另存为)弹出 对话框后,我们文件名框中键入First.c(注意文件后缀名是 .c)保存。C文件建好啦。现在我们把文件加入到工程中去。 点击Target 1前面的+号,右键单击Source Group 1选择Add Files to Group ,Source Group 1,选择添加 Add。编译运行,检查程序是否有错误。 5.3 测试结果通过对各个程序的实验与验证,发现本次设计的单片机时间显示中,利用定时器使时分秒按一定规律走动,时间变动的快慢与实际时间的变动仍有一定的差距,其误差主要来源包括晶体频率误差,定时器溢出误差, 延迟误差。晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢 出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。 6 总结在这一次的课程设计中,我学到了很多。从硬件到软件,对单片机的功能用途以及怎样实现相应的功能有了更深的了解,同时,在实践中,也培养了对单片机这门课程的兴趣,提高了动手能力。本次的课程设计持续了10天,开始的两天是熟悉硬件部分,学会看电路图并把元器件焊道板子对应的地方,这段期间,逐渐学会了怎样去看电路图以及对电路图上的各个模块进行分析,也了解了单片机最小系统的组成及各个模块的功能,在焊板子的过程中,也体会到了动手的乐趣,由一开始的不会焊,出现各种错误,到后来的熟能生巧,而且能找出错误的地方并进行补救,看到自己的进步也是蛮欣慰的。硬件是基础,硬件正确了,软件才能发挥它的作用。后面的几天便是对软件的熟悉,通过写程序,对中断定时器和串口的概念有了更深的理解,同时也掌握了数码管、液晶屏的显示原理,逐渐能独立写出自己想要的程序,只是在写程序的过程中,很容易出现编译错误,有时可能要花费很长一段时间在找错误上面,所以平时写程序的时候,应当尽量注意语法的规范性,养成良好的习惯。设计过程中,总会遇到各种调试错误,还有设计出来的效果不对,只有认真的比对程序和下到板子上显示的效果,以及显示中出错的情况进行分析,修改程序才能够事半功倍。这对于将来的工作或者学习中,遇到调试问题,将会有很大的帮助。 当然这次课程设计,提高了知识的应用能力和和实践能力,同时提高了独立思考独立完成任务的能力,当然同组之间,遇到了实在没办法解决的问题,也相互的咨询和讨论,加强了大家的合作精神和团结能力。这对以后的学习和工作都有重要意义。 7 参考文献【1】郭天祥. 新概念51单片机MC语言教程 电子工业出版社 2009【2】 李群芳.单片微型计算机与接口技术(第三版),电子工业出版社,2008 【3】 徐海峰.C51单片机项目式编程.清华大学出版社,2011 【4】 李建忠.西安电子科技大学出版社,单片机原理及应用,2004【5】郭惠.单片机C语言程序设计完全自学手册:电子工业出版社 【6】公茂法.单片机人机接口实例集:航空航天大学出版社 附录1 总电路图附录2 程序清单1 点亮LED#include<reg52.h>#define uint unsigned int#define uchar unsigned charvoid delay()int i,j;for(i=110;i>0;i-)for(j=200;j>0;j-);void main()while(1)P0=0XFF;delay();P0=0x00;delay();2数码管59秒倒计时#include <reg52.h> #define uint unsigned int #define uchar unsigned char uchar code table = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char MAIN_Temp;unsigned char MAIN_Cout =0;sbit beep=P20;sbit wei1=P26; sbit wei2=P27; void display(unsigned char value_dat,unsigned char fen) ;void Delay(unsigned int time) unsigned int x, y; for(x = time; x > 0; x-) for(y = 120; y > 0; y-); int main() TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; while(1) display(MAIN_Cout,fen); void display(unsigned char value_dat,unsigned char fen) wei1=1; P0=tablevalue_dat / 10; wei1=0; Delay(1); wei1=1; wei2=1; P0=tablevalue_dat% 10;