基于单片机的数控开关电源设计解读_第1页
基于单片机的数控开关电源设计解读_第2页
基于单片机的数控开关电源设计解读_第3页
基于单片机的数控开关电源设计解读_第4页
基于单片机的数控开关电源设计解读_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、智能仪表综合课程设计成绩评定表学生姓名张丽班级学号1203060101专业通信工程课程设计题目基于单片机的数控开关电源设计评语组长签字:成绩日期20 年 月 日智能仪表综合课程设计课程设计任务书学院信息科学与工程专业通信工程学生姓名张丽班级学号1203060101课程设计题目基于单片机的数控开关电源设计实践教学要求与任务 : 要求: 1、分别对硬件系统的配置予以评估,使其能够对转速进行测量。 2、对单片机定时器 /计数器进行配置,设计和说明定时器 /计数器在“ M”法测量 中的作用和使用方法,讨论测量精度的问题。 任务: 1、设计电路图。 2、利用软件画原理图 3、熟悉软件编程语言,编写程序

2、4、系统调试工作计划与进度安排 :1. 查找资料。(2 天)2. 设计电路,画电路图。 (2 天)3. 软件编程与调试。(2天)4. 系统调试。(2 天)5. 撰写报告。(2 天)指导教师:201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日2智能仪表综合课程设计摘要智能仪器是含有微型计算机或者微型处理器的测量仪器, 拥有对数据的存储 运算逻辑判断及自动化操作等功能。传感器拾取被测参量的信息并转换成电信号, 经滤波去除干扰后送入多路模 拟开关;由单片机逐路选通模拟开关将各输入通道的信号逐一送入程控增益放大 器,放大后的信号经 A/D 转换器转换成相应的脉冲信号后送

3、入单片机中; 单片机 根据仪器所设定的初值进行相应的数据运算和处理 ( 如非线性校正等 ) ;运算的结 果被转换为相应的数据进行显示和打印;同时单片机把运算结果与存储于片内 FlashROM(闪速存储器 ) 或 E?2PROM电(可擦除存贮器 ) 内的设定参数进行运算比 较后,根据运算结果和控制要求,输出相应的控制信号 ( 如报警装置触发、继电 器触点等 ) 。此外,智能仪器还可以与 PC机组成分布式测控系统, 由单片机作为 下位机采集各种测量信号与数据, 通过串行通信将信息传输给上位机 PC机, 由 PC 机进行全局管理。关键词:数控开关电源; AMPIRE;AT89C52智能仪表综合课程设

4、计目录 TOC o 1-5 h z HYPERLINK l bookmark10 o Current Document 摘要 5 HYPERLINK l bookmark12 o Current Document 智能仪器仪表的简介 7 HYPERLINK l bookmark14 o Current Document 智能仪器仪表简介 7 HYPERLINK l bookmark16 o Current Document 智能仪器仪表的作用 8 HYPERLINK l bookmark18 o Current Document 系统设计简介 10 HYPERLINK l bookmark20

5、 o Current Document PWM 波产生简介 10 HYPERLINK l bookmark22 o Current Document 设计要求 11 HYPERLINK l bookmark24 o Current Document 设计方案论证 11 HYPERLINK l bookmark26 o Current Document 硬件设计电路 14 HYPERLINK l bookmark28 o Current Document 4. 系统硬件设计 16 HYPERLINK l bookmark30 o Current Document 主控制器选择 16 HYPERL

6、INK l bookmark32 o Current Document 显示电路 16 HYPERLINK l bookmark34 o Current Document ADC0804A/D 转换器与单片机的接口电路 17 HYPERLINK l bookmark36 o Current Document 系统总体电路图 20 HYPERLINK l bookmark40 o Current Document 5 设计语言及软件介绍 21 HYPERLINK l bookmark42 o Current Document C 语言介绍 21 HYPERLINK l bookmark44 o

7、Current Document KEIL 软件介绍 21 HYPERLINK l bookmark46 o Current Document 6 系统软件设计 22 HYPERLINK l bookmark48 o Current Document 6.1 概述 22 HYPERLINK l bookmark50 o Current Document 系统程序设计模块 22 HYPERLINK l bookmark52 o Current Document 6.2.1 程序框图 22 HYPERLINK l bookmark38 o Current Document 主程序 22 HYPER

