电子设计竞赛简易稳压电源的设计说明_第1页
电子设计竞赛简易稳压电源的设计说明_第2页
电子设计竞赛简易稳压电源的设计说明_第3页
电子设计竞赛简易稳压电源的设计说明_第4页
电子设计竞赛简易稳压电源的设计说明_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、. . . . i / 61电子设计大赛论文简易数控直流稳压电源设计简易数控直流稳压电源设计20132013 年年 5 5 月月 2 2 日日. . . . ii / 61题目名称简易数控直流稳压电源设计学院专业指导教师设计要求:(1)输出电压:围 09.9V,步进 0.1V,纹波不大于 10mV;(2)输出电流:500mA;(3)输出电压值由数码管显示;(4)由“” 、 “”两键分别控制输出电压步进增减;(5)为实现上述几部件工作,自制一稳压直流电源,输出10V,5V。提高要求:(1)输出电压可预置在 09.9V 之间的任意一个值;(2)用自动扫描代替人工按键,实现输出电压变化(步进 0.1

2、V 不变) ;(3)扩展输出电压种类(比如三角波等) 。比赛工作计划: (1)查阅资料,设计硬件电路;(4.17-4.20) (2)硬件电路焊接; (4.21-4.23) (3)整机调试,编写设计报告(4.24-4.29)参考书籍:1单片微机原理与应用 ,第二版,机械工业,2004 年 2 月。2C8051F 系列单片机原理与应用 ,培仁,力,清华大学,2013 年 1 月第一版。3C 程序设计,谭浩强,第三版,清华大学,2005 年 7 月第二版。参考文献:1何希才,明莉。新趔稳压电源与应用实例M。:电子工业20042王小明,卢志强。基于 STC89C52 数控直流电源设计。微计算机信息,2

3、009,12。3何香玲,邓刚。数控式步进可调稳压源J。现代电子技术,2007。4兰波。数控直流电源的研究J。北方学院学报:自然科学版,2009。姓 名学 号专业/班级所在学院项目中的分工项目组成员. . . . iii / 61. . . . iv / 61摘 要数控直流稳压电源是电子技术常用的设备之一,广泛的应用于教学、科研等领域。本课题以单片机为控制核心,进行算法控制和集成运放线性负反馈,并通过7219 驱动四位显示器进行精确显示,设计并实现了一台高精度、低噪声的数控直流电流源。 该稳压电源由供电电源、数控系统、模拟输出三个部分组成。供电电源采用MC7815 和 MC7915 稳压器,通过

4、桥式整流电路,为整机提供了稳定的直流供电;控制系统以单片机 C8051F020 为核心,其部的 12 位 DAC 转换器产生控制输出,实现了输出电流的实时数控和精确检测。模拟部分利用集成运放继电器等模块实现不同波形的输出;系统还设置了串口通讯、遥控功能。经测试,输出电压围达 09.9V,输出纹波与噪声小于 10mV,均达到题目指标。论文阐明了软硬件设计依据,给出了系统功能和性能测试结果,并附录了详细的设计资料。关键词:恒压源 集成运放 7219 驱动器单片机 实时数控 . . . . v / 61目 录第 1 章 方案论证与原理设计 11.1 模拟输出方案 11.2 供电电源方案 11.3 控

5、制系统方案 21.4 整机方案框图 2第 2 章电路设计与参数论证 32.1 供电电源(15V)32.25V 供电电源 52.3 数控电路 52.4 模拟输出电路与 A/D 校准 72.5 驱动数码管显示电路 10第 3 章系统功能与软件设计 113.1 系统功能分析 113.2 软件设计结构 12第 4 章功能与性能测试 164.1 测试条件 164.2 整机调试 164.3 系统性能测试 164.4 性能参数测试 17第 5 章设计总结与技术展望 21参考资料 23附录 23附录一测试仪器清单 23附录二原理电路图 23附录三元器件清单 24附录四单片机程序 25. . . . 1 / 6

