基于AT89C51单片机的电压表设计毕业设计论文.doc
-
资源ID:86822844
资源大小:420.50KB
全文页数:26页
- 资源格式: DOC
下载积分:10金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于AT89C51单片机的电压表设计毕业设计论文.doc
课程设计成果说明书题 目:基于AT89C51单片机的电压表设计0毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日浙江海洋学院课程设计任务书学院 班级 专业 学生姓名(学号)课程名称单片机课程设计设计题目基于AT89C51单片机的数字电压表完成期限自2014年12 月 21日至2015 年 1月 5日 共 2 周设计依据1. AT89C51单片机的功能。2. ADC8080模数转换芯片的功能。3. LCD液晶显示原理。设计要求及主要内容1. 用AT89C51单片机及ADC0808,设计一种数字电压表。 2 .查相关资料,完成硬件设计和软件设计。 3. 画出程序流程图及写出程序清单。 4. 对开发关键技术、主要芯片加以介绍。5. 按要求写硬件实习报告。 6. 用Proteus实现电路软硬件仿真。 7. 通过电位器取得05V的电压,用ADC0808转换后通过LCD显示。参考资料1. 单片机原理及及应用 王迎旭 编 机械工业出版社.2. 微型计算机原理与接口技术 吴秀清 编 中国科学技术出版社.3. 51系列单片机原理及设计实例 楼然苗,李良儿等 编 北京航空航天大学出版社.指导教师签字日期基于AT89C51单片机的数字电压表设计摘要:随着信息化技术的发展,电子检测经常需要测量高精度的电压。本设计是利用仿真软件Proteus仿真的数字电压表。它基于AT89C51单片机作为主控芯片,用ADC0808A/D转换芯片将电压的模拟量转换为数字量并传给单片机,单片机处理后再由液晶LM016L实现液晶显示,可测量05V的电压量,精度为2位小数,误差为0.01V。关键字:数字电压表;AT89C51单片机;Proteus仿真;A/D转换;液晶显示目录前言················································································1第一章 系统总体方案选择与说明··············································21.1 设计要求·····································································21.2 设计思路·····································································21.3 设计方案 ····································································2第二章 硬件电路设计····························································32.1 AT89C51的功能介绍 ···························································32.1.1简单概述 ·······························································32.1.2主要功能特性····························································3 2.1.3 AT89C51的引脚介绍 ·····················································42.2 ADC0808的引脚及功能介绍 ·····················································42.2.1芯片概述 ·······························································42.2.2引脚简介································································52.2.3 ADC0808的转换原理 ·····················································52.2.4 ADC0808电路接线图······················································52.3 显示电路 ····································································62.3.1 LM016L的结构及功能 ····················································62.3.2 LM016L的引脚功能介绍 ··················································62.3.3 LM016L的电路接线图····················································62.4 复位电路设计 ································································72.5振荡电路设计 ································································72.6提示电路设计·································································82.7总电路·······································································8第三章 程序设计与说明·························································93.1主程序框图···································································93.2子程序框图···································································9第四章 系统仿真与调试························································10第五章 总结······································································11参考文献·············································································11附录一···············································································12前言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。 传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。数字电压表是诸多数字化仪表的核心与基础。以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型。数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC化),另一方面,精度也从0.01%-0.005%。目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面。本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。其中,A/D转换采用ADC0808对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后用液晶LM016L显示数字电压信号。第一章 系统总体方案选择与说明1.1设计要求 (1)使用51单片机,AD0808,LCD等元件组成 。(2)能测量0-5V的直流电压 。(3)能连续、稳定显示所测电压。 (4)测量误差<0.02V。(5)整数电压提醒。1.2 设计思路 根据设计要求选择AT89C51单片机为核心控制器件。 (2)A/D转换采用ADC0808实现。 电压显示采用LCD显示。 1.3 设计方案 数字电压表的设计即将连续的模拟电压信号经过A/D转换器转换成二进制数值再经由单片机软件编程转换成十进制数值并通过显示屏显示。该设计主要由三个模块组成A/D转换模块数据处理模块及显示模块。A/D转换主要由芯片ADC0808来完成它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯片AT89C51来完成其负责把ADC0808传送来的数字量经过一定的数据处理产生相应的显示码送到显示模块进行显示。此外,它还控制着ADC0808芯片工作。系统框图如图1.1所示。P2P3P0时钟电路A/D转换电路测量电压输入显示系统指示电路时钟电路P1AT89C51 图1.1 系统框图第二章 硬件电路设计2.1 AT89C51的功能介绍 2.1.1简单概述 AT89C51是一种带4K字节闪存可编程可擦除只读存储器FPEROMFlash Programmable and Erasable Read Only Memory的低电压、高性能CMOS 8位微处理器俗称单片机。AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造与工业标准MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中ATMEL的AT89C51是一种高效微控制器AT89C2051是它的一种精简版本AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2.1所示。图2.1 AT89C51芯片模型2.1.2主要功能特性 (1) 4K字节可编程闪烁存储器。 (2)32个双向I/O口128×8位内部RAM 。 (3)2个16位可编程定时/计数器中断时钟频率0-24MHz。 (4)可编程串行通道。(5)5个中断源。 (6)2个读写中断口线。 (7)低功耗的闲置和掉电模式。 (8)片内振荡器和时钟电路。 2.1.3 AT89C51的引脚介绍 (1)电源引脚。电源引脚接入单片机的工作电源。VCC(40引脚) 电源 。GND(20引脚)接地。 (2)时钟引脚。 XTAL1(19引脚) 反相放大器和时钟发生器电路的输入端。 XTAL2 (20引脚)片内振荡器反相放大器的输出端 。 (3)复位RST(9引脚)。在振荡器运行时有两个机器周期24个振荡周期以上的高电平出现在此引脚时将使单片机复位只要这个脚保持高电平,51芯片便循环复位。 (4)EA/Vpp(31引脚)。EA为外部程序存储器访问允许控制端。当它为高电平时单片机读片内程序存储器在PC值超过0FFFH后将自动转向外部程序存储器。当它为低电平时只限定在外部程序存储器地址为0000HFFFFH。Vpp为该引脚的第二功能为编程电压输入端。(5)ALE/PROG(30引脚)。ALE为低八位地址锁存允许信号。在系统扩展时ALE的负跳沿将发出的第八位地址锁存在外接的地址锁存器然后再作为数据端口。PROG为该引脚的第二功能在对片外存储器编程时此引脚为编程脉冲输入端。 (6)PSEN(29引脚)。片外程序存储器的读选通信号。在单片机读片外程序存储器时此引脚输出脉冲的负跳沿作为读片外程序存储器的选通信号。(7) pin39-pin32为P0.0-P0.7输入输出脚称为P0口。P0是一个8位漏极开路型双向I/O口。内部不带上拉电阻,当外接上拉电阻时P0口能以吸收电流的方式驱动八个LSTTL负载电路。通常在使用时外接上拉电阻用来驱动多个数码管。在访问外部程序和外部数据存储器时P0口是分时转换的地址(低8位)/数据总线不需要外接上拉电阻。 (8)Pin1-Pin8为P1.0-P1.7输入输出脚称为P1口。P1口是一个带内部上拉电阻的8位双向I/0口。P1口能驱动4个LSTTL负载。 (9)Pin21-Pin28为P2.0-P2.7输入输出脚称为P2口。P2口是一个带内部上拉电阻的8位双向I/O口P2口能驱动4个LSTTL负载。端口置1时内部上拉电阻将端口拉到高电平作输入用。对内部Flash程序存储器编程时接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。 (10)Pin10-Pin17为P3.0-P3.7输入输出脚称为P3口。P3口是一个带内部上拉电阻的8位双向I/O口P2口能驱动4个LSTTL负载这8个引脚还用于专门的第二功能。端口置1时内部上拉电阻将端口拉到高电平作输入用。对内部Flash程序存储器编程时接控制信息。2.2 ADC0808的引脚及功能介绍 2.2.1芯片概述 ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关它可以根据地址码锁存译码后的信号只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换实际使用时采用ADC0809进行A/D转换。芯片模型如图2.2。图2.2 ADC0808芯片模型2.2.2 引脚简介 ADC0808芯片有28条引脚采用双列直插式封装各引脚功能如下 (1) IN0IN78路模拟量输入端。这里只接一路电压信号其输入信号是由直流电源及可调电阻提供。 (2) D0D78位数字量输出端口其另一端连接到AT89C51单片机进行数值转换。 (3) STARTA/D转换启动信号输入端。由单片机P3.6口写信号与P2.0口相或取反输入一个正脉冲使其启动脉冲上升沿使0808复位下降沿启动A/D转换。 (4) ALE地址锁存允许信号高电平有效。 (5) EOC输出允许控制信号高电平有效。EOC为AD转换结束信号当AD转换结束时此端输出一个高电平取反给P3.3口转换期间一直为低电平。 (6) OE输出允许控制信号高电平有效。当AD转换结束时此端由单片机P3.7读信号与P2.0口相或后取反输入一个高电平才能打开输出三态门输出数字量。 (7) CLK时钟信号输入端。2.2.3 ADC0808的转换原理 ADC 0808 采用逐次比较的方法完成A/D转换由单一的+5V电源供电。片内带有锁存功能的8路选1的模拟开关由A、B、C的编码来决定所选的通道。ADC0809完成一次转换需100s左右它具有输出TTL三态锁存缓冲器可直接连接到AT89C51的数据总线上。通过适当的外接电路ADC0808可对05V的模拟信号进行转换。2.2.4 ADC0808电路接线图如图2.3所示图2.3 ADC0808连接图2.3 显示电路 2.3.1 LM016L的结构及功能 LM016L液晶模块采用HD44780控制器,HD44780具有简单而功能较强的指令集,可以实现字符移动闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,HD44780控制器由两个8位寄存器,指令寄存器IR和数据寄存器DR。IR用于寄存指令码只能写入不能读出DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种。CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址。如果地址码随指令写入IR,则IR自动把地址码装入AC同时选择DDRAMCGRAM单元。 2.3.2 LM016L的引脚功能介绍 1602字符型LCD通常有14条引脚线或16条引脚线的LCD多出来的2条线是背光电源线。VCC(15脚)和地线GND(16脚)其控制原理与14脚的LCD完全一样其中。 (1)VSS一般接地。 (2)VDD接电源+5V。 (3) V0液晶显示器对比度调整端接正电源时对比度最弱接地电源时对比度最高对比度过高时会产生“鬼影”使用时可以通过一个10K的电位器调整对比度。 (4) RSRS为寄存器选择高电平1时选择数据寄存器、低电平0时选择指令寄存器。 (5)R/WR/W为读写信号线高电平(1)时进行读操作低电平(0)时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址。当RS为低电平R/W为高电平时可以读忙信号。当RS为高电平R/W为低电平时可以写入数据。 (6)EE(或EN)端为使能(enable)端下降沿使能。2.3.3 LM016L的电路接线图线路图如图2.4所示图2.4 显示电路连接图2.4 复位电路设计 复位操作有两种基本形式一种是上电复位另一种是按键复位。按键复位具有上电复位功能。若要复位,只要按图中的RESET键电源VCC经电阻R1、R2分压在RESET端产生一个复位高电平。上电复位电路要求接通电源后通过外部电容充电来实现单片机自动复位操作。上电瞬间RESET引脚获得高电平随着电容的充电RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间2个机器周期单片机就可以进行复位操作。按键复位的电路如图2.5所示。图2.5 复位电路图2.5振荡电路设计 单片机内部有一个高增益、反相放大器其输入端为芯片引脚XTAL1其输出端为引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器。大小为1MHZ和两只电容电容和一般取30pF。这样就构成一个稳定的自激振荡器。振荡电路脉冲经过二分频后作为系统的时钟信号再在二分频的基础上三分频产生ALE信号此时得到的信号时机器周期信号。振荡电路如图2.6所示。图2.6 振荡电路图2.6提示电路的设计单片机P1.7驱动晶体管,当高电平是晶体管导通,发光二极管发光,起整数电压提示作用。电路图如2.7所示。图2.7 提示电路图2.6总电路 图2.8 整体电路图第三章 程序设计与说明3.1主程序框图本次设计的程序主要采用模块化编程思想,子程序主要分为A/D转换程序,LCD显示程序,主程序通过调用这两个子程序实现功能。程序框图如图3.1所示。程序代码见附录一。开始初始化A/D转换A/D转换结束?显示结果结束YN 图3.1 主程序流程图3.2子程序框图Y发出转换信号开始等待转换结束转换结束?读取数据结束N LCD显示子程序框图如图3.2所示,A/D转换子程序框图如图3.3所示。开始写命令延时写数据延时结束 图3.2 LCD显示子程序框图 图3.3 A/D转换子程序框图第四章 系统仿真与调试本设计应用Proteus7.8及KEIL51软件进行仿真,首先根据自己设计的电路图用Proteus7.8软件画出电路模型然后我们用KEIL51软件对自己所编写的程序进行编译、链接若程序没有错误和警告便可生成一个xxx.hex文件然后再将此文件加到Proteus7.8电路图上使软硬件结合仿真。仿真结果如图4.1,图4.2,图4.3所示。图4.1 仿真结果图图4.2 仿真结果图图4.3 仿真结果图第五章 总结在这次单片机课程设计之前,虽对51单片机有过学习,但不够深刻。在不断查阅资料和同学的相互讨论之后对本次课程设计有了基本的认识。经过近一周的努力虽然基于单片机的简易数字电压表基本完成但设计中的不足之处仍然存在。这次设计是我第二次设计电路并用Proteus实现了仿真。在这过程中我对电路设计单片机的使用等都有了新的认识。通过这次设计学会了Proteus和Keil软件的使用方法掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程积累了不少经验。经过这两个星期的学习我觉得自己不论是在理论知识方面还是在动手能力方面都有了不小的进步自己从中受益匪浅。这次设计很好的把以前学到的理论知识应用于实践中去使我认识到理论知识与实践之间有一定的差距只有通过不断的努力学习和实践相结合才能更好地掌握这门学科。通过这次设计不仅学会了如何去查找相关资料更重要的是通过查找资料和翻阅书籍学到了不少知识扩大了知识面提高了知识水平。经过单元设计和系统设计巩固了以前所学的专业知识自己真正认识到理论联系实际的重要性为以后的学习和工作提供了很多有价值的经验。通过这次设计不仅增强了自己的动脑能力和动手能力也提高了我思考问题、分析问题、解决问题的能力更重要的是学会用工程化的思想来解决问题。这在以前的学习过程中是不曾学到的这次设计使我认识到完整、严谨、科学分析问题、解决问题的思想是多么的重要只有拥有了科学的态度才能设计出有用的产品。另外通过本次设计使我认识到自己所学到的理论知识在应用到实际中去的能力有很大的欠缺,需要在以后的学习中进一步提高。通过这次课程设计使我对单片机的认识了解有了更加深刻的认识。参考文献:1. 单片机原理及及应用 王迎旭 编 机械工业出版社.2. 微型计算机原理与接口技术 吴秀清 编 中国科学技术出版社.3. 51系列单片机原理及设计实例 楼然苗,李良儿等 编 北京航空航天大学出版社.14附录一:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit EOC=P33;sbit START=P34;sbit RS=P35;sbit RW=P36;sbit E=P37;sbit Buzzer=P17;unsigned char uc_Clock=0; /定时器0中断计数bit b_DATransform=0;/*延时函数*void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/*Lcd写命令*void Lcd_write_com(uchar com)RW=0;RS=0;P0=com;delay(5);E=1;delay(5);E=0;/*Lcd写数据*void Lcd_write_data(uchar dat)RW=0;RS=1;P0=dat;delay(5);E=1;delay(5);E=0;/*Lcd初始化*void init()E=0;Lcd_write_com(0x01);Lcd_write_com(0x38);Lcd_write_com(0x0C);/*显示1个字符*void Display_OneChar(unsigned char Onechar)switch(Onechar)case ' ': Lcd_write_data(0x20);break;case '!': Lcd_write_data(0x21);break;case '"': Lcd_write_data(0x22);break;case '#': Lcd_write_data(0x23);break;case '$': Lcd_write_data(0x24);break;case '%': Lcd_write_data(0x25);break;case '&': Lcd_write_data(0x26);break;case '>': Lcd_write_data(0x27);break;case '(': Lcd_write_data(0