8、LINK l bookmark54 o Current Document 显示数据刷新子程序 30 HYPERLINK l bookmark56 o Current Document 程序清单 36 HYPERLINK l bookmark58 o Current Document 调试及仿真 37结 论 38 HYPERLINK l bookmark62 o Current Document 参考文献 38智能仪表综合课程设计摘要仪器仪表(英文: instrumentation )仪器仪表是用以检出、测量、观察、计算 各种物理量、物质成分、物性参数等的器具或设备。真空检漏仪、压力表、测长 仪

9、、显微镜、乘法器等均属于仪器仪表。 广义来说, 仪器仪表也可具有自动控制、 报警、信号传递和数据处理等功能, 例如用于工业生产过程自动控制中的气动调 节仪表,和电动调节仪表,以及集散型仪表控制系统也皆属于仪器仪表。开关电源是一种采用开关方式控制的直流稳压电源。 它以小型、 高效、轻量的特 点被广泛应用于各种电子设备中。 开关电源控制部分绝大多数是按模拟信号来设 计和工作的, 其抗干扰能力不太好, 信号有畸变。 电源作为各种电子设备必不可 少的重要组成部分, 其性能优劣直接影响到整个电子系统的性能指标。 随着科技 的发展,电子设备不断更新换代, 其种类越来越多, 对电源的性能指标的要求越 来越高

10、, 加之不同的电子设备对电源的要求又不尽相同, 这样, 给电源的研究带 来了许多新的研究课题。在传统功率电子技术中, DC/DC变换器控制部分是按模 拟信号进行设计和工作的。 在六、七十年代, 功率电子技术完全建立在模拟电路 的基础上。但是近年来,随着数字信号处理技术的日益完善、成熟,微处理器 / 微控制器和数字信号处理器的性价比不断提高, 数字控制在功率变换器中得到广 泛应用。它使得开关电源向数字化、智能化、多功能化方向发展。这无疑提高了 开关电源的性能和可靠性。例如电机、不间断电源( UPS)的控制电路都选用各 种数字信号处理器或微处理器作为其核心控制部件。功率变换器已由模拟控制、 模数混

11、合控制, 进入全数字化控制阶段。 相对于模拟控制, 数字控制有许多优点:(1)数字控制可以实现各种复杂的控制策略,提高控制系统的性能。由于开关 器件的存在, 功率变换器是强非线性系统。 传统的模拟控制是在功率变换器近似 线性模型的基础上, 利用线性系统的各种设计方法来设计补偿网络, 这种方法设 计简单且容易实现。 但随着对电源性能指标的要求不断提高, 这种设计方法很难 提高系统的控制性能。 而数字控制可以实现各种非线性控制策略, 使得控制系统 的性能大大提高。智能仪表综合课程设计(2)数字控制系统具有很强的抗干扰能力。模拟元器件易受环境和温度的变化 影响,所以模拟控制器稳定性差。 数字控制器较

12、少受到器件老化、 环境或参数变 化的影响,比模拟控制器更稳定可靠,具有很强的抗干扰能力。(3)数字控制系统灵活性高,数字化极大地简化了变换器控制的硬件。采用数 字控制技术可以设计统一的硬件平台, 适用不同的变换器系统, 只通过软件的改 变就可以改变控制策略,无须硬件更改,同时,数字控制系统更容易实现过压、 过流保护、输出电压调节、 故障监测及通讯等功能, 使电源“智能化”。 总之, 对功率变换器采用数字控制方法大大提高了变换器的控制性能、 灵活性等,变换 器的性能主要由软件来决定, 而不是在于大量离散元器件的参数, 这就意味着成 本和空间的节省以及实现复杂算法的能力。 数字控制的这些优点大大提

13、高了功率 变换器的综合性能, 由模拟控制向数字控制的转变是电力电子功率变换器的一大 发展趋势。智能仪表综合课程设计智能仪器仪表的简介智能仪器仪表简介功能特点随着微电子技术的不断发展,集成了 CPU、存储器、定时器 / 计数器、 并行和串行接口、看门狗、前置放大器甚至 A/D、D/A 转换器等电路在一块芯片 上的超大规模集成电路芯片 (即单片机 )出现了。以单片机为主体, 将计算机技术 与测量控制技术结合在一起, 又组成了所谓的“智能化测量控制系统”, 也就是 智能仪器。与传统仪器仪表相比,智能仪器具有以下功能特点:操作自动化。仪器的整个测量过程如键盘扫描、量程选择、开关启动闭合、数 据的采集、