6、1数控直流稳压电源是输出为稳定直流电压、并可用数控方式调节和稳定输出电压的电源设备,在对工作电压稳定度、纹波电压大小等有较高要求的领域具有广泛的应用,如:电镀、精密加工、激光器等。为此我们选择了简易数控直流稳压电源设计作为此次竞赛的课题。第 1 章 方案论证与原理设计1.1 模拟输出方案模拟输出部分是数控直流稳压电源的重要组成部分,是决定各项设计指标的关键性因素。1.1.1 方案选择模拟部分,通过给功放供电,功放构成反相器、反相相加器、反相发大器,积分器分别实现反相、反相相加、放大、积分等功能,结合继电器的控制,分别输出方波、三角波和直流,并反馈给单片机,用 A/D 采样并校准。同时,利用 O

7、P547 输出稳定的500mA 直流电流。1.1.2 参数优化设计由于本题要求的输出电压精度高,纹波小。因此我们必须考虑保证这些质量参数的优化方案。 纹波与噪声控制纹波与噪声控制最大纹波电压是在设定的直流电压的情况下,使电压的纹波(包过噪声)的绝对值大小,通常以峰峰值或有效值表示。所以在设计时充分考虑这些因素,在电路中必要部分加入多种降噪滤波措施。安全保护功能安全保护功能安全保护主要用于输出电流较大而负载阻值较小时。因此在设计电路时考虑了系统的过热、过流、过压和反压保护。1.2 供电电源方案供电电源一般有开关电源、线性电源两种方案。开关电源开关电源这种电源主要提供可靠稳定的电压类似开关式恒流源

8、,功率损耗小,效率高,比较经济,但电压波纹大,难以滤除,会对后续电路造成影响。. . . . 2 / 61线性电源线性电源这种电源也提供可靠稳定的电压,结构简单,纹波电压小(10mV 以下),易滤除,抗电磁干扰性能和电源纯净性好。1.3 控制系统方案控制系统功能接收取样信号,进行运算处理,并发出控制信号控制负载电流,而且有相应显示和写入控制字等功能。常用的实现方案有硬件逻辑电路、单片机软件编程和 CPLD 硬件逻辑编程。硬件逻辑电路结构简单,实现方便,但功能扩展性不强;单片机系统通过自身时钟编程产生逻辑信号序列,可键盘预置信号序列状态与数码显示,使用灵活方便,可通过软件升级达到系统升级,开发容

9、易,性价比高;CPLD 电路也可实现以上功能,且处理速度更快,但价格偏贵,开发难度大,多用于高速实时系统。所以选用单片机作为控制系统的的核心接收取样信号对其处理并发出控制信号控制负载电流。其他外围电路还有 LED 显示、输入键盘、时钟信号。 1.4 整机方案框图 由以上分析可得出整机电路的基本结构方案框图如图 11 所示。2 22 20 0V V交交流流O OU UT TP PU UT TL LE ED D显显示示复复位位键键盘盘单单片片机机D D/ /A A基基准准A A/ /D D变变压压器器桥桥式式整整流流功功放放电电路路反反馈馈7 78 81 15 5稳稳压压7 78 80 05 5稳

10、稳压压+ +5 5V V电电压压+ +1 15 5V V电电压压数数控控系系统统模模拟拟功功放放系系统统电电源源供供电电系系统统图 11 数控直流稳压电源框图. . . . 3 / 61第 2 章 电路设计与参数论证通过前一章的分析,欲获得一个高性能的数控直流电流源 ,主要是设计好调整器电路,放大电路,反馈控制电路,电源电路。 本章详细的介绍了各部分功能电路的设计思想和原理。2.1 供电电源(15V)整机供电电源原理电路如图 22 所示。线性稳压电源电路主要由桥式整流电路、滤波电路、线性稳压器、保护电路和工作指示电路(LED 灯)组成。经降压变压器变换后的15V 交流电压由 P2 端口输入,经

11、过整流、滤波和稳压后,由 P1 端口出端15V 直流电压,为信号处理电路供电。图 2-1 线性15V 稳压电源电路原理图稳压器选择稳压器选择根据所选运算放大器 OP07 的特性(运算放大器的选择依据将在信号处理电路元件选择中给出) ,需要提供直流电电压。根据信号处理电路原理图和系统方案框图,计算得信号处理电路所需的电流约为 1A(后面将给出详细计算过程) 。所以稳压器选择MC7815 和 MC7915。表 2-1 列出了 MC7815 和 MC7915 的部分参数。表 2-1 稳压器部分参数测试条件型号输出/V(典型值) 输出电流/A输入围/V最小压差/VUi(v)Io(mA)MC7815AC

