电力电子制作设计报告(AT89C51主控)
- 格式:doc
- 大小:517.10 KB
- 文档页数:17
自制AT89C51编程器电路设计与制作发布: 2010-1-03 10:49 | 作者: pcb_dz | 来源: 网络 | 查看: 888次AT89C51是一款应用最为广泛的8051单片机,更重要的是他具有反复烧写(FLASH)的特性。
一般情况下可重复烧写1000次,这样为初学者试验提供了一个廉价的平台。
为了满足广大单片机爱好者动手的需要,本人利用半个月的时间,参考国外资料,实际设计制作成功一款简单的AT89C51/52/55单片机编程器。
由于单片机编程时序不同,这一款编程器仅仅支持ATMEL公司的AT89C51,AT89C52, AT89C55芯片,不支持华邦或飞利浦兼容芯片。
对于很多像我这样一些不算太年轻的从80年代组装7管半导体收音机入门的电子爱好者来说,面对单片机似乎显得有点怯场,但是事实上我以为他甚至比组装一个收音机更简单:以下是它的硬件电路图,稍微有一点耐心,完全可以用面包板搭焊。
为了方便大家制作,我把电路简化设计了一下:Q2, Q4以及周围的几个元件构成了电平转换电路,这样节省了1片max 232芯片,在要求不高的场合,这个电路在单片机通信中可以取代MAX232。
Q1, R2,R4,DW2,4个元件为编程器提供烧写用12V电压,其中,R4, R2构成了分压电路;平时,监控芯片89C51第13脚(P3.3)输出高电平,Q1导通,R2(1K)将DW2(12V)拉低,此时DW2电压由R4,R2 分压,大约3-5V 之间;当写程序时,监控芯片第13脚(P3.3)输出低电平,Q1截止,DW2(12V)直接送到被烧芯片的31脚,从而提供烧写电压。
ATMEL官方网站提供的编程器器烧写电压是用LM317调整得到的,并且用到了两个高精度电阻,电路复杂且成本高,该电路经过本人数百台的实验证明非常稳定可靠. 电源变压器要求为15V的电源,例如常见的3-12V直流可调电源,注意其空载电压不要低于13V , 滤波应好一些,否则可能出现编程不可靠的情况。
基于AT89C51的数控电源设计摘要:随着人们日益广泛的生活生产需求,小电源的智能化,数字化以快速发展。
本系统是一个输出电压可调节的直流稳压电源。
它采用AT89C51单片机为核心控制器,用输出信号采集调理电路对输出的电压、电流进行实时采样,然后把采样的值送入控制器进行AD转换,转换后的值又经AT89C51处理,后在数码管上显示当前输出的电压或电流值。
通过按键可以自己设定输入电压值,然后由DA转换电路将设定值转换后由模拟电路输出。
本电路还具有过流保护和报警提示功能。
关键字:AT89C51 直流稳压电源数码管显示一、前言电源技术尤其是数控电源技术是一门实践性很强的工程技术,服务于各行各业。
电力电子技术是电能的最佳应用技术之一。
当今电源技术融合了电气、电子、系统集成、控制理论、材料等诸多学科领域。
随着计算机和通讯技术发展而来的现代信息技术革命,给电力电子技术提供了广阔的发展前景,同时也给电源提出了更高的要求。
随着数控电源在电子装置中的普遍使用,普通电源在工作时产生的误差,会影响整个系统的精确度。
电源在使用时会造成很多不良后果,世界各国纷纷对电源产品提出了不同要求并制定了一系列的产品精度标准。
只有满足产品标准,才能够进入市场。
随着经济全球化的发展,满足国际标准的产品才能获得进出的通行证。
数控电源是从80年代才真正的发展起来的,期间系统的电力电子理论开始建立。
这些理论为其后来的发展提供了一个良好的基础。
在以后的一段时间里,数控电源技术有了长足的发展。
但其产品存在数控程度达不到要求、分辨率不高、功率密度比较低、可靠性较差的缺点。
因此数控电源主要的发展方向,是针对上述缺点不断加以改善。
单片机技术及电压转换模块的出现为精确数控电源的发展提供了有利的条件。
新的变换技术和控制理论的不断发展,各种类型专用集成电路、数字信号处理器件的研制应用,到90年代,己出现了数控精度达到0.05V的数控电源,功率密度达到每立方英寸50W的数控电源。
第一章:前言1.1前言:直流电机的定义:将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。
近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,需要满足生产过程自动化系统各种不同的特殊要求,从而对直流电机提出了较高的要求,改变电枢回路电阻调速、改变电压调速等技术已远远不能满足现代科技的要求,这是通过PWM方式控制直流电机调速的方法就应运而生。
采取传统的调速系统主要有以下的缺陷:模拟电路容易随时间飘移,会产生一些不必要的热损耗,以及对噪声敏感等。
而用PWM技术后,避免上述的缺点,实现了数字式控制模拟信号,可以大幅度减低成本和功耗。
并且PWM调速系统开关频率较高,仅靠电枢电感的滤波作用就可以获得平滑的直流电流,低速特性好;同时,开关频率高,快响应特性好,动态抗干扰能力强,可获很宽的频带;开关元件只需工作在开关状态,主电路损耗小,装置的效率高,具有节约空间、经济好等特点。
随着我国经济和文化事业的发展,在很多场合,都要求有直流电机PWM调速系统来进行调速,诸如汽车行业中的各种风扇、刮水器、喷水泵、熄火器、反视镜、宾馆中的自动门、自动门锁、自动窗帘、自动给水系统、柔巾机、导弹、火炮、人造卫星、宇宙飞船、舰艇、飞机、坦克、火箭、雷达、战车等场合。
1.2本设计任务:任务: 单片机为控制核心的直流电机PWM调速控制系统设计的主要内容以及技术参数:功能主要包括:1)直流电机的正转;2)直流电机的反转;3)直流电机的加速;4)直流电机的减速;5)直流电机的速度在数码管上显示;6)直流电机的启动;7)直流电机的停止;第二章:总体设计方案1、系统的硬件电路设计与分析电动机PWM驱动模块的电路设计与实现具体电路见下图。
本电路采用的是基于PWM 原理的H型桥式驱动电路。
at89c51实验报告AT89C51实验报告引言:AT89C51是一款经典的8位单片机,被广泛应用于各种嵌入式系统中。
本实验报告将介绍我对AT89C51的实验过程和结果,以及对该单片机的一些理解和应用。
实验目的:1. 熟悉AT89C51单片机的基本特性和功能;2. 掌握AT89C51单片机的编程方法和调试技巧;3. 实现简单的功能模块并验证其正确性。
实验过程:1. 硬件准备在实验开始前,我准备了一块AT89C51开发板、一台电脑、一根USB数据线以及一些连接线。
将开发板与电脑连接,确保能够正常通信和编程。
2. 软件设置我选择了Keil C51作为开发工具,打开软件后,新建一个工程,并选择AT89C51作为目标芯片。
接着,我编写了一个简单的程序,用于点亮开发板上的LED灯。
3. 编程调试将编写好的程序下载到AT89C51单片机中,然后通过调试工具进行程序的调试和运行。
在调试过程中,我发现程序中存在一处错误,经过仔细排查后,成功修复了问题。
4. 功能实现在程序调试通过后,我开始尝试实现一些功能模块。
首先,我实现了一个简单的计数器,通过按下开发板上的按钮,可以实现数字的加减操作。
接着,我尝试了一些其他的功能,如LED灯的闪烁、蜂鸣器的发声等。
实验结果:经过一系列的实验和调试,我成功地实现了以上功能模块,并验证了其正确性。
AT89C51单片机表现出了良好的稳定性和可靠性,在进行各种操作时没有出现明显的延迟或错误。
对AT89C51的理解和应用:通过这次实验,我对AT89C51单片机有了更深入的了解。
AT89C51作为一款经典的8位单片机,具有较强的处理能力和丰富的外设接口,可以广泛应用于各种嵌入式系统中。
在实际应用中,AT89C51可以用来控制各种外设,如LED灯、LCD显示屏、温度传感器等。
通过编写相应的程序,可以实现各种功能,如数据采集、数据处理、控制操作等。
此外,AT89C51还支持多种通信协议,如UART、SPI、I2C等,可以与其他设备进行数据交互。
基于AT89C51单片机的电机控制系统设计前言我国步进电机的研究及制造起始于本世界50年代后期,从50年代后期到60年代后期,主要是高等院校和科研机构为研究一些装置而使用或开发少量产品。
我国在文化大革命中开始大量生产和应用步进电机,例如江苏、浙江、北京、南京、四川等各地都有投入生产,而且都在各行业使用,其中的驱动电路所有半导体器件都是完全国产化的,当时是全分立元器件构成的逻辑运算电路,还有电容耦合输入的计数器,触发器,环形分配器。
中等耐压的大功率半导体器件也完全国产化。
70年代初期,步进电机的生产和研究都有所突破,除反映在驱动器设计方面的长足进步以外,对反应式步进电机本体的设计研究发展到一个较高的水平。
70年代中期至80年代中期为成品发展阶段,新品种高性能电动机不断被开发。
至80年代中期以来,由于步进电机精确模型做了大量研究工作,各种混合式步进电机及驱动器作为产品广泛利用。
国外在大功率的工业设备驱动上,目前基本不使用大扭矩步进电动机,因为从驱动电路的成本,效率,噪音,加速度,绝对速度,系统惯量与最大扭矩比来比较,比较不划算,还是用直流电动机,加电动机编码器整体技术和经济指标高。
一些少数高级的应用,就用空心转杯电机,交流电机。
国外在小功率的场合,还使用步进电机,例如一些工业器材,工业生产装备,打印机,复印件,速印机,银行自动柜员机。
国内过去是用大力矩步进电动机实现机床数控,有实力的公司现在也采用交流电动机驱动数控机床,在驱动设备的主要差距,是国外对交流电动机的控制理论与工程分析和应用能力强,先进的控制理论作为软件,写在控制器内部。
目前,生产步进电机的厂家的确不少,但具有专业技术人员,能够自行开发,研制的厂家却非常少,大部分的厂家只一、二十人,连最基本的设备都没有。
仅仅处于一种盲目的仿制阶段。
这就给户在产品选型、使用中造成许多麻烦。
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。
AT89C51设计1. 简介AT89C51是一种经典的8位单片机,由凯瑞电子(Keil)公司生产。
它是Intel 8051指令集架构的一部分,具有强大的功能和广泛的应用。
AT89C51具有51个I/O引脚,4KB flash存储器,128字节的RAM,以及4个8位定时器/计数器。
它适用于各种嵌入式系统,如家电控制,电子设备,工业自动化,安全系统等。
本文将分享AT89C51的设计相关知识,包括硬件配置、编程语言和开发工具等内容。
2. 硬件配置AT89C51的硬件配置包括以下几个方面:2.1. 晶体振荡器AT89C51支持外部晶体振荡器,用于提供时钟信号。
一般情况下,使用11.0592MHz的晶体振荡器可以满足大多数应用需求。
2.2. 电源AT89C51工作电压为4.5V至5.5V,可以通过外部电源供电。
在设计中,需要提供稳定的电源电压,并通过适当的电源滤波电路降低电源噪音。
2.3. 外部存储器AT89C51内置4KB的闪存和128字节的RAM。
如果需要更大的存储空间,可以通过外部存储器扩展。
此外,还可以通过外部EEPROM实现数据的长期存储。
2.4. 输入/输出设备AT89C51具有51个I/O引脚,可用于连接各种输入/输出设备,如LED,键盘,LCD显示器等。
在设计中,需要根据具体需求配置合适的输入/输出设备。
3. 编程语言AT89C51支持多种编程语言,如汇编语言和C语言。
以下将介绍两种常见的编程语言。
3.1. 汇编语言汇编语言是一种符号化的低级语言,直接操作计算机硬件。
AT89C51使用的汇编语言是51系列的汇编语言,具有良好的指令集和寻址模式。
以下是一个简单的AT89C51汇编代码示例:ORG 0HMOV A, #20HMOV P1, AEND3.2. C语言C语言是一种高级编程语言,具有结构化的特点,能够更方便地编写和维护代码。
AT89C51的C语言编程通常使用凯瑞电子(Keil)公司的Keil C编译器。
第一章前言1.1步进电机简介步进电机最早是在1920年由英国人所开发。
1950年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。
以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。
在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。
步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
步进电机是将电脉冲信号变换成角位移或直线位移的执行部件。
步进电机可以直接用数字信号驱动,使用非常方便。
一般电动机都是连续转动的,而步进电动机则有定位和运转两种基本状态,当有脉冲输入时步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。
步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。
在没有脉冲输入时,在绕组电源的激励下气隙磁场能使转子保持原有位置处于定位状态。
因此非常适合于单片机控制。
步进电机还具有快速启动、精确步进和定位等特点,因而在数控机床,绘图仪,打印机以及光学仪器中得到广泛的应用。
步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。
传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。
步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。
第二章步进电机工作原理及系统方案论证2.1步进电机工作原理2.1.1步进电机结构电机转子均匀分布着40个小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定子和转子的展开图:图2.12.1.2 步进电机的旋转:如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。
课程设计报告论文题目单片机-电子钟专业班级学生姓名学号指导教师宁波技师学院电气技术系二零一三年九月摘要数字钟是一种用数字电路技术实现时、分、秒计时的装置,在现实生活中,各类数字钟已取得超级普遍的利用.数字钟的设计方式有许多种,例如可用中小规模集成电路组成数字钟,也能够利用好单片机来实现数字钟等。
这些方式都各有特点,其中利用中小规模集成电路组建数字钟,原理简单,但由于集成电路集成度有限,关于需要实现较多功能的电路设计比较复杂,关于制作者焊接和布线有比较高的要求。
用单片机实现的电子钟具有结构简单,并便于功能的扩展,但需要涉及到汇编和C语言编写程序,对设计者有较高的要求。
1 引言数字钟是采纳数字电路实现对时、分、秒,数字显示的计时装置普遍用于个人家庭,车站,码头,办公室等公开场合,成为人民日常生活中不可少的必需品,由于数字集成电路的进展和石英振荡器的普遍应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们生活带来极大的方便,而且大大地扩展了钟表原先的报时功能。
比如按时自动报警,校时自动打铃,自动启闭路灯等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用有着超级现实的意义。
2.整体设计方案系统设计方案本次设计的题目是能够正常的显示时、分、秒。
本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件,同时采纳四位一体数码管动态显示“时”、“分”、“秒”的现代计时装置。
它具有显示直观,校时功能等特点,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优势。
本次设计可分为两部份:硬件部份、软件部份。
硬件部份包括:AT89C51单片机四位一体显示器。
要紧由AT89C51单片机、显示输出电路、按钮输入电路等几大部份组成。
具体说来,系统智能操纵部份由单片机及其相关的外围电路组成,外围电路包括复位电路、数字钟电路、键盘设计。
利用单片机将复位电路、显示电路等正确的连接在一路,并通过单片机的编程来实现本次设计任务中的要求。
引言国内控制器的研究起步较晚,运动控制技术为一门多学科交叉的技术,是一个以自动控制理论和现代控制理论为基础,包括许多不同学科的技术领域。
如电机技术、电力电子技术、微电子技术、传感器技术、控制理论和微计算机技术等,运动控制技术是这些技术的有机结合体。
总体上来说,国内研究取得很大的进步,但无论从控制器还是从控制软件上来看,与国外相比还是具有一定差距。
传统上由纯电路设计的步进电机控制和驱动电路一般较复杂,成本又高,而且一旦成型就难于修改,可移植性差,难以适应一些智能化要求较高的场合。
单片机的普及与应用,为步进电机的应用开辟了广阔的前景,使得以往用硬件电路构成的庞大复杂的控制器得以用软件实现,将会避免复杂电路的设设计,既降低了硬件成本又提高了控制的灵活性、可靠性及多功能性。
本文主要介绍了步进电机的基本原理及AT89C51单片机的性能特点。
设计主要研究了一种基于AT89C51单片机和ULN2003驱动芯片的步进电机控制及驱动电路系统。
该系统可分为:控制模块、驱动模块、显示模块、人机交互模块四大部分。
其中采用AT89C51单片机作为控制模块的核心,利用单片机编程实现了对步进电机启动停止、正转反转、加速减速等功能的基本控制。
驱动模块由芯片ULN2003A驱动步进电机工作;显示部分由七段LED共阴数码管组成;人机互换部分由相应的按键实现相应的功能。
通过实际测试表明本设计系统的性能优于传统步进电机控制器,具有结构简单、可靠性高、实用性强、人机接口简单方便、性价比高等特点。
目录1设计原理及方案 (3)1.1 设计原理 (3)1.2 设计方案 (3)1.2.1 方案一 (4)1.2.2 方案二 (5)1.2.3 方案比较及选择 (6)2 设计实现 (7)2.1 主要元器件介绍 (7)2.1.1 四相六线步进电机的介绍 (7)2.1.2 AT89C51单片机芯片介绍 (9)2.1.3 ULN2003芯片介绍 (10)2.1.4 LED七段数码管介绍 (10)2.2 步进电机控制及驱动系统电路设计实现 (11)2.2.1 硬件设计 (11)2.2.2 软件设计 (14)3 电路调试 (15)3.1 软件的仿真 (15)3.2 硬件电路的调试 (16)4 数据分析及总结 (17)4.1 测试数据及说明 (17)4.2 总结 (18)参考文献 (19)附录 (20)1设计原理及方案1.1 设计原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
目录目录 (1)第一章课题的意义及应用 (2)第二章系统的总体设计 (3)2.1 设计方法 (3)2.2 数码管显示方案 (3)2.3 键盘输入方案 (4)第三章硬件电路设计 (4)3.1电路原理 (4)3.2单片机最小系统 (5)3.3系统工作流程 (5)第四章程序设计 (6)4.1系统总体结构框图 (6)4.2 系统流程图 (6)第五章调试 (7)5.1正常现象 (7)5.2出现的故障 (7)第六章心得体会 (9)参考文献 (9)附录1 (10)程序: (10)附录2 (19)仿真电路图: (19)实验箱接线图: (19)流程图: (20)第一章课题的意义及应用当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。
计算机作为一种快速通用的计算工具方便了用户的使用。
计算机可谓是我们最亲密的电子伙伴之一。
本设计着重在于分析计算机软件和开发过程中的环节和步骤,并从实践经验出发对计算机设计做了详细的分析和研究。
单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。
在工业生产中。
单片微型计算机是微型计算机称单片机,特别适用于控制领域,故又称为微控制器。
单片机的应用日益广泛,如应用在仪器仪表,家用电器和专卖装备的智能化以及过程控制等方面,单片机在人们的日常生活和工作中正扮演着越来越重要的角色。
本系统就是充分利用了AT89C51芯片的I/O引脚。
系统以采用MCS-51系列单片机为中心器件来设计LED流水灯系统,实现8个LED流水灯的各种显示方式,并实现循环的速度可调,暂停及复位功能。
通过本次课题设计,应用《单片机原理及接口技术》等所学相关知识及查阅资料,完成可控流水灯设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。
通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。
武汉职业技术学院毕业设计(论文)题目:基于AT89C51单片机的电加热炉温度控制系统院系:机电工程学院专业:电气自动化班级:电气13302姓名:何艳辉学号:1302303904指导老师:方波完成日期:2016年3月摘要随着国民经济的发展,人们对生活质量的要求越来越高,各种电子产品开始进入人们的生活并成为人们生活不可或缺的一部分,因此对电子产品的自动化控制的要求也越来越高,本设计正是选用了其中具有代表性的电加热炉作为研究对象。
本设计以单片机为核心对电加热炉的温度进行监测和控制,采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。
为了实现高精度的温度控制,本单片机系统采用PID算法控制,通过控制双向可控硅改变电炉和电源的接通、断开,从而用改变加热时间的方法来实现对温度的控制。
本系统由按键显示和温度采样控制以及上下限报警几个模块组成,通过模块间的通信完成温度设定、实际温度和测量温度的显示等功能。
本文对系统的硬件、选型、软件中流程控制的实现均有较为详细的阐述,对使用的编程软件也有描述,对于本系统的控制特点也进行总结说明,比较详尽地叙述了整个系统的相关事宜。
关键词:单片机、PID算法、温度控制。
AbstractAlong with the development of national economy, the people to the requirements of the quality of the life more and more high, all kinds of electronic products began to enter into the people's life and become an integral part of life, so the requirements of electronic products of automation control also become more and more high, this design is just choose the electric heating which one is representative as the research object。
基于单片机AT89C51的智能电源设计方案一、基于AT8 9C51智能电源系统硬件设计1.硬件设计的任务●蓄电池充电电路的设计:为12V的蓄电池充电,并且具有防止过充的功能。
●三组不同大小的电源设计:一组是12V的电源输出、一组是3V、4.5V、6V、9V的电源输出、一组是1.5V-12V的连续可调电源输出。
●系统稳压电源设计:为整个系统提供+12V和+5V稳压电源。
●AD0809模数转换电路设计:把模拟的电压电流信号转换成数字信号。
●看门狗电路设计:使单片机在程序跑飞的情况自动复位。
●显示模块设计:把输出的电压、电流显示在显示器上。
●3-8译码电路设计:译码电路选择显示的位置和AD采样.●AT89C51基本工作电路设计:使单片机正常工作。
●74LS161分频器设计:对AT89C51的ALE进行4分频为AD0809提供时钟频率。
●辅助电路设计:单片机晶振电路、逻辑电路和按键电路。
2.基于AT89C51智能电源系统设计框图二、基于AT89C51智能电源系统软件设计1.软件设计:本设计程序都是基于汇编语言的。
要完成的任务是:初始化程序设计、按键程序设计、充放电控制程序设计、A/D转换程序设计、过流保护程序设计、显示程序设计。
2.软件设计的步骤:第一步:分析整个系统可以由几个子系统组成,并考虑几个子系统之间的内在的关系;第二步:编写各个子系统的程序,最后组合在一起,得到整个系统;第三步:编译,查错,改错(包括语法错误、逻辑错误);第四步:把编译,看是否得到我们需要的结果,如果得不到结果就回到第三步,直到最后得到我们想要的结果。
3.软件设计流程:三.完成电路设计,运行软件并调试程序。
实验一MCS-51指令系统实验——数据排序一、实验目的熟悉MCS-51指令系统,掌握程序设计方法;加深对内部存储器读写的认识;熟悉仿真开发环境,学会源程序的编写、汇编/编译、调试;熟悉单片机硬件实验系统以及良好的实验习惯培养等;学会检查结果的正确性。
二、实验内容将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM,然后用冒泡法对其按从小到大的次序重新排列,并送到外部RAM 以8000H开始的地址单元内。
三、实验说明有序的数列更有利于查找。
本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序。
四、程序流程图五、调试程序;第一步:将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM 40H~49H单元中。
ORG 0000HLJMP START1ORG 0030HSTART1: MOV R0,#40H ;设置R0为内部RAM首地址MOV R1,#10 ;设Rl为计数器MOV DPTR,#TAB1LOOP1: CLR A ; 累加器清零MOVC A,@A+DPTR ;外部数据送累加器A中MOV @R0,A ;送内部RAMINC R0 ;调整内部RAM指针,指向下一个数据INC DPTR ;调整外部RAM指针;第二步:排序。
把片内RAM 40H~49H单元中的10个无符号数逐一比较,并按从小到大的顺序依次排列在这片单元中。
START2: CLR F0 ;清除交换标志位F0MOV R3,#9 ;10个数据循环次数MOV R0,#40H ;数据存放区首址MOV A,@R0 ;取前数L2: INC R0MOV R2,A ;保存前数SUBB A,@R0 ;前数减后数MOV A,R2 ;恢复前数JC L1 ;顺序则继续比较SETB F0 ;逆序则建立标志位XCH A,@R0 ;前数与后数交换DEC R0 ;指向前数单元XCH A,@R0INC R0 ;仍指向后数单元L1: MOV A,@R0 ;取下一个数DJNZ R3,L2 ;依次重复比较JB F0,START2 ;交换后重新比较;第三步:将内部数据RAM中40H~49H单元的内容传送到外部数据存储器以8000H开始的连续单元中去。
摘要本文主要论述了一种基于AT89C51单片机为核心控制器的数控直流稳压电源的设计原理和实现方法,其主要由辅助电源、显示电路、控制电路、数模转换电路、稳压电路和模数转换电路六部分组成。
该系统原理是以AT89C51单片机为控制单元,以数模转换芯片DAC0832输出参考电压,以模数转换芯片TLC1534对采样值进行转换为数字信号。
辅助电源提供各个芯片、数码管和放大器所需工作电压,显示电路用于显示电源输出电压的大小,输出电压值可通过按键对其进行步进控制(±0.1V),并且在按键长时间按下的时候能连续增加或减小。
与传统的稳压电源相比具有操作方便,电源稳定性高以及其输出电压大小采用数码显示的特点。
该系统具有抗干扰性能好,可靠性高,及最终输出电压值与真实显示值精确度较高等优点。
关键词: 数控直流稳压电源 AT89C51 DAC0832 TLC1543Design of Digital Power sourceAbstractThe method of this paper based on the AT89C51 microcontroller core of the numerical controller DC power supply design theory and realization. The digital DC power supply from the analog power, display circuit, control circuit, digital-to-analog conversion circuit, regulator circuit andanalog-to-digital converter circuit composed of six parts.This system is based on the principle of single-chip microcomputer to control the unit AT89C51 to DAC0832 digital-to-analog converter chip reference voltage to control the output voltage, while the analog-to-digital converter ADC0832 chip convert the sampling of voltage to digital signals. Analog power supply to provide the various chips, digital amplifier control and the required operating voltage, display circuit for displaying the size of power supply output voltage, output voltage value may be stepping through the control button (± 0.1V), and a long button press when under the continuous increase or decrease. And compared to the traditional regulated power supply with easy to operate, high power stability, as well as the size of the output voltage characteristics of the use of digital display. This system has the resistance to interference well, the reliability is high, and finally output voltage value and real demonstration value precision higher merit.Key words: Digital DC Voltage-stabilized Power Source AT89C51 DAC0832 TLC1543目录摘要 (I)Abstract.................................................................................................................................. I I 绪论 (1)1 直流稳压电源 (3)1.1 直流稳压源概述 (4)1.1.1 直流稳压源的定义 (4)1.2 方案的比较与选择 (4)1.2.1 传统直流稳压源 (4)1.2.2 数控直流稳压电源 (5)1.2.3 方案的最终选择 (6)2 数控直流稳压电源设计 (7)2.1 系统总体设计方案 (7)2.2 数控直流稳压源总体结构 (7)3 数模转换模块设计与实现 (9)3.1 芯片方案选择 (9)3.2 DAC0832的简介 (9)3.3 DAC0832的引脚功能 (10)3.4 D/A时序图 (11)3.5 DAC0832数模转换模块的设计与实现 (11)4 TLC1543模数转换模块设计与实现 (13)4.1 TLC1543的简介 (13)4.2 TLC1543的特点 (13)4.3 TLC1543的引脚功能 (14)4.4 TLC1543的设计与实现 (14)5 辅助电源、升压﹑串联线性稳压模块的设计与实现 (15)5.1 辅助电源模块 (15)5.2 升压模块的分析 (16)5.2.1 MC34063简介 (16)5.2.2 MC34063的特点 (16)5.2.3 MC34063的电路原理 (16)5.2.4 MC34063模块的应用 (17)5.3 串联线性稳压模块 (17)5.3.1 集成运放作比较电路 (18)5.3.2 集成运放作比较电路原理 (19)5.3.3 串联线性稳压电路的应用 (19)5.3.4 LM358简介 (19)5.3.5 LM358特点 (20)6 控制﹑显示和键盘模块的设计与实现 (21)6.1 控制模块的分析 (21)6.1.1 单片机简介 (21)6.1.2 AT89C51单片机简介 (23)6.1.3 AT89C51单片机的性能参数: (23)6.1.4 AT89C51 内存空间 (24)6.1.5 AT89C51单片机的功能特性概述 (24)6.1.6 AT89C51接口设计 (27)6.1.7 外接MAX202的应用 (28)6.1.8 串口通信总线接口RS232(9芯)简介 (28)6.2 显示模块 (29)6.2.1 数码显示输出部分 (29)6.2.2 74HC373简介 (31)6.2.3 ULN2003简介 (32)6.3 键盘模块 (34)7 系统的软件设计 (35)7.1 开发工具介绍 (35)7.2 软件设计的概述 (35)8 单片机系统抗干扰说明和电路的实际调试 (40)8.1 单片机系统抗干扰说明 (40)8.2 显示模块和键盘的调试 (42)8.3 升压模块的调试 (42)8.4 串联线性稳压模块的调试 (43)8.5 AD/DA模块的调试 (43)9 设计总结和展望 (44)9.1 设计总结 (44)9.2 展望 (45)致谢 (46)参考文献 (47)附录A 源代码 (48)绪论电源技术尤其是数控电源技术是一门践性很强的工程技术,服务于各行各业。
基于at89c51单片机的毕业设计基于AT89C51单片机的毕业设计毕业设计是大学生在学习期间最重要的项目之一,它既是对所学知识的综合应用,也是对学生能力的一次全面考察。
在电子信息工程专业中,基于AT89C51单片机的毕业设计是一项常见且重要的任务。
本文将探讨基于AT89C51单片机的毕业设计的相关内容。
一、AT89C51单片机简介AT89C51单片机是一种常见的8位单片机,由Atmel公司生产。
它具有低功耗、易于编程和广泛的应用领域等特点。
在毕业设计中,AT89C51单片机常被用于控制系统、嵌入式系统和自动化设备等方面。
二、选择毕业设计的重要性选择合适的毕业设计课题对于学生的学习和未来职业发展具有重要意义。
在选择基于AT89C51单片机的毕业设计时,需要考虑以下几个方面:1. 兴趣和专业方向:选择自己感兴趣并与专业方向相关的课题,可以激发学生的学习热情和动力。
2. 实用性和创新性:毕业设计应具有一定的实用性和创新性,能够解决实际问题或提出新的解决方案。
3. 可行性和资源条件:毕业设计的可行性和资源条件是选择课题的重要考虑因素。
学生需要考虑自身的能力和所拥有的实验设备等资源。
三、基于AT89C51单片机的毕业设计案例以下是几个基于AT89C51单片机的毕业设计案例,供学生参考和借鉴:1. 温度控制系统:设计一个基于AT89C51单片机的温度控制系统,能够实时监测环境温度并自动调节加热或制冷设备。
2. 智能家居系统:设计一个基于AT89C51单片机的智能家居系统,能够实现家庭电器的远程控制和定时开关功能。
3. 智能车辆导航系统:设计一个基于AT89C51单片机的智能车辆导航系统,能够根据预设路径自动导航并避免障碍物。
4. 电子密码锁:设计一个基于AT89C51单片机的电子密码锁系统,能够实现密码输入和验证功能,并具有防撬警报功能。
四、毕业设计的步骤和注意事项进行基于AT89C51单片机的毕业设计时,学生需要按照以下步骤进行:1. 选题和方案设计:选择合适的课题,并制定详细的方案设计,包括硬件设计和软件编程等方面。
1. 绪论 (2)1.1 课程设计要求 (2)1.2 数字电压表介绍 (2)2. 硬件单元电路设计 (2)2.1数字电压表结构框图 (2)2.1.1 AT89C51单片机简介 (3)2.1.2 ADC0832转换器简介 (4)2.1.3 时钟电路 (5)2.1.4 复位电路 (5)2.1.5 LED显示电路 (6)3. 软件单元电路设计 (6)3.1 主程序流程图 (6)3.2显示子程序流程图 (7)3.3 A/D转换子程序流程图 (8)3.4 数据处理子程序流程图 (8)4. 数字电压表仿真设计图与实物图 (9)4.1 仿真图 (9)4.2 器件清单 (9)4.3 硬件电路实物图 (10)5. 程序代码 (11)6. 项目设计总计 (18)7. 参考文献 (18)1.绪论1.1 课程设计要求使用单片机AT89C51和ADC0832设计一个数字电压表,能够测量0-5V之间的直流电压值,两位数码显示。
在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为 5V;能用两位LED进行轮流显示或单路选择显示,显示精度0.1伏。
1.2 数字电压表介绍数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。
而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。
因此AD转换是此次设计的核心元件。
输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。
2.硬件单元电路设计2.1数字电压表结构框图结构如(图1)所示2.1.1 AT89C51单片机简介AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4kBytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89C51在众多嵌入式控制应用系统中得到广泛应用。
本科生毕业设计(论文)基于AT89C51单片机系统的研究年6月摘要湿度检测在工业、农业、国防等行业有着广泛的应用。
利用单片机技术的湿度检测系统以其体积小,可靠性高而被广泛采用。
本文对湿度检测系统进行了分析设计。
首先,对湿度检测技术的应用领域和发展状况做了简单的介绍,同时,列举了目前湿度检测所常用方法以及各自所具有的特点。
本文重点在于对该系统的硬件和软件设计。
在硬件设计过程中,详细介绍了各部分电路的功能和特点.接下来,对系统中所用的湿度传感器HM1500和A/D转换芯片TLC1549作了简单的介绍。
在软件设计过程中,绘制了各个程序模块的流程图,详细介绍了各个模块的作用。
经过对程序反复的修改,完善了软件系统。
最后,完成了对整个系统的设计。
本系统具有灵敏度高、反映时间短等特点,并且具有智能化、可编程、小型便携等优点,相信本系统具有广泛的应用领域。
关键词:单片机,湿度检测,硬件系统,软件系统ABSTRACTThe humidity examination which is widely used in industry,agriculture,national defense and so on .the humidity examination which is widely used because that the system which uses microcontroller technology is volume small and reliability. This article has carried on the analysis design to the humidity examination system. First, the application and development condition of the humidity examination technology is made a simple introduction。
摘要随着数字技术的快速发展,数字技术被广泛应用于智能控制的领域中。
单片机以体积小、功能全、价格低廉、开发方便的优势得到了许多电子系统设计者的青睐。
它适合于实时控制,可构成工业控制器、智能仪表、智能接口、智能武器装置以及通用测控单元等。
本文以AT89C51单片机为核心设计了全自动洗衣机控制系统,本系统实现了对洗衣机整个洗衣过程的控制,包括用户参数输入、洗涤、漂洗、脱水和结束报警等阶段。
控制系统主要由电源电路、单片机控制系统和外部硬件电路三大模块组成。
电源电路为单片机主控系统提供5v的直流电压;单片机主控系统负责控制洗衣机的正常工作由AT89C51单片机构成;外部硬件电路由液晶显示屏、单相异步电机、进水出水阀门、负载水位传感器、蜂鸣器等组成。
本系统运用keil软件对单片机进行编程,再编译成hex文件后,通过proteus仿真软件进行仿真,从而实现预期的效果。
关键词单片机负载水位传感器单相异步电机AbstractWith the development of the digital technology, digital technology has been widely applied in the field of intelligent control. MCU with small volume, complete functions, low price, convenient development advantage by many electronic system designers favor. It is suitable for real-time control, can form industrial controllers, intelligent instruments, intelligent interface, intelligent weapon device and universal measurement and control unit.Based on the AT89C51single-chip microcomputer as the core design of the full automatic washing machine control system, this system realizes the washing machine the whole washing process control, including user parameter input, wash, rinse, dehydration and the end of alarm level. The control system is mainly composed of a power circuit, SCM control system and the external hardware circuit is composed of three modules. Power supply circuit for single-chip microcomputer control system with 5V DC voltage; single-chip microcomputer control system controls the normal work of the washing machine based on AT89C51 MCU; external hardware circuit is composed of liquid crystal display screen, single asynchronous motor, water inlet and outlet valve loadandwaterlevelSensor sensor, buzzer, etc.. The system using keil software for single-chip programming, and then compiled into a hex file, through proteus simulation software, in order to achieve the desired effect.Key words Singlechipmicrocomputer Loadandwaterlevelsensor LCD Singleasynchronous motor目录摘要 (I)Abstract..................................................................................................................... I I第1章绪论 (1)课题研发背景 (1)设计的目的和意义 (1)国内外洗衣机的发展概述 (1)第2章设计方案 (3)洗衣工作方式选择 (3)洗涤程序的选择 (4)水位的选择 (4)液晶显示 (4)洗衣机报警 (4)洗衣机的按键 (4)第3章硬件设计 (5)单片机的选型 (5)单片机的选型比较...................................................... 错误!未定义书签。
《电力电子制作设计报告》专业及班级 09自动化(2)班组长组员指导老师李秀娟张为堂完成时间电力电子实验制作设计报告遥控调光控制器一、调光控制器设计思想在日常生活中,我们常常需要对灯光的亮度进行调节。
本调光控制器通过单片机控制双向可控硅的导通来实现白炽灯(纯阻负载)亮度的调整。
双向可控硅的特点是导通后即使触发信号去掉,它仍将保持导通;当负载电流为零(交流电压过零点)时,它会自动关断。
所以需要在交流电的每个半波期间都要产生触发信号,触发信号产生时间的长短(触发角的大小)就决定了灯泡的亮度。
调光的实现方式就是在交流电源信号过零点后一段时间触发双向可控硅开关的导通,称这段时间为双向可控硅的触发角。
触发角越大,导通时间越长,可控硅导通的时间越短,灯的亮度就越低;反之,灯就越亮。
这就要求确定交流电源同步信号的过零点,并以此为基础,控制触发信号触发角的大小,达到白炽灯亮度调节的目的。
二、硬件电路部分本调光控制器的框图如下:控制部分:为了便于灵活设计,选择可多次写入的可编程器件,本设计方案中选用的是ATMEL公司生产的AT89C51单片机。
驱动部分:由于驱动的对象是交流负载,且为了实现连续调节的目的,本电路中采用了无触点开关元件双向可控硅。
双向可控硅能够对交流电源的导通进行无触点连续控制,以小电流控制大电流,且动作快、寿命长、可靠性高。
负载部分:本电路的负载是白炽灯(纯阻负载)。
(一)交流电源同步信号交流电源同步信号的产生如图2电路所示,图中的同步信号就是我们需要的交流电压过零点信号。
各部分波形如图3所示。
图中整流后波形中的水平虚线表示光藕P52l输入二极管的门限电压。
P521是TLP521的简称,下图是其引脚图。
图2 过零检测电路图3 同步信号波形图图4 P521引脚图(二)单片机控制部分:主控单元以AT89C51单片机为核心,交流电压过零点信号提取电路中产生的同步信号SYN接到AT89C5l的INT0,此信号的下降沿将使AT89-C51产生中断,以此为延时时间的起点。
图5 单片机控制电路(三)主控部分图6 主控电路图中,CL是单片机输出的触发信号,该信号通过光控可控硅MOC3022去驱动可控硅T435。
受控的白炽灯接在Ll和零线(图中未画出)之间。
MOC3022是DIP-6封装的光控可控硅。
其1、2脚分别为二极管的正、负极:4、6脚为输出回路的两端;3、5脚不用连接。
如图8所示。
图7 MOC3022引脚图图中的阴影部分表示可控硅的导通区间,它的大小决定了灯的亮度。
改变延时时间可改变触发信号和同步信号的相位关系,也改变了可控硅的导通区间的大小,达到调光的目的。
220V交流主电源导通区间、同步信号和触发信号的时序关系如图6所示。
图8 主电源导通区、同步信号和触发信号时序图(四)红外接收电路(五)电路整体接线图(四)元器件的清单:见附件二(五)相关计算:1、与可控硅相连的电阻回路计算当MOC3022导通时,可控硅门极所加电压: U=180*220/(1000+180)=33.5V可以驱动可控硅所以选1k Ω和180Ω 2、光耦MOC3022所在回路相关计算 选择电阻270Ω的原因:MOC3022发光二极管侧最小触发电流为10mA ,触发电压为1.5V ,极限条件下Ω=-=35010)5.15(mAVR ,所以电阻应该比350小,应该选270Ω。
因为MOC3022的发光灯驱动电流是10mA ,所以可以驱动MOC3022.三、软件部分(一)总体思路1.遥控部分采用常用的由PT2262芯片构成的遥控器加上由解码放大功能的红外接收管SM0038,采用这样的电路比较简单。
2. 主控部分采用89C52单片机作为核心处理器,其主要功能有:(1)进行红外解码(2)操作ADC0804对光传感器的值进行采样处理(3)控制1602显示当前亮度,当前模式(自动/手动),亮度级别 (4)对整流过的交流电压进行过零检测(接单片机外部中断) (5)对晶闸管进行相位控制(二)设计流程图开始1602初始化中断初始化显示基本信息亮度匹配(三)程序清单:见附件一附件一:程序清单主程序:#include <intrins.h>#include <reg52.h>#include "DISP1602.h"#include "IRLCD.h"#include "ADC0804.h"#define uchar unsigned char#define uint unsigned intsbit mai=P2^0;sbit zero=P3^3;uint ad_data[5],light; //AD更新数值uchar choose=9,level=0;//亮度级别extern uchar MODE; //=1自动 =0手动extern uchar IRCOM[7]; //键码//函数声明区void init_INT0(void); //0 解码开void init_INT1(void); //2 过零开void delay_mai(void); //60us void delay_2(uchar choose); //750us/次void MatchLight(uint light);//亮度匹配void main(){init_1602();init_INT0(); //0 解码开init_INT1(); //2 过零开DISP_FOUNDFORM();light=DATA_DEAL(10.0,ad_data);MatchLight(light);LCD_NUM(1,5,level,1);LCD_FLO(2,13,ad_data);mai=1;EA=1;while(1){if(MODE==1) LCD_STR1(1,10,"AUTO"); else LCD_STR1(1,10,"MANU");light=DATA_DEAL(10.0,ad_data);LCD_NUM(1,5,level,1);LCD_FLO(2,13,ad_data);MatchLight(light);}}//按键处理void INT0_MESSAGE(void) interrupt 0 {IR_IN();WRITE_COM(0x80+14);WRITE_DATA(' '); //写数据WRITE_DATA(' ');//WRITE_DATA(IRCOM[6]); //写数据//WRITE_DATA(IRCOM[5]);if(IRCOM[2]==0x47){if(MODE==1) MODE=0;else MODE=1;}if(MODE==0){switch(IRCOM[2]){case 0X0D: choose=0;break;case 0X0C: choose=1;break;case 0X18: choose=2;break;case 0X5E: choose=3;break;case 0X08: choose=4;break;case 0X1C: choose=5;break;case 0X5A: choose=6;break;case 0X42: choose=7;break;case 0X52: choose=8;break;case 0X4A: choose=9;break;/*case 0X19: choose+=1;if(choose==10) choose=0; break;case 0X16: choose-=1;if(choose<0) choose=9; break; */}}}void INT1_MESSAGE(void) interrupt 2 {if(choose==0) mai=1;if(choose==9) mai=0;if((choose!=9)&(choose!=0)){delay_2(choose);mai=0;delay_mai();mai=1;}}//子函数void init_INT0(void) //0 解码开{IT0=1;EX0=1;}void init_INT1(void) //2 过零开{IT1=1;EX1=1;}void delay_mai(void) //60us{unsigned char a,b;for(b=1;b>0;b--)for(a=47;a>0;a--);}void delay_2(uchar choose) //750us/次{unsigned char a,b,c;for(c=0;c<9-choose;c++)for(b=83;b>0;b--)for(a=3;a>0;a--);}void MatchLight(uint light) //亮度匹配{if((light>=0)&&(light<500)) level=0;if((light>=500)&&(light<1000)) level=1;if((light>=1000)&&(light<1500)) level=2;if((light>=1500)&&(light<2000)) level=3;if((light>=2000)&&(light<2500)) level=4;if((light>=2500)&&(light<3000)) level=5;if((light>=3000)&&(light<3500)) level=6;if((light>=3500)&&(light<4000)) level=7;if((light>=4000)&&(light<4500)) level=8;if(light>=4500) level=9;if(MODE==1) choose=9-level;}AD子模块:#include "ADC0804.h"//50us延时子程序void delay_50us(unsigned int t){unsigned char j;for(;t>0;t--)for(j=19;j>0;j--);}//读A/D数据子程序//说明:当输入电压为5V时,A/D输出为FFH,即输入电压=AD数据*(5/255)=AD数据/(255/5)=AD数据/51unsigned int READ_AD(){unsigned int ad_data;CS=1;ADRW=1;ADRD=1;delay_50us(20); //转换前准备CS=0; //允许进行A/D转换ADRW=0;delay_50us(5);ADRW=1; //WR由低变高时,AD开始转换CS=1;delay_50us(15); //等待转换完成ADDATA=0xFF;CS=0;ADRD=0; //读取转换数据结果数据结果delay_50us(5);ADRD=1;ad_data=ADDATA; //把数据存到ad_data中CS=1; //停止A/D读取return ad_data;}//ADC0804 读出的数据处理unsigned int DATA_DEAL(float n,unsigned char ad_data[]){unsigned int x,dianya=0,value,light;double last_value;for(x=0;x<n;x++) //将n次测得的结果存储在dianya中 {dianya+=READ_AD();}last_value=dianya/n;last_value/=51.0;value=last_value*1000;light=value;for(x=0;x<4;x++){ad_data[x]=value%10;value/=10;}return light;}#include "DISP1602.h"unsigned char MODE=1; //自动/手动void DELAY_1602(unsigned int z) //延时函数{unsigned int n,j;for(n=z;n>0;n--)for(j=110;j>0;j--);}unsigned char LCD_BUSY() //读忙指令{unsigned char flag;RS=0;RW=1;E=1;DELAY_1602(1);flag=DATAPORT&0x80;E=0;return flag;}void WRITE_DATA(unsigned char dat) //写数据{//while(LCD_BUSY());DELAY_1602(12);RS=1;RW=0;DELAY_1602(2);DATAPORT=dat;E=1;DELAY_1602(3);E=0;}void WRITE_COM(unsigned char com) //写指令{//while(LCD_BUSY());DELAY_1602(12);RS=0;RW=0;DELAY_1602(2);DATAPORT=com;E=1;DELAY_1602(3);E=0;}//------------------初始化1602液晶--------------------------void init_1602(){E=0;WRITE_COM(0x38); //点阵显示WRITE_COM(0x0c); //开显示、显示光标、光标不闪烁;WRITE_COM(0x06); //写一个字符地址自动加一且光标加一WRITE_COM(0x01);}//---------------------------------显示字符串(字符型)-------------------------------------------//---调用格式形如“LCD_STR1(1,2,"TEST");”*str指向的是一个数组的首地址内的内容void LCD_STR1(unsigned char hang,unsigned char lie,unsigned char *str) {unsigned char a;if(hang==1) a=0X80;else a=0X80+0X40;a=a+lie-1;WRITE_COM(a);while(*str!='\0'){WRITE_DATA(*str);str++;}}//-------------------------------------------显示单个字符(代码型)-----------------------------------------//----------------调用格式形如“LCD_STR3(1,2,"T");void LCD_STR3(unsigned char hang,unsigned char lie,unsigned char str) {unsigned char a;if(hang==1) a=0X80;else a=0X80+0X40;a=a+lie-1;WRITE_COM(a);WRITE_DATA(str);}//---------------------------------显示n位整数-------------------------------------------//---x为要显示的数字,n为显示的位数void LCD_NUM(unsigned char hang,unsigned char lie,unsigned int x,unsigned char n){unsigned char a,d[6];char i;if(hang==1) a=0X80;else a=0X80+0X40;a=a+lie-1;WRITE_COM(a);for(i=0;i<n;i++){d[i]=x%10;x/=10;}for(i-=1;i>=0;i--)WRITE_DATA(0x30+d[i]);}//---------------------------------显示小数-------------------------------------------//---ad_data[]为要显示的数字void LCD_FLO(unsigned char hang,unsigned char lie,unsigned char ad_data[]){unsigned char a;if(hang==1) a=0X80;else a=0X80+0X40;a=a+lie-1;WRITE_COM(a);WRITE_DATA(0x30+ad_data[3]);WRITE_DATA('.');WRITE_DATA(0x30+ad_data[2]);WRITE_DATA(0x30+ad_data[1]);WRITE_DATA(0x30+ad_data[0]);}//-------------------------------------------显示基本信息-----------------------------------------void DISP_FOUNDFORM(void){LCD_STR1(1,1,"LEV:");if(MODE==1) LCD_STR1(1,10,"AUTO");else LCD_STR1(1,10,"MANU");LCD_STR1(2,1,"CURRENT LUM:");}中断控制模块:#include "IRLCD.h"unsigned char IRCOM[7];void IR_IN(void){unsigned char j,k,N=0;EX0 = 0;delay(15); //1.9msif (IRIN==1) //若是产生的错误0,退出中断{EX0=1;return;}//确认IR信号出现while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。