14、 传输与处理以及显示打印等都用单片机或微控制器来控制操作, 实现 测量过程的全部自动化。具有自测功能,包括自动调零、自动故障与状态检验、自动校准、自诊断及量 程自动转换等。 智能仪表能自动检测出故障的部位甚至故障的原因。 这种自测试 可以在仪器启动时运行, 同时也可在仪器工作中运行, 极大地方便了仪器的维护。具有数据处理功能, 这是智能仪器的主要优点之一。 智能仪器由于采用了单片 机或微控制器, 使得许多原来用硬件逻辑难以解决或根本无法解决的问题, 现在 可以用软件非常灵活地加以解决。 例如,传统的数字万用表只能测量电阻、 交直 流电压、电流等, 而智能型的数字万用表不仅能进行上述测量, 而且

15、还具有对测 量结果进行诸如零点平移、 取平均值、求极值、统计分析等复杂的数据处理功能, 不仅使用户从繁重的数据处理中解放出来,也有效地提高了仪器的测量精度。具有友好的人机对话能力。 智能仪器使用键盘代替传统仪器中的切换开关, 操 作人员只需通过键盘输入命令, 就能实现某种测量功能。 与此同时, 智能仪器还 通过显示屏将仪器的运行情况、 工作状态以及对测量数据的处理结果及时告诉操 作人员,使仪器的操作更加方便直观。具有可程控操作能力。 一般智能仪器都配有 GPIB、RS232C、RS485等标准的通 信接口,可以很方便地与 PC机和其他仪器一起组成用户所需要的多种功能的自 动测量系统,来完成更复

16、杂的测试任务。智能仪表综合课程设计智能仪器仪表的作用微型化微型智能仪器指微电子技术、 微机械技术、信息技术等综合应用于仪器的生产中, 从而使仪器成为体积小、 功能齐全的智能仪器。 它能够完成信号的采集、 线性化 处理、数字信号处理,控制信号的输出、放大、与其他仪器的接口、与人的交互 等功能。微型智能仪器随着微电子机械技术的不断发展, 其技术不断成熟, 价格 不断降低, 因此其应用领域也将不断扩大。 它不但具有传统仪器的功能, 而且能 在自动化技术、航天、军事、生物技术、医疗领域起到独特的作用。例如,目前 要同时测量一个病人的几个不同的参量, 并进行某些参量的控制, 通常病人的体 内要插进几个管

17、子,这增加了病人感染的机会, 微型智能仪器能同时测量多参数, 而且体积小,可植入人体,使得这些问题得到解决。多功能 多功能本身就是智能仪器仪表的一个特点。 例如,为了设计速度较快和结构较复 杂的数字系统, 仪器生产厂家制造了具有脉冲发生器、 频率合成器和任意波形发 生器等功能的函数发生器。这种多功能的综合型产品不但在性能上(如准确度) 比专用脉冲发生器和频率合成器高, 而且在各种测试功能上提供了较好的解决方 案。人工智能化 人工智能是计算机应用的一个崭新领域, 利用计算机模拟人的智能, 用于机器人、 医疗诊断、专家系统、推理证明等各方面 。智能仪器的进一步发展将含有一定 的人工智能,即代替人的

18、一部分脑力劳动,从而在视觉(图形及色彩辨读)、听 觉(语音识别及语言领悟)、思维(推理、判断、学习与联想)等方面具有一定 的能力。这样,智能仪器可无需人的干预而自主地完成检测或控制功能。显然, 人工智能在现代仪器仪表中的应用, 使我们不仅可以解决用传统方法很难解决的 一类问题,而且可望解决用传统方法根本不能解决的问题。网络化 融合 ISP 和 EMIT技术,实现仪器仪表系统的 Internet 接入智能仪表综合课程设计伴随着网络技术的飞速发展, Internet 技术正在逐渐向工业控制和智能仪器仪 表系统设计领域渗透,实现智能仪器仪表系统基于 Internet 的通讯能力以及对 设计好的智能仪

19、器仪表系统进行远程升级、功能重置和系统维护。在系统编程技术( In-System Programming,简称 ISP 技术)是对软件进行修改、 组态或重组的一种最新技术。 它是 LATTICE半导体公司首先提出的一种使我们在 产品设计、 制造过程中的每个环节, 甚至在产品卖给最终用户以后, 具有对其器 件、电路板或整个电子系统的逻辑和功能随时进行组态或重组能力的最新技术。 ISP 技术消除了传统技术的某些限制和连接弊病, 有利于在板设计、 制造与编程。 ISP硬件灵活且易于软件修改,便于设计开发。由于 ISP 器件可以像任何其他器 件一样,在印刷电路板( PCB)上处理,因此编程 ISP 器