12、151.01.217.9302231000MC7915AC-151.01.2-17.9-302-23500. . . . 4 / 61变压器选择变压器选择因为运放供电需15V 电压,而稳压器输入输出电压差要求不小于 3V,所以此处整流电路电压输入处取 18V。若设桥式整流电路输入电压为 U1,输出电压为 U2,则在一般情况下(负载,滤波电容) , U2 估算值为: (2-1)故当 U1=15V 时,整流电路输入为。所以选取 220V 输入15V 电压输出的变压器。整流二极管选择整流二极管选择桥式整流电路输入15 电压,即输入电压 U=30V。二极管击穿电压。对于桥式整流电路,流过每个二极管的平

13、均电流是负载电流的一半,即 (2-2)式中(18V)为整流电路输入电压,为其负载。线性稳压电源的负载主要由信号处理系统中的运放构成,运放 OP07 工作电流小于10mA,系统中共 5 个运放,故整流电路输出电流 I0=26mA(考虑其他负载估算输出最大电流) 。稳压电路输出电压 U0=30V(15V) ,故负载估算值为 RL=1.2k。故流过二极管电流为 18mA。所以选择 1N4001 二极管,其反相击穿电压为 50V,额定工作电流为 1A。保护二极管的选择(保护二极管的选择(D1D1、D9D9)当输入端意外短路时,保护二极管能给输出电容、提供一个放电通路,防止稳压器调节管击穿。此处选取 1

14、N4001 型二极管,其最高反相电压 Urm=50V,远大于稳压器输入、输出端电压差 3V;且其额定电流 I=1A,满足放电要求。滤波电容选择(滤波电容选择(C1C1、C2C2)选择)选择滤波电容的选取应满足Td=RLC1=(35)T/2 (2-3)Td 为放电时常数,T 为交流电周期。由前面计算得 RL= =1.2k。故C1=C21.67nF,此处取 C1=C2=330uF。性能改善电容选择性能改善电容选择C3,C4用于改善高频波纹,当稳压器距离 C1,C2越远时,C3,C4越大。一般取. . . . 5 / 610.11uF,此处选取 C3=C4=0.1uF。C5,C6用于减小由负载电流瞬

15、时变化引起的高频干扰,一般取 C5=C6=0.1uF。当稳压器输出离负载较远时,器输出端接电容用以改善输出波纹特性并减小低频干扰。一般取 C7=C8=100uF。发光二极管(发光二极管(D2D2、D8D8)与限流电阻()与限流电阻(R1R1、R2R2)选择)选择电路中发光二极管 D2、D8用来显示电源是否正常工作,其工作电流小于 10mA。故此处选取限流电阻 R1=R2=5.1K。2.2 5V 供电电源供电电源原理电路如图 22 所示。提供+5V 直流电电压,供给单片机与键盘、显示器等其它器件正常工作。其器件参数等同于 15V 供电电源,在此不加累述。图 2-2 线性 5V 稳压电源电路原理图

16、2.3 数控电路数控直流电流源的控制电路采用单片机最小系统对电路各部分进行控制。最小系统由 MCU、采样输入、控制输出、键盘、显示电路组成。2.3.1 单片机最小系统单片机最小系统电路如图 2-3 所示。. . . . 6 / 61图 23 单片机最小系统电路MCUMCU 选型选型MCU 选用 Silicon Laboratories 公司的 C8051F020 单片机,该系列单片机片含 CIP-51 的 CPU 核,它的指令系统与 MCS-51 完全兼容。其中 C80511020 单片机具有控制系统所需的模拟和数字外设,包括看门狗、ADC、DAC、电压比较器,VDD 监视器和温度传感器等,并

17、具有多种总线接口。与以前的 5l 系列单片机相比,C8051F020 增添了许多功能,其可靠性和速度也有了很大提高。时钟设计时钟设计数控直流稳压电源要求微处理器采样周期设置为 0.5s,并且实测值和设定值间隔显示变换周期为 2s 左右,采用 12MHZ 晶振,可满足系统要求。. . . . 7 / 61键盘与显示键盘与显示数控直流稳压电源具有键盘输入与显示功能。用自治键盘对电压进行设定,采用四位数码管显示实测值和设定值。采用 7219 芯片电路作为显示控制和驱动端,其优点是显示位数多,节约 I/O 端口,使用方便,价格合理。D/AD/A 转换电路转换电路为了满足取样精度需要,选择电压为 2.5

18、V 的基准电压,通过其部的 12 位 D/A 变换器,使其步长精度达到 2.5V/212 *410.1V,通过软件编程,从 DAC0、DAC1 端口输出相应信号波,传到模拟部分完成波形的转换;D/A 是先写入高 8 位,再写入低 4 位。2.4 模拟输出电路与 A/D 校准方波实现原理方波实现原理控制单片机的 D/A 转换,使其 DAC0 口输出方波(此时的方波为单极性,电压幅值为2.5V),同时,DAC1 输出直流(控制其电压为 1.25V),直流电压经过反相器,变成-1.25V,然后,与方波进行反相相加,得到1.25V 方波。原理图如图 25 所示。图 24-1 叠加方波实现图反相放大调节

19、实现原理反相放大调节实现原理根据要求需 09.9V 电压,则经过功放 OP07AJ 的反相放大器,与前一个反相器想抵,输出正向电压,通过调动滑动变阻器 R32 确定放大倍数,倍数为得到 10V 的方波。若仅. . . . 8 / 61直流,DAC1 无输入,直流电压直接由 DAC0 进入,直接反相即可,原理图如图 25 所示。图 24-2 OP07AJ 功放的反相放大器三角波实现原理三角波实现原理需要三角波输出时,控制继电器 K1,使其开关合下,三角波经过积分电路,变成三角波,输出。如不需三角波,K1 上拨,将积分器短路,直接流过。 (图 6)图 2-4-3 继电器与积分器通过 OP547 功

20、率放大器,在电压不变的情况下,增大电流,达到要求的 500mA,S23为拨键开关,按下将会产生输出。下方的 R43,R45 电阻起到 3:1 的分压作用. . . . 9 / 61图 2-4-4 OP547 电流调整图A/DA/D 校准原理校准原理在任何输出情况下,需要输出电压对单片机进行反馈,通过反馈控制 D/A 转换的精度。当直流输出时,控制继电器 K2,将二极管短路,而在方波、三角波输出时,使继电器开关合上,双极性的信号(方波或三角波)经过二极管变成单极性(0V-2.5V)反馈给单片机 AIN0.0 端口,经过单片机部 12 位的 A /D 采样,再与 D/A 输入的数字量比较,进行校正

21、,保证其准确性。图 2-4-5 反馈电路图. . . . 10 / 612.5 驱动数码管显示电路该部分由 7219 显示驱动和四位 LED 显示器组成,MAX7219 是一种集成化的串行输入/输出共阴极显示驱动器,它连接单片机驱动 4 位 LED 显示器的 BCD 码7 段数字显示,电路图如下:图 2-5 MAX7219 引脚连接图与单片机相连部分,将 DIN,LOAD,CLK 端分别于 I/O 端 P1.4,P1.6,P1.7 相连,串行数据在 DIN 输入 16 位数据包,通过时钟的上升沿数据均移入到部 16 位移位寄存器,LOAD 的上升沿被载入数据寄存器或控制寄存器。16 位串行数据

22、 D0-D15,其中,D8-D11 为寄存器地址位。D0-D7 为数据位。D12-D15 为无效位。在传输过程中,首先接收到的是 D15 位与数码管相接部分。与数码管相连部分, DIG0、DIG 1、DIG 2、DIG 3 端分别接四个数码管相连进行位选,SEG A、SEG B、SEG C、SEG D、SEG E、SEG F、SEG G、SEG DP 分别与数码管相应字母的片选端相连进行数字显示。外部电阻的最小值为 9.53K,它设定段电流为 40mA。. . . . 11 / 61第 3 章 系统功能与软件设计3.1 系统功能分析1 1)显示功能)显示功能四位数码管分别各两位显示电压的大小值

