版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子设计大赛论文 简易数控直流稳压电源设计简易数控直流稳压电源设计 题目 名称 简易数控直流稳压电源设计 学院专业指导教师 设计要求: (1)输出电压:范围 09.9v,步进 0.1v,纹波不大于 10mv; (2)输出电流:500ma; (3)输出电压值由数码管显示; (4)由“”、 “”两键分别控制输出电压步进增减; (5)为实现上述几部件工作,自制一稳压直流电源,输出10v,5v。 提高要求: (1)输出电压可预置在 09.9v 之间的任意一个值; (2)用自动扫描代替人工按键,实现输出电压变化(步进 0.1v 不变) ; (3)扩展输出电压种类(比如三角波等) 。 比赛工作计划: (1
2、)查阅资料,设计硬件电路;(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。北京:电子工业出版 社2004 2王小明,卢志强。基于 stc89c52 数控直流电源设计。微计算机信息, 2009,12。 3何香玲
3、,邓刚。数控式步进可调稳压源j。现代电子技术,2007。 4刘兰波。数控直流电源的研究j。河北北方学院学报:自然科学版,2009。 项 目 组 姓 名学 号专业/班级所在学院项目中的分工 成 员 摘 要 数控直流稳压电源是电子技术常用的设备之一,广泛的应用于教学、科研等领 域。本课题以单片机为控制核心,进行算法控制和集成运放线性负反馈,并通过 7219 驱动四位显示器进行精确显示,设计并实现了一台高精度、低噪声的数控直流 电流源。 该稳压电源由供电电源、数控系统、模拟输出三个部分组成。供电电源采用 mc7815 和 mc7915 稳压器,通过桥式整流电路,为整机提供了稳定的直流供电; 控制系统
4、以单片机 c8051f020 为核心,其内部的 12 位 dac 转换器产生控制输出, 实现了输出电流的实时数控和精确检测。模拟部分利用集成运放继电器等模块实现 不同波形的输出;系统还设置了串口通讯、遥控功能。 经测试,输出电压范围达 09.9v,输出纹波及噪声小于 10mv,均达到题目指 标。 论文阐明了软硬件设计依据,给出了系统功能和性能测试结果,并附录了详细 的设计资料。 关键词: 恒压源 集成运放 7219 驱动器 单片机 实时数控 目 录 第 1 章 方案论证与原理设计.1 1.1模拟输出方案.1 1.2供电电源方案.1 1.3控制系统方案.2 1.4整机方案框图.2 第 2 章电路
5、设计与参数论证.3 2.1供电电源(15v).3 2.25v 供电电源.5 2.3数控电路.5 2.4模拟输出电路及 a/d 校准.7 2.5驱动数码管显示电路.10 第 3 章系统功能与软件设计.11 3.1系统功能分析.11 3.2软件设计结构.12 第 4 章功能及性能测试.16 4.1测试条件.16 4.2整机调试.16 4.3系统性能测试.16 4.4性能参数测试.17 第 5 章设计总结及技术展望.21 参考资料.23 附录.23 附录一 测试仪器清单.23 附录二 原理电路图.23 附录三 元器件清单.24 附录四 单片机程序.25 数控直流稳压电源是输出为稳定直流电压、并可用数
6、控方式调节和稳定输出电压的 电源设备,在对工作电压稳定度、纹波电压大小等有较高要求的领域具有广泛的应用, 如:电镀、精密加工、激光器等。 为此我们选择了简易数控直流稳压电源设计作为此次竞赛的课题。 第 1 章 方案论证与原理设计 1.1 模拟输出方案 模拟输出部分是数控直流稳压电源的重要组成部分,是决定各项设计指标的关键性 因素。 1.1.1 方案选择 模拟部分,通过给功放供电,功放构成反相器、反相相加器、反相发大器,积 15 分器分别实现反相、反相相加、放大、积分等功能,结合继电器的控制,分别输出方波、 三角波和直流,并反馈给单片机,用 a/d 采样并校准。同时,利用 op547 输出稳定的
7、 500ma 直流电流。 1.1.2 参数优化设计 由于本题要求的输出电压精度高,纹波小。因此我们必须考虑保证这些质量参数的 优化方案。 纹波与噪声控制纹波与噪声控制 最大纹波电压是在设定的直流电压的情况下,使电压的纹波(包过噪声)的绝对值大小, 通常以峰峰值或有效值表示。所以在设计时充分考虑这些因素,在电路中必要部分加 入多种降噪滤波措施。 安全保护功能安全保护功能 安全保护主要用于输出电流较大而负载阻值较小时。因此在设计电路时考虑了系统 的过热、过流、过压和反压保护。 1.2 供电电源方案 供电电源一般有开关电源、线性电源两种方案。 开关电源开关电源 这种电源主要提供可靠稳定的电压类似开关
8、式恒流源,功率损耗小,效率高,比较 经济,但电压波纹大,难以滤除,会对后续电路造成影响。 线性电源线性电源 这种电源也提供可靠稳定的电压,结构简单,纹波电压小(10mv 以下),易滤除, 抗电磁干扰性能和电源纯净性好。 1.3 控制系统方案 控制系统功能接收取样信号,进行运算处理,并发出控制信号控制负载电流,而且 有相应显示和写入控制字等功能。 常用的实现方案有硬件逻辑电路、单片机软件编程和 cpld 硬件逻辑编程。硬件逻 辑电路结构简单,实现方便,但功能扩展性不强;单片机系统通过自身时钟编程产生逻 辑信号序列,可键盘预置信号序列状态及数码显示,使用灵活方便,可通过软件升级达 到系统升级,开发
9、容易,性价比高;cpld 电路也可实现以上功能,且处理速度更快,但 价格偏贵,开发难度大,多用于高速实时系统。 所以选用单片机作为控制系统的的核心接收取样信号对其处理并发出控制信号控制 负载电流。其他外围电路还有 led 显示、输入键盘、时钟信号。 1.4 整机方案框图 由以上分析可得出整机电路的基本结构方案框图如图 11 所示。 2 22 20 0v v交交流流 o ou ut tp pu ut t l le ed d显显示示 复复位位 键键盘盘 单单片片机机 d d/ /a a 基基准准 a a/ /d d 变变压压器器桥桥式式整整流流 功功放放电电路路 反反馈馈 7 78 81 15 5
10、稳稳压压 7 78 80 05 5稳稳压压 + +5 5v v电电压压 + +1 15 5v v电电压压 数数控控系系统统模模拟拟功功放放系系统统 电电源源供供电电系系统统 图 1-1 数控直流稳压电源框图 第 2 章 电路设计与参数论证 通过前一章的分析,欲获得一个高性能的数控直流电流源 ,主要是设计好调整器电 路,放大电路,反馈控制电路,电源电路。 本章详细的介绍了各部分功能电路的设 计思想和原理。 2.1 供电电源(15v) 整机供电电源原理电路如图 22 所示。 线性稳压电源电路主要由桥式整流电路、滤波电路、线性稳压器、保护电路和工作 指示电路(led 灯)组成。 经降压变压器变换后的
11、15v 交流电压由 p2 端口输入,经过整流、滤波和稳压后, 由 p1 端口出端15v 直流电压,为信号处理电路供电。 图 2-1 线性15v 稳压电源电路原理图 稳压器选择稳压器选择 根据所选运算放大器 op07 的特性(运算放大器的选择依据将在信号处理电路元件选 择中给出) ,需要提供直流电电压。根据信号处理电路原理图和系统方案框图,计 15 算得信号处理电路所需的电流约为 1a(后面将给出详细计算过程) 。所以稳压器选择 mc7815 和 mc7915。表 2-1 列出了 mc7815 和 mc7915 的部分参数。 表 2-1 稳压器部分参数 测试条件 型号 输出/v (典型值) 输出
12、电流/a输入范围/v最小压差/v ui(v)io(ma) mc7815ac151.01.217.9302231000 mc7915ac-151.01.2-17.9-302-23500 变压器选择变压器选择 因为运放供电需15v 电压,而稳压器输入输出电压差要求不小于 3v,所以此处整 流电路电压输入处取 18v。 若设桥式整流电路输入电压为 u1,输出电压为 u2,则在一般情况下(负载, 0 滤波电容) , u2 估算值为: (2-1) 0 2 1.21 故当 u1=15v 时,整流电路输入为。所以选取 220v 输入15v 电压输出的 2= 18 变压器。 整流二极管选择整流二极管选择 桥式
13、整流电路输入15 电压,即输入电压 u=30v。二极管击穿电压 。 2 = 42.4 对于桥式整流电路,流过每个二极管的平均电流是负载电流的一半,即 (2-2) = 0.6 2 式中(18v)为整流电路输入电压,为其负载。 2= 36 线性稳压电源的负载主要由信号处理系统中的运放构成,运放 op07 工作电流小于 10ma,系统中共 5 个运放,故整流电路输出电流 i0=26ma(考虑其他负载估算输出最大 电流) 。稳压电路输出电压 u0=30v(15v) ,故负载估算值为 rl=1.2k。 0 故流过二极管电流为 18ma。 所以选择 1n4001 二极管,其反相击穿电压为 50v,额定工作
14、电流为 1a。 保护二极管的选择(保护二极管的选择(d1、d9) 当输入端意外短路时,保护二极管能给输出电容、提供一个放电通路,防止稳压 5c6 器调节管击穿。 此处选取 1n4001 型二极管,其最高反相电压 urm=50v,远大于稳压器输入、输出端电 压差 3v;且其额定电流 i=1a,满足放电要求。 滤波电容选择(滤波电容选择(c1、c2)选择)选择 滤波电容的选取应满足 td=rlc1=(35)t/2 (2-3) td 为放电时常数,t 为交流电周期。由前面计算得 rl= =1.2k。故 0 c1=c21.67nf,此处取 c1=c2=330uf。 性能改善电容选择性能改善电容选择 c
15、3,c4用于改善高频波纹,当稳压器距离 c1,c2越远时,c3,c4越大。一般取 0.11uf,此处选取 c3=c4=0.1uf。 c5,c6用于减小由负载电流瞬时变化引起的高频干扰,一般取 c5=c6=0.1uf。 当稳压器输出离负载较远时,器输出端接电容用以改善输出波纹特性并减小低频干 扰。一般取 c7=c8=100uf。 发光二极管(发光二极管(d2、d8)及限流电阻()及限流电阻(r1、r2)选择)选择 电路中发光二极管 d2、d8用来显示电源是否正常工作,其工作电流小于 10ma。故 此处选取限流电阻 r1=r2=5.1k。 2.2 5v 供电电源 供电电源原理电路如图 22 所示。
16、 提供+5v 直流电电压,供给单片机及键盘、显示器等其它器件正常工作。其器件参 数等同于 15v 供电电源,在此不加累述。 图 2-2 线性 5v 稳压电源电路原理图 2.3 数控电路 数控直流电流源的控制电路采用单片机最小系统对电路各部分进行控制。最小系统 由 mcu、采样输入、控制输出、键盘、显示电路组成。 2.3.1 单片机最小系统 单片机最小系统电路如图 2-3 所示。 图 2-3 单片机最小系统电路 mcu 选型选型 mcu 选用 silicon laboratories 公司的 c8051f020 单片机,该系列单片机片内含 cip- 51 的 cpu 内核,它的指令系统与 mcs
17、-51 完全兼容。其中 c80511020 单片机具有控制系 统所需的模拟和数字外设,包括看门狗、adc、dac、电压比较器,vdd 监视器和温度 传感器等,并具有多种总线接口。与以前的 5l 系列单片机相比,c8051f020 增添了许多 功能,其可靠性和速度也有了很大提高。 时钟设计时钟设计 数控直流稳压电源要求微处理器采样周期设置为 0.5s,并且实测值和设定值间隔显示 变换周期为 2s 左右,采用 12mhz 晶振,可满足系统要求。 键盘与显示键盘与显示 数控直流稳压电源具有键盘输入与显示功能。用自治键盘对电压进行设定,采用四 位数码管显示实测值和设定值。采用 7219 芯片电路作为显
18、示控制和驱动端,其优点是显 示位数多,节约 i/o 端口,使用方便,价格合理。 d/a 转换电路转换电路 为了满足取样精度需要,选择电压为 2.5v 的基准电压,通过其内部的 12 位 d/a 变 换器,使其步长精度达到 2.5v/212 *410.1v,通过软件编程,从 dac0、dac1 端口输 出相应信号波,传到模拟部分完成波形的转换;d/a 是先写入高 8 位,再写入低 4 位。 2.4 模拟输出电路及 a/d 校准 方波实现原理方波实现原理 控制单片机内的 d/a 转换,使其 dac0 口输出方波(此时的方波为单极性,电压幅 值为 2.5v),同时,dac1 输出直流(控制其电压为
19、1.25v),直流电压经过反相器,变 成-1.25v,然后,与方波进行反相相加,得到1.25v 方波。原理图如图 25 所示。 图 2-4-1 叠加方波实现图 反相放大调节实现原理反相放大调节实现原理 根据要求需 09.9v 电压,则经过功放 op07aj 的反相放大器,与前一个反相器想抵, 输出正向电压,通过调动滑动变阻器 r32 确定放大倍数,倍数为得到 10v 的方波。若仅 直流,dac1 无输入,直流电压直接由 dac0 进入,直接反相即可,原理图如图 25 所 示。 图 2-4-2 op07aj 功放的反相放大器 三角波实现原理三角波实现原理 需要三角波输出时,控制继电器 k1,使其
20、开关合下,三角波经过积分电路,变成三 角波,输出。如不需三角波,k1 上拨,将积分器短路,直接流过。 (图 6) 图 2-4-3 继电器与积分器 通过 op547 功率放大器,在电压不变的情况下,增大电流,达到要求的 500ma,s23 为拨键开关,按下将会产生输出。下方的 r43,r45 电阻起到 3:1 的分压作 用 图 2-4-4 op547 电流调整图 a/d 校准原理校准原理 在任何输出情况下,需要输出电压对单片机进行反馈,通过反馈控制 d/a 转换的精 度。当直流输出时,控制继电器 k2,将二极管短路,而在方波、三角波输出时,使继电 器开关合上,双极性的信号(方波或三角波)经过二极
21、管变成单极性(0v-2.5v)反馈给 单片机 ain0.0 端口,经过单片机内部 12 位的 a /d 采样,再与 d/a 输入的数字量比较, 进行校正,保证其准确性。 图 2-4-5 反馈电路图 2.5 驱动数码管显示电路 该部分由 7219 显示驱动和四位 led 显示器组成,max7219 是一种集成化的串行输 入/输出共阴极显示驱动器,它连接单片机驱动 4 位 led 显示器的 bcd 码7 段数字显 示,电路图如下: 图 2-5 max7219 引脚连接图 与单片机相连部分,将 din,load,clk 端分别于 i/o 端 p1.4,p1.6,p1.7 相连,串行 数据在 din
22、输入 16 位数据包,通过时钟的上升沿数据均移入到内部 16 位移位寄存器, load 的上升沿被载入数据寄存器或控制寄存器。16 位串行数据 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,它设定段电流为
23、40ma。 第 3 章 系统功能与软件设计 3.1 系统功能分析 1)显示功能)显示功能 四位数码管分别各两位显示电压的大小值(09.9v)和频率值; 2)键盘示意图)键盘示意图 1 12 23 3 4 45 56 6 7 78 89 9 0 0. . 确定确定 预置预置自扫自扫直流直流三角波三角波方波方波 速度速度自动自动+ +自动自动- -手动手动+ +手动手动- - 图 3-1 键盘示意图 复位按键 22 个,0-9 和“.”作为数字输入键,并有“预置”“自扫”“直流”“三 角波”“方波”“速度”“自动+”“自动-”“手动+”“手动-”“确定”作为功能控制 键具体介绍如下; 预置:在工作
24、状态前预先设置一个电压。 自扫:按下该键,输入数值,再按“确定”键,可直接由预设值自动扫描到该数值。 直流:按下,示波器显示直流电压输出。 三角波:按下,示波器显示三角波形电压输出。 方波:按下,示波器显示方波形电压输出。 速度:控制电压自动变化的速度,分快慢两档。 自动+/-:在自扫状态下,使电压自动以 0.1v 步进增加或减小。 手动+/-:手动调节时,每按一次使电压以 0.1v 步进增加或减小。 确定:输入数字后,按此键确认。 拨键开关 1 个,为输出“output”,当键拨上时输出信号,拨回时停止输出。 3)控制:)控制: a)接收采样电压并与设定值比较产生控制信号输出 b)可由键盘设
25、置设定值 3.2 软件设计结构 3.2.1 控制及显示程序设计思想 程序由主程序、定时器中断程序、键盘扫描程序四部分组成。各部分功能及流程图 如下。 主程序主程序 主程序的主要工作是进行初始化,扫描键盘,并响应键盘,设定电流值。 开 始 初始化 开中断 键盘扫描子程序 图 3-1 主程序流程图 键盘扫描子程序键盘扫描子程序 该系统需要 22 个按键即可实现所有功能。当单片机响应键盘后,则得到一个返回值。 软件设计采用了状态转换的编程方法,有工作状态和编辑状态两种状态。在工作状态只 响应确认键,并转入编辑状态,不响应其它任何键;在编辑状态设定输出电流值,确认 和取消键退出编辑状态,转入工作状态。
26、这样不仅降低了编程的难度,也提高了程序的 稳定性。 其流程图如下: 读读取取键键值值 编编辑辑状状态态工工作作状状态态 预预置置自自扫扫s s+ +/ /- -+ +/ /- - 三三角角方方波波 数数字字键键其其他他键键 确确定定输输入入 确确定定 确确定定 直直流流 开开始始 有有键键 动动? 延延时时 有有键键 动动? y ye es s n no o y ye es s n no o 返返回回显显示示 图 3-2 键盘扫描子程序流程图 定时器中断程序定时器中断程序 电路中 a/d 采样周期为 130ms,当定时器 t0 中断后进行一次采样,单片机处理后, 输出 d/a 进行调节,并且显
27、示。定时器中断程序流程如图 3-3 所示。 开 始 n n 1 启动a/d转换 定时器中断服务程序 返回 图 3-3 定时器中断程序流程 adc 反馈调节反馈调节 需要得到精确的电压值,模拟功放电路部分终端会输入一个反馈,单片机的 adc 会 进行采样,读采样数据,并与 dac 设定值进行对比,若误差 err=0.05,进行 pid 线性校正,控制调整电压和传送显示。 设电压变化为,当前电压为 vn,利用 err*coff 进行修正。 adc 采样 d da ac c对对比比 pid线性校 正 e er rr r = =0 0. .0 05 5 e er rr r 8) dac0l = low
28、; dac0h = high; void setdac1(int dat) uchar low; uchar high; low = dat high = (dat 8) dac1l = low; dac1h = high; / / 7219 操作程序 / void send7219(uchar add, uchar dat) uchar ads, j; load7219 = 0; clk7219 = 0; ads = add; for(j = 0; j 8; +j)/ send address din7219 = ads ads = 1; clk7219 = 0; clk7219 = 1;
29、ads = dat; for(j = 0; j 8; +j)/ send data din7219 = ads ads = 1; clk7219 = 0; clk7219 = 1; clk7219 = 0; load7219 = 1; / / 4 位数码管显示 / void displayled(void) send7219(0 x01, disbuf0); send7219(0 x02, disbuf1); send7219(0 x03, disbuf2); send7219(0 x04, disbuf3); / / 定时器 0 中断 / void timer0intserve(void)
30、interrupt 1 int vol; ea = 0; tr0 = 0; tl0 = 0 xaf; 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; else g_code=code_tabi; setdac0(g_code); vol=g_code*0.02483; disbuf2=t
31、abvol/10| 0 x80; disbuf3=tabvol%10; tr0=1; ea=1; / / 定时器 1 中断 / char squarelevel = 0; void timer1intserve(void) interrupt 3 ea=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 x
32、ff; ea=1; / / adc0 转换结束中断 / void adcintserve() interrupt 15 float vol=0; ad0int = 0; ea = 0; measurevol = adc0h 8; measurevol += adc0l; vol= measurevol; vol = vol * 2.3597; measurevol = (int)vol; /disbuf3 = (measurevol % 10); /disbuf2 = (measurevol / 10) % 10; /disbuf1 = (measurevol /100) % 10; /dis
33、buf0 = (measurevol /1000) | 0 x80; ea = 1; void oscinit() oscxcn = 0 x67;/ 允许外部晶体 delay(0 x100); while(oscxcn delay(0 x100); oscicn = 0x88;/ 切换到外部晶体 / 端口初始化 / 注:7219 对应的端口需要配置成推挽方式 void portinit() p0mdout = 0x00;/ 漏极开路 p1mdout = 0x70;/ 漏极开路 p2mdout = 0x00;/ 漏极开路 p3mdout = 0x00;/ 漏极开路,p31 推挽 xbr2 = 0
34、x40;/ 使能交叉开关, 弱上拉全局允许 p74out = 0 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 7219 send7219(0 x09,0 x00);/ decode mode for all display send7
35、219(0 x0a,0 x01);/ set brightness to half send7219(0 x0b,0 x03);/ display 0, 1, 2, 3 send7219(0 x0c,0 x01);/ display in normal states send7219(0 x0f,0 x00);/ leave test mode /- void dac_init() /da 输出初始化 dac0h=0 x00; /dac0 输出 0v(即初始电压为 0v) dac0l=0 x00; dac1h=0 x00; /dac1 输出 0v dac1l=0 x00; dac0cn=0 x
36、80; /开启并选择 dac0、dac1 的工作方式(输出更新 在写 dacxh 时) dac1cn=0 x80; void adc0init (void) ref0cn = 0 x03; / enable temp sensor, on-chip vref, and vref output buffer amx0cf = 0x00; amx0sl = 0 x00; / select ain00 adc0cf = (16000000/2500000) 3; / adc conversion clock = 2.5mhz adc0cf |= 0 x00;/pga gain = 1 adc0cn
37、= 0 x84; eie2 |= 0 x02; ea=1; / enable adc interrupts / / 定时器 3 初始化 / / 定时器 3 用来定时启动 adc0 / sfr16 tmr3rl = 0 x92;/ timer3 reload value sfr16 tmr3 = 0 x94;/ timer3 counter void timer3init (void) tmr3rl = 0 x0300;/ 500hz tmr3 = 0 xffff; / set to reload immediately eie2 / disable timer3 interrupts tmr3
38、cn = 0 x04; / start timer3,using system clock void 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; disbuf0=tab12;
39、disbuf1=tab13; disbuf2=tabvol/10| 0 x80; disbuf3=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 timer3 eie2 |= 0 x02; p5=0 x01; p6=0 x00; void preset() dc(); void
40、 square() if(g_workmode=wk_dc|g_workmode=wk_tri) led_preset = 1; led_dc_mod = 1; led_tri = 1; led_auto_scan = 1; led_squ = 0; tmr3cn/close timer3. eie2 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.25v dac1h=0 x07; dac0l=0 x00; /dac0:0v d
41、ac0h=0 x00; g_workmode=wk_squ; disbuf0=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; tmr3cn/close timer3. eie2 th1=0 xfc; /open timer1,delay 1ms,f=1khz. tl1=0 x18
42、; et1=1; tr1=1; p5=0 x00; p6=0 x01; dac1l=0 xff; /dac1:1.25v dac1h=0 x07; dac0l=0 x00; /dac0:0v dac0h=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/close timer3. eie2 et0=0; tr0=0; /close timer0.
43、 disbuf2=tab0; disbuf3=tab0; counter=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_workmode=wk
44、_scandown; tl0 = 0 xaf; th0 = 0 x3c; et0=1; /open timer0 tr0=1; up=0; /设方向标志 down=1; void keyboard() if (!increase) delay(200); if (!increase) /= if(g_workmode=wk_dc) if (i0) i-; else i=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); 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);
46、 if (!enter) /= if(g_workmode=wk_scanup|g_workmode=wk_scandown) et0=0; tr0=0; g_workmode=wk_dc; if(counter=3 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; g_workmode=wk_dc; /=
47、 while(!enter); delay(200); if (!set) delay(200); if (!set) /= set(); /= while(!set); delay(200); if (!num_0) delay(200); if (!num_0) /= if(counter=0 num+=0; disbuf2=tab0; disbuf3=tab0; if(counter=2 num+=0; disbuf2=tab0| 0 x80; disbuf3=tab0; /= while(!num_0); delay(200); if (!num_1) delay(200); if (
48、!num_1) /= if(counter=0 num+=1; disbuf2=tab1; disbuf3=tab0; if(counter=2 num+=1; disbuf2|= 0 x80; disbuf3=tab1; /= while(!num_1); delay(200); if (!num_2) delay(200); if (!num_2) /= if(counter=0 num+=2; disbuf2=tab2; disbuf3=tab0; if(counter=2 num+=2; disbuf2|= 0 x80; disbuf3=tab2; /= while(!num_2); delay(200); if (!num_3) delay(200); if (!num_3) /= if(counter=0 num+=3; disbuf2=tab3; disbuf3=tab0; if(counter=2 num+=3; disbuf2|= 0 x80; disbuf3=tab3; /= while(!num_3); delay(200); if (!num_4) delay(200); if (!num_4) /= if(counter=0 num
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淀粉产品在汽车工业行业的应用研究考核试卷
- 油炸食品的食品包装与市场销售考核试卷
- 水资源保护与可持续利用解决全球水危机考核试卷
- 电子靶技术在海水淡化处理中的应用考核试卷
- DB11T 889.4-2013 文物建筑修缮工程操作规程 第4部分:彩画作
- 瓦当陶艺课件教学课件
- 暖流课件图片教学课件
- s字母课件教学课件
- 自媒体写作技巧培训
- 淮阴工学院《精密机械基础》2021-2022学年第一学期期末试卷
- 小学六年级数学上册口算题300道(全)
- 《干粉灭火器检查卡》
- 校园监控值班记录表(共2页)
- 试桩施工方案 (完整版)
- 走中国工业化道路的思想及成就
- ESTIC-AU40使用说明书(中文100版)(共138页)
- 河北省2012土建定额说明及计算规则(含定额总说明)解读
- Prolog语言(耐心看完-你就入门了)
- 保霸线外加电流深井阳极地床阴极保护工程施工方案
- 蓝色商务大气感恩同行集团公司20周年庆典PPT模板
- 恒温箱PLC控制系统毕业设计
评论
0/150
提交评论