20、件不需要专门编程器和 较复杂的流程, 只要通过 PC机,嵌入式系统处理器甚至 INTERNET远程网进行编 程。EMIT嵌入式微型因特网互联技术是 emWare公司创立 ET(I eXtend the Internet ) 扩展 Internet 联盟时提出的,它是一种将单片机等嵌入式设备接入 Internet 的技术。利用该技术,能够将 8 位和 16 位单片机系统接入 Internet ,实现基于 Internet 的远程数据采集、智能控制、上传 / 下载数据文件等功能。目前美国 ConnectOne公司、 emWare公司、 TASKING公司和国内的 P&S公司等均 提供基于 Inte

21、rnet 的 Device?Networking 的软件、固件( Firmware )和硬件产 品。虚拟仪器是智能仪器发展的新阶段 测量仪器的主要功能都是由数据采集、数据分析和数据显示等三大部分组成的。 在虚拟现实系统中,数据分析和显示完全用 PC机的软件来完成。因此,只要额 外提供一定的数据采集硬件, 就可以与 PC机组成测量仪器。 这种基于 PC机的测 量仪器称为虚拟仪器。 在虚拟仪器中, 使用同一个硬件系统, 只要应用不同的软 件编程,就可得到功能完全不同的测量仪器。 可见,软件系统是虚拟仪器的核心, “软件就是仪器”。传统的智能仪器主要在仪器技术中用了某种计算机技术控制工程网版权所有,

22、 而 虚拟仪器则强调在通用的计算机技术中吸收仪器技术。 作为虚拟仪器核心的软件 系统具有通用性、通俗性、可视性、可扩展性和升级性,能为用户带来极大的利 益,因此,具有传统的智能仪器所无法比拟的应用前景和市场。智能仪表综合课程设计系统设计简介PWM波产生简介PWM信号产生芯片采用 KA3525,它是一个典型的性能优良的开关电源控制芯片。 其内部包括误差放大器、比较器、振荡器、触发器、输出逻辑控制电路和输出三 极管等环节。 KA3525的 1 和 2 脚是内部运算放大器的输入端,系统中单片机的 D/A转换接口的一个引脚与 KA3525的 2脚连接,实现 KA3525的数字控制与步进 调整。11 和

23、 14 脚输出交替的两路控制信号,经驱动电路与功率开关管的门极相 连接。本文采用的驱动电路如图 6 所示。当 11 脚输出高电平、 14 脚输出低电平 时,N1、P2导通,耦合变压器原边电流流向如图 6(a) 所示。当 14 脚输出高电平、 11脚输出低电平时, N2、P1导通,耦合变压器原边电流流向如图 6(b) 所示。图 7 为驱动电路耦合变压器的输出波形。图1图2表110智能仪表综合课程设计经过计算 KA3525的2 脚所需要输入的电压并将其转化成单片机所需要的 10位数 字量,最后 SPCE061A单片机将 10 位数字量左移 6 位写入 P_DAC1单元的高 10 位,进行 D/A转

24、换成相应的 3525芯片 2 脚给定电压,实现对开关电源的步进调 整。采样电压经 A./D 转换后送 LCD显示,显示精度可达 0.01V。经多次测试, 本电源输出电压可以 0V 40V 连续调整,歩进值 0.1V, 最大输出电流可达 I0MAX=2.5A,电压调整率 Su=0.1%,负载调整率 SI=0.2%,效率 =90%,试验结 果表明本数控电源方案切实可行。设计要求现今的可调式开关电源通常采用专用芯片,具有开发时间短、可控性强等优点; 同时也具有功能受芯片限制等缺点。 本文提出的可控式开关电源方案通过软件控 制改变数字电位器阻值来改变反激式开关电源反馈电压从而改变输出电压的大 小,使电

25、源的输出电压范围调整极其方便。 本开关电源输出电压可通过按键、 USB 总线等控制,并且输出电压可断电记忆,控制方式也很容易扩展( 如扩展 RS 232总线控制方式等 ) 。输出电压范围 1530V,最大电流可达 5A,最小调节值 1V。设计方案论证一 DC-DC主回路拓扑的方案选择DC-DC变换有隔离和非隔离两种。输入输出隔离的方式虽然安全,但是由于隔离 变压器的漏磁和损耗等会造成效率的降低, 而本题没有要求输入输出隔离, 所以 选择非隔离方式,具体有以下几种方案:方案一: buck 电路形式。开关管 V1 受占空比为 D的 PWM波的控制,交替导通 或截止,再经 L和 C滤波器在负载 R上