23、(09.9V)和频率值;2 2)键盘示意图)键盘示意图1 12 23 34 45 56 67 78 89 90 0. .确定确定预置预置自扫自扫直流直流三角波三角波方波方波速度速度自动自动+ +自动自动- -手动手动+ +手动手动- -图 31 键盘示意图复位按键 22 个,0-9 和“.”作为数字输入键,并有“预置”“自扫”“直流”“三角波”“方波”“速度”“自动+”“自动-”“手动+”“手动-”“确定”作为功能控制键具体介绍如下;预置:在工作状态前预先设置一个电压。自扫:按下该键,输入数值,再按“确定”键,可直接由预设值自动扫描到该数值。直流:按下,示波器显示直流电压输出。三角波:按下,示

24、波器显示三角波形电压输出。方波:按下,示波器显示方波形电压输出。速度:控制电压自动变化的速度,分快慢两档。自动+/-:在自扫状态下,使电压自动以 0.1V 步进增加或减小。手动+/-:手动调节时,每按一次使电压以 0.1V 步进增加或减小。. . . . 12 / 61确定:输入数字后,按此键确认。拨键开关 1 个,为输出“output”,当键拨上时输出信号,拨回时停止输出。3 3)控制:)控制:a) 接收采样电压并与设定值比较产生控制信号输出b) 可由键盘设置设定值3.2 软件设计结构3.2.1 控制与显示程序设计思想程序由主程序、定时器中断程序、键盘扫描程序四部分组成。各部分功能与流程图如

25、下。主程序主程序主程序的主要工作是进行初始化,扫描键盘,并响应键盘,设定电流值。开 始初始化开中断键盘扫描子程序图 3-1 主程序流程图键盘扫描子程序键盘扫描子程序该系统需要 22 个按键即可实现所有功能。当单片机响应键盘后,则得到一个返回值。软件设计采用了状态转换的编程方法,有工作状态和编辑状态两种状态。在工作状态只响应确认键,并转入编辑状态,不响应其它任何键;在编辑状态设定输出电流值,确认和取消键退出编辑状态,转入工作状态。这样不仅降低了编程的难度,也提高了程序的稳定性。其流程图如下:. . . . 13 / 61读读取取键键值值编编辑辑状状态态工工作作状状态态预预置置自自扫扫S S+ +

26、/ /- -+ +/ /- -三三角角方方波波数数字字键键其其他他键键确确定定输输入入确确定定确确定定直直流流开开始始有有键键动动?延延时时有有键键动动?Y YE ES SN NO OY YE ES SN NO O返返回回显显示示图 32 键盘扫描子程序流程图 定时器中断程序定时器中断程序电路中 A/D 采样周期为 130ms,当定时器 T0 中断后进行一次采样,单片机处理后,输出 D/A 进行调节,并且显示。定时器中断程序流程如图 3-3 所示。. . . . 14 / 61开 始 N N 1启动A/D转换定时器中断服务程序返回图 33 定时器中断程序流程ADCADC 反馈调节反馈调节需要得

27、到精确的电压值,模拟功放电路部分终端会输入一个反馈,单片机的 ADC 会进行采样,读采样数据,并与 DAC 设定值进行对比,若误差 err=0.05,进行 PID 线性校正,控制调整电压和传送显示。设电压变化为,当前电压为 Vn,利用 err*coff 进行修正。ADC采样D DA AC C对对比比PID线性校正E Er rr r = =0 0. .0 05 5E Er rr r 8) & 0 x0f;DAC0L = low;DAC0H = high;void SetDAC1(int dat)uchar low;uchar high;low = dat & 0 xff;high

28、 = (dat 8) & 0 x0f;DAC1L = low;DAC1H = high;. . . . 29 / 61/ 7219 操作程序/void Send7219(uchar add, uchar dat)uchar ADS, j;LOAD7219 = 0;CLK7219 = 0;ADS = add;for(j = 0; j 8; +j)/ send addressDIN7219 = ADS & 0 x80;ADS = 1;CLK7219 = 0;CLK7219 = 1;ADS = dat;for(j = 0; j 8; +j)/ send dataDIN7219 = A