26、得到稳定直流输出电压 Uo。只要电感电 容选择合理,能达到题目要求的 3-9.9V ,且输出电压 Uo呈现连续平滑的特性。 (见图 3)11智能仪表综合课程设计方案二: boost 电路形式。并联开关电路原理与串联开关电路类似,但此电路 为升压型电路, 开关导通时电感储能, 截止时电感能量输出。 该电路属于升压型 电路,达不到题目要求的 3-9.9V 的输出电压。(见图 4)?方案三:串并联开关电路形式。实际上此电路是在串联开关电路后接入一个并 联开关电路( BUCK结合 BOOST实现既可以升压又可以降压)。用电感的储能特 性来实现升降压,电路控制复杂。(见图 5)以上三种方案属开关电源。采

27、用纯开关电源( AC-DC变换器)。开关稳压电路控 制12智能仪表综合课程设计功率晶体管或 MOS-FET工作在开关状态,截止时无电流,导通时饱和压降很小, 所以管耗也很低,大大提高了电源的效率,其效率可达 70%95%。但其纹波电压 较高,控制电路复杂,制作难度高、周期长。方案四:使用纯线性稳压电源。 这种电源的输出以线性调整晶体管为基础, 利用 晶体管的电流放大作用增大负载电流, 在电路中引入深度电压负反馈, 是输出电压稳 定。通过改变反馈网络设定参数使输出电压可调, 在次基础上引入电流设定和电 流反馈电路既可实现稳流功能。该方案结构简单、技术成熟、调节方便,但调整 管集电极始终消耗功率。

28、 特别是在负载电流较大且输出电压较低时, 调整管自身 的功耗很大、效率很低,既浪费能源,又使调整管产生很高的温度。总之,线性 电源调整管工作在放大状态,发热量较大,效率低( 35%左右),需要加体积庞大的散热片。本题只需要降压, 考虑到效率问题, 采用开关 buck 稳压电路 , 同时为了减小纹波 可引入线性稳压方法, 即采用开关型稳压电路和线性稳压电路相结合的方法。 直 流电源的前级采用降压式开关电源( DCDC 变换器),提高其工作效率,后级采 用线性稳压电路以减小纹波电流、 提高电路的稳定性, 而且便于控制。 这样还可 以减少设计制作难度。最终确定电路:13智能仪表综合课程设计图7硬件设

29、计电路硬件电路由主控单片机、数控开关电路、控制电路、显示电路组成。 其中主控单片机使用 AT89c51,转换电路使用 ADC0809显, 示电路使用 LCD液晶屏,其中包括一些简单震荡电路等,基本模电电路。如图 814智能仪表综合课程设计图815智能仪表综合课程设计4. 系统硬件设计主控制器选择由于经常学习并解除 AT89C52单片机,对其有一定了解。因此,主控器选择 AT89C52单片机。 AT89C52是一个低电压,高性能 CMOS 8位单片机,片内含 8k bytes 的可反复擦写的 Flash 只读程序存储器和 256 bytes 的随机存取数据存储 器( RAM),器件采用 ATME

30、L公司的高密度、非易失性存储技术生产,兼容标准 MCS-51指令系统,片内置通用 8 位中央处理器和 Flash 存储单元,AT89C52单片 机在电子行业中有着广泛的应用。显示电路图 9 显示电路 显示电路基于 AMP IRE128*64显示器。液晶显示器件( LCD)独具的低压、微功 耗特性他在单片机系统中特得到了广泛的应用, 常用的液晶显示模块分为数显液 晶模块、点阵字符液晶模块和点阵图形液晶模块, 其中图形液晶模块在我国应用 较为广泛, 因为汉字不能像西文字符那样用字符模块即可显示, 要想显示汉字必 须用图形模块。本课设所选择的 LCD是 AMPIRE128 64 的汉字图形型液晶显示

31、模 块,可显示汉字及图形,图形液晶显示显示器接如图 8 所示。16智能仪表综合课程设计ADC0804A/D 转换器与单片机的接口电路ADC0804引脚图如下:图 10 ADC0804 引脚图引脚功能及应用特性如下:CS 、RD 、WR( 引脚 1、2、3):是数字控制输入端,满足标准 TTL 逻辑电 平。其中 CS 和WR用 来控制 A/D 转换的启动信号。 CS 、RD 用来读 A/D 转换的 结果,当它们同时为低电平时,输出数据锁存器 DB0DB7各 端上出现 8 位并行二 进制数码。CLKI(引脚 4)和 CLKR(引脚 19):ADC08010805片 内有时钟电路,只要在外 部“CL