29、DS & 0 x80;ADS = 1;CLK7219 = 0;CLK7219 = 1;CLK7219 = 0;LOAD7219 = 1;/ 4 位数码管显示. . . . 30 / 61/void DisplayLed(void)Send7219(0 x01, DisBuf0);Send7219(0 x02, DisBuf1);Send7219(0 x03, DisBuf2);Send7219(0 x04, DisBuf3);/ 定时器 0 中断/void Timer0IntServe(void) interrupt 1int vol;EA = 0;TR0 = 0;TL0 = 0 xA

30、F;TH0 = 0 x3C;scan_counter+;if(up=1)if(scan_counter=5)scan_counter=0;if(i0)g_code=code_tabi-;SetDAC0(g_code);vol=g_code*0.02483;DisBuf2=Tabvol/10| 0 x80;DisBuf3=Tabvol%10;elseg_code=code_tabi; SetDAC0(g_code);vol=g_code*0.02483;DisBuf2=Tabvol/10| 0 x80;DisBuf3=Tabvol%10; TR0=1;EA=1;/ 定时器 1 中断/. . .

31、. 32 / 61char squareLevel = 0;void Timer1IntServe(void) interrupt 3EA=0;TR1 = 0;TL1 = 0 x18;TH1 = 0 xFC;TR1 = 1;if(squareLevel = 0)squareLevel = 1;DAC0L=0 x00;DAC0H=0 x00;else /(squareLevel = 1)squareLevel = 0;DAC0L=0 xFF;DAC0H=0 xFF;EA=1;/ ADC0 转换结束中断/void ADCIntServe() interrupt 15float vol=0;AD0I

32、NT = 0;EA = 0;measureVol = ADC0H 8;. . . . 33 / 61measureVol += ADC0L;vol= measureVol;vol = vol * 2.3597;measureVol = (int)vol;/DisBuf3 = (measureVol % 10);/DisBuf2 = (measureVol / 10) % 10;/DisBuf1 = (measureVol /100) % 10;/DisBuf0 = (measureVol /1000) | 0 x80;EA = 1;void OscInit()OSCXCN = 0 x67;/

33、允许外部晶体Delay(0 x100);while(OSCXCN & 0 x80) != 0 x80)/ 等待稳定Delay(10);Delay(0 x100); OSCICN = 0X88;/ 切换到外部晶体 / 端口初始化/ 注:7219 对应的端口需要配置成推挽方式void PortInit()P0MDOUT = 0X00;/ 漏极开路. . . . 34 / 61P1MDOUT = 0X70;/ 漏极开路P2MDOUT = 0X00;/ 漏极开路P3MDOUT = 0X00;/ 漏极开路,P31 推挽XBR2 = 0X40;/ 使能交叉开关, 弱上拉全局允许P74OUT = 0

34、 x3C;/ 初始化/void Initial() P0 = 0 xff;P1 = 0 xff;P2 = 0 xff;P3 = 0 xff;DisBuf0 = 0;DisBuf1 = 11;DisBuf2 = 4;DisBuf3 = 5;DisplayInterval = 0;/-DIN7219 = 1;LOAD7219 = 1;CLK7219 = 0;/ initial 7219Send7219(0 x09,0 x00);/ decode mode for all displaySend7219(0 x0A,0 x01);/ set brightness to halfSend7219(0

35、x0B,0 x03);/ display 0, 1, 2, 3. . . . 35 / 61Send7219(0 x0C,0 x01);/ display in normal statesSend7219(0 x0F,0 x00);/ leave test mode/-void DAC_Init() /DA 输出初始化DAC0H=0 x00; /DAC0 输出 0V(即初始电压为 0V) DAC0L=0 x00;DAC1H=0 x00; /DAC1 输出 0VDAC1L=0 x00;DAC0CN=0 x80; /开启并选择 DAC0、DAC1 的工作方式(输出更新在写 DACXH 时)DAC1

36、CN=0 x80;void ADC0Init (void)REF0CN = 0 x03; / enable temp sensor, on-chip VREF, and VREF output bufferAMX0CF = 0X00;AMX0SL = 0 x00; / select AIN00ADC0CF = (16000000/2500000) 3; / ADC conversion clock = 2.5MHzADC0CF |= 0 x00;/PGA gain = 1ADC0CN = 0 x84;EIE2 |= 0 x02;EA=1; / enable ADC interrupts/ 定时