32、KI”和“ CLKR”两端外接一对电阻电容即可产生A/D 转换所要求的时钟,其振荡频 率为 fCLK1/1.1RC 。其典型 应用 参数为 : R=10K , C=150PF, fCLK640KHZ,转换速度为 100 。若采用外部时钟,则外部 fCLK 可从 CLKI 端送入,此时 不接 R、C。允许的时钟频率范围为 100KHZ1460KHZ。INTR (引脚 5): INTR 是转换结束信号输出端,输出跳转为低电平表示本次 转换已经完成,可作为微处理器的中断或查询信号。如果将 CS 和WR端 与 INTR 端相连,则 ADC0804就 处于自动循环转换状态。17智能仪表综合课程设计CS

33、0 时,允许进行 A/D 转换。 WR由 低跳高时 A/D 转换开始, 8 位逐次比较 需 88=64 个时钟周期, 再加上控制逻辑操作, 一次转换需要 66 73 个时钟周 期。在典型应用 fCLK640KHZ 时,转换时间约为 103 114 。当 fCLK 超过 640KHZ,转换精度下降,超过极限值 1460KHZ 时便不能正常工作。V ()(引脚)和 V()(引脚 7):被转换的电压信号从 V ()和 V()输入,允许此信号是差动的或不共地的电压信号。如果输入电压 V的变化范围 从 0V到 Vmax,则芯片的 V ()端接地,输入电压加到 V ()引脚。由于该芯片允许差动 输入,在共

34、模输入电压允许的情况下, 输入电压范围可以从非零伏开始, 即 Vmin 至Vmas。此时芯片的 V ()端应该接入等于 Vmin 的恒值电码坟上,而输入电压 V仍然加到 V()引脚上。AGND(引脚 8)和 DGN(D 引脚 10): A/D 转换器一般都有这两个引脚。模拟地 AGND和 数字地 DGND分 别设置引入端,使数字电路的地电流不影响模拟信号回 路, 以防止寄生耦合造成的干扰。V 2(引脚 9):参考电压 V /2 可以由外部电路供给,从“ V /2 ”端直接送入,V /2 端电压值应是输入电压范围的二分之一。 所以输入电压的范围可 以通过调整 V /2 引脚处的电压加以改变,转换

35、器的零点无需调整。ADC0804 转换器的工作时序如图 10 所示。18智能仪表综合课程设计图 11AD转换器的设计接口电路图图 12 A/D 转换电路图中, ADC0804 数据输出线与 AT89C51 的数据总线直接相连, AT89C51 的 RD 、 WR和 INT1 直接连到 ADC0804,由于用 P1.0 线来产生片选信号,故无需外加 地址译码器。当 AT89C51 向 ADC0804发 WR( 启动转换) 、RD( 读取结果 )信号时, 只要虚拟一个系统不占用的数据存储器地址即可。19智能仪表综合课程设计4.4 系统总体电路图图 13 完整图20智能仪表综合课程设计5 设计语言及

36、软件介绍C 语言介绍C语言是 1972 年由美国的 Dennis Ritchie 设计发明的,并首次在 UNIX操作系 统的 DEC PDP-11计算机上使用。它由早期的编程语言 BCPL(Basic Combined Programming Language) 发展演变而来,在 1970 年, AT&T 贝尔实验室的 Ken Thompson根据 BCPL语言设计出较先进的并取名为 B的语言, 最后导致了 C语言 的问世。 而 B语言之前还有 A 语言,取名自世界上第一位女程序员 Ada(艾达)。KEIL 软件介绍Keil C51 是美国 Keil Software 公司出品的 51 系列兼

37、容单片机 C语言软件开发 系统,与汇编相比, C 语言在功能上、结构性、可读性、可维护性上有明显的优 势,因而易学易用。 Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一 个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境( uVision )将这些部分组合在一起。运行 Keil 软件需要 WIN98、NT、WIN2000、 WINXP等操作系统。如果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选, 即使不使用 C 语言而仅用汇编语言编程, 其方便易用的集成环境、 强大的软件仿 真调试工具也会令你事半功倍。21智能仪表综合课程设计6 系统软件设计6.1 概