37、器 3 初始化. . . . 36 / 61/ 定时器 3 用来定时启动 ADC0/sfr16 TMR3RL = 0 x92;/ Timer3 reload valuesfr16 TMR3 = 0 x94;/ Timer3 countervoid Timer3Init (void)TMR3RL = 0 x0300;/ 500Hz TMR3 = 0 xffff; / set to reload immediatelyEIE2 &= 0 x01; / disable Timer3 interruptsTMR3CN = 0 x04; / start Timer3,using system c

38、lockvoid Time0_and_Time1_Init()/*/ CKCON = 0 x00;/所有定时器时钟使用系统时钟的 12 分频TMOD = 0 x11; /定时器 1、2 皆设为 16 位TF0 = 0;TF1 = 0;void DC()int vol;if(g_workmode=WK_SET)return;i=50;g_code=code_tabi;SetDAC0(g_code);SetDAC1(0);vol=g_code*0.02483; . . . . 37 / 61DisBuf0=Tab12;DisBuf1=Tab13;DisBuf2=Tabvol/10| 0 x80;D

39、isBuf3=Tabvol%10;LED_PRESET = 1; LED_DC_MOD = 0; LED_TRI = 1;LED_AUTO_SCAN = 1;LED_SQU = 1;g_workmode=WK_DC;ET0=0;TR0=0; /close Timer0.ET1=0;TR1=0; /CLOSE TIMER1.TMR3CN|=0 x04; /OPEN timer3EIE2 |= 0 x02;P5=0 x01;P6=0 x00;void preset()DC();void square()if(g_workmode=WK_DC|g_workmode=WK_TRI)LED_PRESET

40、 = 1; LED_DC_MOD = 1; LED_TRI = 1;LED_AUTO_SCAN = 1;. . . . 38 / 61LED_SQU = 0;TMR3CN&=0 xFB;/close timer3. EIE2 &= 0 x02;TH1=0 xFC; /open timer1,delay 1ms,f=1kHz.TL1=0 x18;ET1=1;TR1=1;P5=0 x00;P6=0 x00;DAC1L=0 xFF; /DAC1:1.25VDAC1H=0 x07;DAC0L=0 x00; /DAC0:0VDAC0H=0 x00;g_workmode=WK_SQU;Di

41、sBuf0=Tab14;DisBuf1=Tab10;DisBuf2=Tab11;DisBuf3=Tab14;void triangel()if(g_workmode=WK_DC|g_workmode=WK_SQU)LED_PRESET = 1; LED_DC_MOD = 1; LED_TRI = 0;LED_AUTO_SCAN = 1;LED_SQU = 1;. . . . 39 / 61TMR3CN&=0 xFB;/close timer3. EIE2 &= 0 x02;TH1=0 xFC; /open timer1,delay 1ms,f=1kHz.TL1=0 x18;ET

42、1=1;TR1=1;P5=0 x00;P6=0 x01;DAC1L=0 xFF; /DAC1:1.25VDAC1H=0 x07;DAC0L=0 x00; /DAC0:0VDAC0H=0 x00;g_workmode=WK_TRI;DisBuf0=Tab14;DisBuf1=Tab10;DisBuf2=Tab11;DisBuf3=Tab14;void Set()if(g_workmode=WK_SQU|g_workmode=WK_TRI)return;TMR3CN&=0 xFB;/close timer3.EIE2 &= 0 x02;ET0=0;TR0=0; /close Tim

43、er0.DisBuf2=Tab0;DisBuf3=Tab0;. . . . 40 / 61counter=0;g_workmode=WK_SET;LED_PRESET=0;void scan_add()if(g_workmode=WK_DC|g_workmode=WK_SCANDOWN)g_workmode=WK_SCANUP;TL0 = 0 xAF; TH0 = 0 x3C;ET0=1; /open timer0 TR0=1;up=1; /设方向标志down=0;void scan_sub()if(g_workmode=WK_DC|g_workmode=WK_SCANUP)g_workmod

44、e=WK_SCANDOWN;TL0 = 0 xAF; TH0 = 0 x3C;ET0=1; /open timer0 TR0=1;up=0; /设方向标志down=1;. . . . 41 / 61void KeyBoard()if (!INCREASE)Delay(200);if (!INCREASE)/=if(g_workmode=WK_DC)if (i0)i-;elsei=0;g_code=code_tabi;SetDAC0(g_code);SetDAC1(0);vol=g_code*0.02483;DisBuf2=Tabvol/10| 0 x80;DisBuf3=Tabvol%10;

45、while(!DECREASE);Delay(200);if (!DC_MOD)Delay(200);if (!DC_MOD)/=DC();/=while(!DC_MOD);Delay(200);. . . . 43 / 61 if (!SCAN_A)Delay(200);if (!SCAN_A)/=scan_add();/=while(!SCAN_A);Delay(200); if (!SCAN_S)Delay(200);if (!SCAN_S)/=scan_sub();/=while(!SCAN_S);Delay(200); if (!ENTER)Delay(200);. . . . 44

46、 / 61if (!ENTER)/=if(g_workmode=WK_SCANUP|g_workmode=WK_SCANDOWN)ET0=0;TR0=0;g_workmode=WK_DC;if(counter=3&g_workmode=WK_SET)counter+;i=num;num=0;g_code=code_tabi;SetDAC0(g_code);vol=g_code*0.02483;DisBuf2=Tabvol/10| 0 x80;DisBuf3=Tabvol%10;TMR3CN|=0 x04; /OPEN timer3 EIE2 |= 0 x02;LED_PRESET=1;

47、g_workmode=WK_DC;/=while(!ENTER);Delay(200);. . . . 45 / 61 if (!SET)Delay(200);if (!SET)/=Set();/=while(!SET);Delay(200); if (!NUM_0)Delay(200);if (!NUM_0)/=if(counter=0&g_workmode=WK_SET)counter+;num+=0;DisBuf2=Tab0;DisBuf3=Tab0;if(counter=2&g_workmode=WK_SET). . . . 46 / 61counter+;num+=0

48、;DisBuf2=Tab0| 0 x80;DisBuf3=Tab0;/=while(!NUM_0);Delay(200); if (!NUM_1)Delay(200);if (!NUM_1)/=if(counter=0&g_workmode=WK_SET)counter+;num+=1;DisBuf2=Tab1;DisBuf3=Tab0;if(counter=2&g_workmode=WK_SET)counter+;num+=1;DisBuf2|= 0 x80;DisBuf3=Tab1;. . . . 47 / 61/=while(!NUM_1);Delay(200); if

49、(!NUM_2)Delay(200);if (!NUM_2)/=if(counter=0&g_workmode=WK_SET)counter+;num+=2;DisBuf2=Tab2;DisBuf3=Tab0;if(counter=2&g_workmode=WK_SET)counter+;num+=2;DisBuf2|= 0 x80;DisBuf3=Tab2;/=while(!NUM_2);Delay(200);. . . . 48 / 61 if (!NUM_3)Delay(200);if (!NUM_3)/=if(counter=0&g_workmode=WK_SE

50、T)counter+;num+=3;DisBuf2=Tab3;DisBuf3=Tab0;if(counter=2&g_workmode=WK_SET)counter+;num+=3;DisBuf2|= 0 x80;DisBuf3=Tab3;/=while(!NUM_3);Delay(200); if (!NUM_4)Delay(200);. . . . 49 / 61if (!NUM_4)/=if(counter=0&g_workmode=WK_SET)counter+;num+=4;DisBuf2=Tab4;DisBuf3=Tab0;if(counter=2&g_workmode=WK_SET)counter+;num+=4;DisBuf2|= 0 x80;DisBuf3=Tab4;/=while(!NUM_4);Delay(200); if (!NUM_5)Delay(200);if (!NUM_5)/=if(counter=0&g_workmode=WK_SET). . . . 50 / 61counter+;num+=5;DisBuf2=Tab5;DisBuf3=Tab0;if(counter=2&g_workmode=WK_

温馨提示

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

评论

0/150

提交评论