38、述开关电源主要由开关管、反馈误差放大器, PMW产生一,可以用单片机产生 PWM 波控制开关管的工作状态, 而开关管的开关频率即单片机的 PWM频率来产生不同 的输出电压, 将输出电压反馈并进行误差放大后再输给单片机, 单片机 AD采样, 根据电压大小相应改变输出 PWM频率与占空比,从而改变开关管开关频率产生对 应电压,实现对输出电压的实施监控与跟踪。 单片机的 PWM主要可通过其定时器 实现,设置相关定时器便可产生一定频率与一定占空比的方波信号。系统程序设计模块6.2.1 程序框图6.2.2 主程序/*/*22智能仪表综合课程设计/*头文件及宏定/*/*#include #includei

39、ncludes.h #define uchar unsigned char #define uint unsigned int #define SCANPORT P2 #define TIME1H 80 #define TIME1L 80 sbit wr=P31; sbit rd=P30;sbit P27=P27; unsigned long int shuchu=500; uint zhuhuandata;unsigned long int ch=0; uchar i=0;/定时器 1 溢出时间 / 默认的开机电压 / 按键标记 /uchar uca_LineScan3=0 xEF,0 xD

40、F,0 xBF;void chuli();/ 函数定义 /uchar getkey();/函数定义 /* /*/*将键值累加并送显/* /* void qiuhe(uchar t)if(i=1)ch=t; vShowOneChar(6,89,ucat);if(i=2)ch=ch*10+t;vShowOneChar(6,103,ucat);23智能仪表综合课程设计if(i=3)ch=ch*10+t;vShowOneChar(6,111,ucat);/* /*按键功能函数/* */* /*void key_chuli(uchar x)uchar t;switch(x)case 42: t=0;i+

41、;qiuhe(t);if(i=3)vShowOneChin(2,49,uca_que);vShowOneChin(2,64,uca_ding);vShowOneChin(4,59,uca_wenhao);break; /0case 31: t=1;i+;qiuhe(t);if(i=3)vShowOneChin(2,49,uca_que);vShowOneChin(2,64,uca_ding);vShowOneChin(4,59,uca_wenhao);break; /1case 32: t=2;i+;24智能仪表综合课程设计qiuhe(t);if(i=3)vShowOneChin(2,49,u

42、ca_que);vShowOneChin(2,64,uca_ding);vShowOneChin(4,59,uca_wenhao);break; /2case 33: t=3;i+;qiuhe(t);if(i=3)vShowOneChin(2,49,uca_que);vShowOneChin(2,64,uca_ding);vShowOneChin(4,59,uca_wenhao);break; /3case 21: t=4;i+;qiuhe(t);if(i=3)vShowOneChin(2,49,uca_que);vShowOneChin(2,64,uca_ding);vShowOneChin

43、(4,59,uca_wenhao);break; /4case 22: t=5;i+;qiuhe(t);if(i=3)vShowOneChin(2,49,uca_que);vShowOneChin(2,64,uca_ding);vShowOneChin(4,59,uca_wenhao);break; /5case 23: t=6;i+;qiuhe(t);if(i=3)vShowOneChin(2,49,uca_que);25智能仪表综合课程设计vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao);break; /6 case 11

44、: t=7;i+;qiuhe(t);if(i=3)vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao);break; /7 case 12: t=8;i+;qiuhe(t);if(i=3)vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao);break; /8 case 13: t=9;i+;qiuhe(t);if(i=3)vShowOneChin(2,49

45、,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao);break; /9 case 41: if(i=3) /okch=ch*256/512;shuchu=ch;ch=0;TH0=65200;TL0=65200;vShowOneChin(2,49,uca_0);vShowOneChin(2,64,uca_0);vShowOneChin(4,48,uca_SHU);26智能仪表综合课程设计vShowOneChin(4,64,uca_CHU); vShowOneChar(6,88,uca_HEN); vShowO

46、neChar(6,104,uca_HEN); vShowOneChar(6,112,uca_HEN); i=0; break;void vTimer0(void) interrupt 1 using 2uchar a,d;unsigned long int c=0;uchar data tab3; a=(zhuhuandata&0 xf0)4)*100/16); d=(zhuhuandata&0 x0f)*100/256); c=(a+d)*5.12;tab0=c%10; tab1=c/10%10; tab2=c/100%10; vShowOneChar(2,89,ucatab2); vSho

47、wOneChar(2,103,ucatab1); vShowOneChar(2,111,ucatab0); TH0=TIME1H;TL0=TIME1L;void main(void)SCANPORT=0 x8F;ClearLCD(0 x00); vShowOneChar(2,89,uca5); vShowOneChar(2,96,uca_XIAOSHU); vShowOneChar(2,103,uca0); vShowOneChar(2,111,uca0); vShowOneChar(2,120,uca_V); vShowOneChin(0,0,uca_DANG); vShowOneChin(

48、0,16,uca_QIAN); vShowOneChin(0,32,uca_GONG); vShowOneChin(0,48,uca_ZUO); vShowOneChin(0,64,uca_DIAN); vShowOneChin(0,80,uca_Y A);27智能仪表综合课程设计vShowOneChin(0,96,uca_MAOHAO); vShowOneChin(4,0,uca_QING); vShowOneChin(4,16,uca_SHE); vShowOneChin(4,32,uca_ZHI);vShowOneChin(4,48,uca_SHU);vShowOneChin(4,64,

49、uca_CHU);vShowOneChin(4,80,uca_DIAN);vShowOneChin(4,96,uca_Y A);vShowOneChin(4,112,uca_MAOHAO);vShowOneChar(6,96,uca_XIAOSHU);vShowOneChar(6,88,uca_HEN);vShowOneChar(6,104,uca_HEN);vShowOneChar(6,113,uca_HEN);vShowOneChar(6,119,uca_V);/TMOD=0X01;TL0=TIME1L;ET0=1;TR0=1;IT0=1;EX0=1;EA=1;TH0=TIME1H;/T/

50、C0 开中断 /开定时器 0 中断 /外中断方式:下降沿。 /开启外部中断。/while(1)wr=0;wr=1;chuli();if(zhuhuandatashuchu)P27=1;if(zhuhuandata=shuchu)P27=0;void chuli()rd=0;zhuhuandata=P0;28智能仪表综合课程设计/*/*/*函数实/* /* unsigned char getkey()/扫描状态暂存。/行号,列号。uchar ucTemp=0;uchar ucRow=0,ucLine=0;for(ucLine=0;ucLine3;ucLine+) /列扫描SCANPORT=uca

51、_LineScanucLine; / 输出扫描电位。 ucTemp=SCANPORT&0 x8F; / 输入扫描电位,并屏 蔽高 4 位。if(ucTemp!=0 x8F)/ 判断该列是否有按键按下。switch(ucTemp)case 0 x8E: ucRow=10;break;/ 如果有,则判断行号。case 0 x8D: ucRow=20;break;case 0 x8B: ucRow=30;break;case 0 x87: ucRow=40;break; default: P2=P2; break;break; /SCANPORT=0 x8F;/恢复 P2 口return (ucRo

52、w+ucLine+1);/ 返回按键编码。格式为 2 位数,高位为行号,低位为列号。 /void vINT0(void) interrupt 029智能仪表综合课程设计EX0=0;key_chuli(getkey();/等待按键松开 /while(SCANPORT&0 x8F)!=0 x8f) ;EX0=1;显示数据刷新子程序/* /*/* LCD12864驱动程/*/*/*/*/* */*头文件及宏定/*#include #define LCDPORT P1 sbit E= P37;sbit RW= P36;sbit DI= P35;sbit CS1= P33;sbit CS2= P34;s

53、bit BUSYSTATUS= P17; /#define DISONSTA TUS P0_5 /#define RSTSTATUS P0_4 #define LCDSTARTROW 0 xC0 #define LCDPAGE 0 xB8/忙状态位。/显示开关状态位。/复位状态位。/ 设置起始行指令。/设置页指令。30智能仪表综合课程设计#define LCDLINE 0 x40/设置列指令。/*/*/*读忙标志位/* /*bit bCheckBusy()LCDPORT=0 x00;RW=1;DI=0;E=1;E=0;return BUSYSTATUS;/* /*/*数据/* /* void

54、vWriteData(unsigned char ucData) while(bCheckBusy();LCDPORT=0 x00;RW=0;DI=1;LCDPORT=ucData;E=1;31智能仪表综合课程设计E=0;/* /* /* /* /* void vWriteCMD(unsigned char ucCMD) while(bCheckBusy();LCDPORT=0 x00;RW=0;DI=0;LCDPORT=ucCMD;E=1;E=0;/* /*初始化函数* *LCD/* /* /*void vLCDInitialize()CS1=1;CS2=1;/8 位形式,两行字符。 /开显示。/清屏。/画面不动,光标右移。vWriteCMD(0 x38); vWriteCMD(0 x0F); vWriteCMD(0 x01); vWriteCMD(0 x06);vWriteCMD(LCDSTARTROW);/设置起始行。32智能仪表综合课程设计*/*/*/*显示自定义/*/*char/在 8128 的格子里显示自定义长度的一行 void vShowCustomRow(unsigned char ucW

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论