基于proteus的数控恒流源的仿真研究(终稿_第1页
基于proteus的数控恒流源的仿真研究(终稿_第2页
基于proteus的数控恒流源的仿真研究(终稿_第3页
基于proteus的数控恒流源的仿真研究(终稿_第4页
基于proteus的数控恒流源的仿真研究(终稿_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、摘 要随着电子技术的发展、数字电路应用领域的扩展,人们对数控恒定电流器件的需求越来越高。应社会发展的需求,对基于单片机控制的“数控恒流电流源”进行研究论证,并运用Proteus软件进行仿真。设计由两大模块组成:单片机应用系统模块; 大功率压控电流源模块。设计采用AT89C52单片机应用系统,由TLC2543对精密电阻康铜丝的电压进行监控,由LTC1456直接控制输出电压,单片机、A/D、D/A三者组成控制系统,形成闭环回路,保持恒流。电流源采用44矩阵键盘进行设定,并采用LCD显示界面。运用Proteus软件仿真,实现输出电流范围为200mA2000mA,满足步进10mA,误差的绝对值 1%

2、+10mA,可以同时显示电流的给定值、仿真测试值、负载电压值、负载电阻值。关键词:电流源,稳压电源,AT89C52,LCD显示,ProteusABSTRACTThe requiements of numerical controlling constant current devices is increasing as development of electronic technology and expanding of digital circuit applicational field. As to satisfy society development, do a study b

3、ased on numerical controlling constant current power of SCM controlling and apply Proteus to simulating software. This design includes two module: SCM application system module; superpower voltage controls current power module. This design adopts AT89C52 SCM application system, monitoried by precisi

4、on resistance constantan wire voltage corresponding of TLC2543 and controlled and putout voltage directly by LTC1456, which three aspects consist of controlling system and being closed loop circuit to keep constant cuurent. Current souce adopts 44 matrix keyboard to set and LCD display interface. Ap

5、plying Proteus simulation software to realizing the range of output current as 200mA2000mA satisfies stepping 10mA, the errors absolute value 1% +10mA and displaying set-value, simulation values, load voltage value and load load resistance value of current simultaneously.Keywords: current source ,ma

6、nostat ,AT89C52,LCD display,Proteus目 录摘 要IABSTRACTII第1章 总体方案设计11.1 设计任务11.2 设计思路11.3 总体方案的比较与论证1第2章 硬件模块的设计32.1 稳压电源电路的设计32.2 恒流源电路的设计42.3 负载电压、电流电路的设计52.4 A/D、D/A转换器模块62.4.1 D/A转换器62.4.2 A.D转换器72.4.3 D/A、A/D连接电路72.5 AT89C52控制模块82.5.1 AT89C52的引脚及其功能介绍82.5.2 AT89C52连接电路92.6 键盘的硬件设计102.7 显示的硬件设计11第3章

7、软件设计123.1 程序说明123.2 程序流程图13第4章 系统仿真及数据分析144.1 系统仿真方法144.2 系统仿真数据154.2.1 输出电流范围仿真154.2.2 步进调整仿真154.2.3 输出电流仿真154.3 仿真结果与误差分析16结 论18参考文献19附 录20致 谢35第1章 总体方案设计1.1 设计任务输入交流电压200240V,50Hz;输出直流电压10V。1、输出电流范围:200mA2000mA;2、可设置并显示输出电流给定值,要求输出电流与给定值偏差的绝对值给定值的1+10 mA;3、具有“+”、“-”步进调整功能,步进10mA;4、改变负载电阻,输出电压在10V

8、以内变化时,要求输出电流变化的绝对值输出电流值的1+10 mA;5、利用proteus软件对整体电路进行仿真验证。1.2 设计思路采用改进型的单输出端单向电流源电路来产生恒定电流。该方法是用精密电阻取样得到反馈电压,将反馈电压与高精度的参考电压比较得到误差电压,此误差电压经放大后输出控制调整管的导通程度,使预设电流值和实测电流值的逐步逼近,直至相等,从而达到数控的目的。从题目的要求来分析,该题目最大的难点在于大电流输出和高精度控制,所以在具体的方案确定中,大电流、功耗,以及精度、误差等都是我们所必须要考虑和克服的。1.3 总体方案的设计根据题目要求以及设计思路,我们要先确定总体的设计方案,参阅

9、大量资料后,我们确定了设计中必有的各个模块,其中有单片机,A/D转换。D/A转换,V/I转换等,最终确定的系统框图如图1.1所示 : 图1.1 系统框图此方案采用保持电阻恒定而改变输入电压的方法来改变电流的大小。利用高精度D/A转换器在单片机程序控制下提供可变的高精度的基准电压,该基准电压经过V/I转换电路得到电流,再通过A/D转换器将输出电流反馈至单片机进行比较,调整D/A的输入电压,从而达到数控的目的。该方案的难点在于稳定恒流源的设计和高精度电流检测电路的设计。特点是可精确的控制电流的步进量,负载变化对电流输出的影响较小。 第2章 硬件模块的设计硬件的设计关系着系统的简单和稳定与否,在此,

10、运用专业的知识进行硬件设计,逐步完成系统的骨架。 2.1 稳压电源电路的设计本系统需要多个电源,单片机使用+稳压电源,A/D转换器,D/A转换器,运放等需要稳压电源。电源虽简单,但在高精度的系统中,稳压电源有着非常重要的作用。在进行研究后得出以下方案。如图2.1所示,本电源先通过变压器电压变换隔离,桥式全波整流,电容滤波,再通过三端固定输出集成稳压器产生稳定电压+15V,-15V,+5V,稳压器内部电路由恒流源,基准电压,取样电阻,比较放大,调整管,保护电路,温度补偿电路等组成。为了改善纹波特性,在输入端加接电容。为了改善负载的瞬态响应,在输出端加接电容。采用三端集成稳压器7805、7815、

11、7915分别得到+5V和15V的稳定电压,再外对OP07加大功率场效应管构成扩流电路,可以提供2000mA的上限电流。利用该方法实现的电源电路简单,工作稳定可靠。稳压电源在实物上设计上是必不可少的部分,但在运用Proteus仿真时为了简化电路,此模块用软件自带的励磁电压代替。图2.1 稳压电源电路2.2 恒流源电路的设计 方案一:采用集成稳压器运放构成的线性恒流源。如图2.2所示,D/A输出电压作为恒流源的参考电压,运算放大器U1与晶体管Q1,Q2组成的达林顿电路构成电压跟随器。利用晶体管平坦的输出特性即可得到恒流输出。由于跟随器是一种深度的电压负担亏电路,因此电流源具有较好的稳定性。本电流源

12、的稳定度优于0.5%。为了提高稳定度,Rs采用大线径康铜丝制作,康铜丝温度系数很小,大线径可以使其温度影响减至最小。U1采用精密运算放大器OP37A,该放大器有调节零点漂移的功能,Q1采用9014大倍数大约为400.Q2采用低频功率管3DD15,他的放大倍数为1020倍,漏电流很小。Q1的加入是为了增加复合管的放大倍数。图2.2 稳压器运放线性恒流源原理图方案二:采用运放和场效应管的压控恒流源。电路原理图如图2.3所示。该恒流源电路由运算放大器、大功率场效应管Q1、采样电阻R2、负载电阻RL等组成硬件设计。采用场效应管,更易于实现电压线性控制电流,既能满足输出电流最大达到2A的要求,电路简洁也

13、能较好地实现电压近似线性地控制电流。此电路中,为了满足题目的设计要求,调整管采用大功率场效应管IRF640。当场效应管工作于饱和区时,漏电流Id近似为电压Ugs控制的电流。即当Ud为常数时,满足:Id=f(Ugs),只要Ugs不变,Id就不变。在此电路中,R2为取样电阻,采用康铜丝绕制(阻值随温度的变化较小)阻值为1。运放OP07作为电压跟随器,Uin=Up=Un,场效应管Id=Is(栅极电流相对很小,可忽略不计) 所以Iout=Is= Un/R2= Uin/R2。正因为Iout=Uin/R2,电路输入电压UI控制电流Iout,即Iout不随RL的变化而变化,从而实现压控恒流。图2.3 压控恒

14、流源原理图综上所述,进行综合比较,方案二电路较简单,稳定性较高,故采用方案二,使用高精度运放和大功率场效应管等构成一个恒流源电路。2.3 负载电压、电流电路的设计 根据题目要求,设计了如图2.4所示的电路图。电路综合各方面的考虑因素在里面,由于TLC2543所测电压值在5V内,而负载一端接15V电压源另一端接功率管,因此采用差分增益电路采样负载电压,当Rb/Rc=Rd/Ra时,OP07输出电压ADin=Rb/Rc(Va-Vb),硬件设置Rb/Rc=1/4,软件还原负载电压,保证测量精度。而采样精密电阻R1为1,通过采样R1两端电压值换算成电流值即可得到输出电流。图2.4 负载电流、电压测量电路

15、2.4 D/A、A/D转换器模块D/A、A/D模块是单片机与外部数据连接的通道,因此这两个模块的选择与使用应当合理。2.4.1 D/A转换器本设计中应采用DAC模块提供高精度的基准电压,即通过CPU发出的二进制转换为的模拟电压,送给误差放大器,实现步进要求。根据题目扩展功能要求输出,以1mA为步进,需要的级数为: (2.1),故应采用12位D/A转换器为DA转换芯片,供选择的很多,在此选用proteus元件库中的LTC1456芯片。2.4.2 A/D转换器A/D模块的是反馈的核心,我们采用Proteus元件库中的TLC2543芯片实现。TLC2543是一种低功耗、低电压的12位串行开关电容型A

16、D转换器。它使用逐次逼近技术完成A/D转换过程。最大非线性误差小于1LSB,转换时间9s。它具有三个控制器输入端,采用简单的3线SPI串行接口可方便与微机进行连接,是12位数据采集系统的最佳选择器件之一。2.4.3 D/A、A/D连接电路D/A 、A/D连接电路如下图2.5所示。图2.5 D/A 、A/D连接电路2.5 AT89C52控制模块在此设计中,单片机最小系统是数控的核心,可以满足设计要求的控制器核心单片机有很多种,比如AT89S52,AT89C52,Atmgae16,PIC16F877A等。仔细的研究论证后设计选择AT89C52单片机。2.5.1 AT89C52主要功能的简单介绍AT

17、89C52为8位通用微处理器,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义。AT89C52的主要功能特性如下:1、兼容MCS51指令系统 2、8k可反复擦写(大

18、于1000次)Flash ROM; 3、32个双向I/O口; 4、256x8bit内部RAM; 5、3个16位可编程定时/计数器中断; 6、时钟频率0-24MHz; 7、2个串行中断,可编程UART串行通道; 8、2个外部中断源,共8个中断源; 9、2个读写中断口线,3级加密位; 10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; 11、有PDIP、PQFP、TQFP及PLCC几种封装形式,以适应不同产品的需求。2.5.2 AT89C52连接电路AT89C52与各个模块构成控制器的电路连接图如下图2.7所示。.P0口和P3.0P3.2是LCD接口; P1.0P1.3是A/D转换器的接口;P3

19、.3P3.5是D/A转换器的接口;P2口为键盘接口。电路连接图如图2.6所示,图中有连接晶振,这是为了方便扩展做实物,题目只要求用Proteus仿真,由于系统自带晶振,所以仿真电路图中可以不画晶振。图2.6 AT89C52电路连接图2.6 键盘硬件的设计方案一:采用独立式按键电路,每个按键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。缺点为当按键较多时占用单片机的I/O口数目较多。方案二:采用标准44键盘,此类键盘采用矩阵式行列扫描方式,优点是当按键较多时可降低占用单片机的I/O口数目,而且可以做到直接输入电流值而不必步进。题目要求可进行电流给定值的设

20、置和步进调整,需要的按键比较多。综合考虑两种方案及题目要求,采用方案二,使用标准的4x4键盘,可以实现09数字输入、“+”、“-”、“OK”、“SET”、“DEL”、“RESET/ON”这些功能按键。其电路图如图2.7所示 图2.7 键盘电路2.7 显示硬件的设计方案一:使用LED数码管显示。数码管采用BCD编码显示数字,对外界环境要求低,易于维护。但根据题目要求,如果需要同时显示给定值和测量值,以及其他输出特性值,需显示的内容较多,要使用多个数码管动态显示,使电路变得复杂,加大了编程工作量。方案二:使用LCD显示。LCD具有轻薄短小,可视面积大,方便的显示数字,分辨率高,抗干扰能力强,功耗小

21、,且设计简单等特点。综上所述,选择方案二。采用LM016L液晶显示模块同时显示电流给定值和实测值以及负载内阻。连接电路图如下图2.8所示。图2.8 LM016L显示器连接图总体研究过程中,硬件的选型和电路的设计是重中之重,至此,系统各个硬件设计完成,均满足设计要求。第3章 软件设计软件程序是实现数控的核心,经过专业研究设计,采用C语言编程,运用KEIL软件进行编译。3.1 程序说明软件部分需要解决的主要难点是根据键盘输入的预置电流值转换为误差放大器的高精度基准电压,并跟踪显示。本设计采用C语言,对AT89C52进行编程实现各种功能。 软件实现的功能是: 电流步进调整 电流给定值的设置 测量输出

22、电流值 控制TLC2543工作 控制LTC1456工作 对反馈回单片机的电流值进行补偿处理 驱动液晶显示器显示相关数值编程是个复杂的步骤,不断的仿真研究后,具体程序见附录二。3.2 程序流程图软件总体流程图如下图3.1所示。 图3.1 软件总体流程图按照流程图的思路编程,程序运用KEIL软件进行编译,在符合要求后写入单片机不断的进行仿真调试,直至达到设计要求。第4章 系统仿真及数据分析Proteus软件一款强大的仿真软件,运用于多个仿真领域。它的电路仿真是互动的,它在对微处理器的应用时,可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试。基于Proteus的优越性,此设计运用Pr

23、oteus软件仿真各种状态,并记录仿真的实验数据,对数据进行理论分析。4.1 系统仿真方法打开Proteus软件,打开设计的电路文件,然后输入通过KEIL软件编好的程序,点击开始按钮即可以进行测试。具体操作说明:按下RESET/ON键显示四项值,电流设定初始值为200mA。可以按+,-键实现步进,数据实时显示。要设置电流直接按数字键无效。此时需按SET键进入电流设置,之后屏幕显示 “Are you sure to set?”,按下OK键即可设定,如果不需要设定,按RESET/ON返回。在设定电流的过程中,需要有效按四次数字键,如果在设置的过程中想放弃修改,按下RESET/ON键,如果需要修改已

24、经按下的数值,可以按DEL键,光标返回到上一个数,重新按某一个数字键即完成修改。设置完成后屏幕显示相应值。操作显示界面如图4.1所示。图4.1 仿真显示器显示界面4.2 系统仿真数据4.2.1 输出电流范围仿真由于在程序设计上限制了电流输出范围是202000mA,限定了电压值小于10V,当给定值在量程内时显示“OK!”;当给定值超过量程时将显示“ERROR! RESET!”,如下图4.2所示。图4.2 仿真报错显示界面若需要设定输出电流值,当按下SET键时,出现如图4.3所示界面,显示器显示“Are you sure to set?”,此时按下OK键,出现如图4.4所示界面,这是可自由输入一个

25、4位数,若满足2002000mA,则显示各种数据,若不满足2002000mA,则显示器出现“ERROR!RESET!”报警画面。若发现输入数字超出电流允许范围,可以按DEL删除输入值,再次输入数值。 图4.3 输出电流值确认SET显示界面 图4.4 输出电流值SET显示界面4.2.2 步进调整仿真在量程范围内,通过“”、“”按钮可实现1mA步进,通过显示器可观察到效果。4.2.3 输出电流仿真下图4.5所示是仿真最低电流200mA负载电阻为2.0时的状态,根据显示器显示内容可知,设定输出电流值为200mA,实测电流值为201mA,输出电压为0.419V,负载电阻为2.0,都满足设计要求。然后,

26、通过改变设定输出电流值进行仿真,记录的仿真数据如表4.1所示。 图4.5 负载电阻为2.0仿真状态图表4.1 负载RL=2.0的数据表格给定值(mA)200300400500800100015001980电流AD测值(mA)201301401501800100015001980误差绝对值11110010负载电压(V)0.4190.6290.8391.4091.6792.0993.1494.155负载阻值()2.02.02.02.02.02.02.12.0运用同样的仿真步骤,依次仿真负载电阻为3.0、4.3时这两种状态,记录仿真数据。表4.2 负载RL=3.0的数据表格给定值(mA)200300

27、400500800100015001980电流AD测值(mA)201300401501800100015001980误差绝对值10110000负载电压(V)0.6000.8981.2011.4992.3972.9984.4975.937负载阻值()3.03.03.03.03.02.93.03.0表4.3 负载RL=4.3的数据表格给定值(mA)200300400500800100015001980电流AD测值(mA)201301400501800100015001980误差绝对值11010010负载电压(V)0.8591.2891.7184.1483.4374.2966.4508.510负载阻

28、值()4.24.34.24.34.34.24.34.24.3 仿真结果与误差分析测量结果分析:步进1mA时设定值与实测值在2002000mA之间,误差在5mA以下。步进10mA时设定值与实测值在2001000mA之间,误差在5mA以下。在10002000mA之间时,误差在10mA以下。在改变负载时,误差在10mA以下。在改变输出电压时,误差在10mA以下。综上所述,系统仿真实测数据满足题目的基本要求,能满足输出电流与给定值偏差的绝对值给定值的1+10 mA。说明本电路有较高的精度和稳定性。误差分析:1 由于普通运算放大器的运放零点漂移,温度漂移等带来的误差。2 由于采样电阻在温度上升时阻值会变

29、化,是电流发生改变。3 受D/A转换器精度,A/D转换器精度,基准源稳定程度等硬件本身的限制, 不可避免地带来一定程度的误差。结论系统以单片机AT89C52为核心部件,利用A/D进行数据输入,D/A进行数值采集,反馈补偿等技术结合并配合补偿算法实现了题目中要求的精度。在系统设计过程中,力求硬件电路参数合理,线路简单。发挥软件编程灵活的特点,调节系统的精度。通过仿真实验数据表明此设计完全满足题目要求,仿真能得出以下结果:1、输出电流范围:200mA2000mA;2、可设置并显示输出电流给定值,要求输出电流与给定值偏差的绝对值给定值的1+10 mA;3、具有“+”、“-”步进调整功能,步进10mA

30、;4、改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的绝对值输出电流值的1+10 mA。参考文献1 唐爽全国大学生电子设计竞赛获奖作品选编北京:北京理工大学出版社,2006:201-241. 2 曾屹单片机原理与应用长沙:中南大学出版社,2009:159-171 3 杨立微型计算机原理与接口技术北京:中国水利水电出版社,2008:278-286 4 王新微型计算机控制技术北京:中国电力出版社,2009:206-215.5 高吉祥全国大学生电子设计竞赛培训系列教程.北京:电子工业出版社,2007:43-65.6 张华林,周小方电子设计竞赛实训教程北京:北京航空航天大学出版社,2007

31、:105-168.7 康华光.电子技术基础(数字部分).北京:高等教育出版社,2007:430-456.附 录 附录 一 系统电路总图附录 三 系统软件程序#include#define uchar unsigned char #define uint unsigned intsbit rs=P30; sbit rw=P31; sbit lcden=P32; /液晶显示屏相关位定义sbit AD_OUT=P10;sbit AD_IN=P11;sbit AD_CS=P12;sbit AD_CLOCK=P13;sbit DA_IN=P33;sbit DA_CK=P34;sbit DA_CS=P35

32、;sbit x=P14;uchar code table1=Are you sure ;uchar code table2= to set I? ;uchar code table3= ERROR!RESET! ;unsigned long int temp0,temp1;uint ADCdat,i,AD_DAstart;float Voltage1,Voltage2,r;int vol,rtt;uchar set,volarry04,volarry14,rt2;char iset5=0,0,2,0,0,;void led_init(); /函数声明void delayms(uint z);v

33、oid delay(uint t);void write_com(uchar com);void write_date(uchar date);void display_AD();uint read2543(uchar port);void Send1456(uint DACdat);void keyscan();main()led_init();i=20;display_AD();Send1456(20);while(1)keyscan();if(AD_DAstart=1)display_AD();Send1456(iset1*1000+iset2*100+iset3*10+iset4);v

34、oid delayms(uint z) /延时函数,参数为zuint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /z=1测试为大约1微秒void delay(uint t) /极短延时 while(t-);void write_com(uchar com) /写命令函数rs=0; /rs置0表示写命令lcden=0; /按时序图置低P0=com; /位声明,按原理图接P0口,输入数据lcden=1; /置高delayms(5); /时序图中须有thd2时间延时lcden=0; /按时序图置低void write_date(uchar date) /写数据函数r

35、s=1; /rs置1表示写数据lcden=0; P0=date; /将数据赋到P0口delayms(5); lcden=1; delayms(5); lcden=0; void led_init() /初始化函数lcden=0;rw=0;write_com(0x38); /显示模式设置:16X2显示,5X7点阵,8位数据write_com(0x0c); / 开显示,关光标,光标不闪烁write_com(0x06); / 写一个数据后地址指针加一,光标加一write_com(0x01); / 数据指针及数据清0write_com(0x80); / 设置数据地址指针,第一行write_com(0x

36、80+5);write_date(0x6d);write_date(0x41);write_com(0x80); write_date(0x53);write_date(0x30+iset1);write_date(0x30+iset2);write_date(0x30+iset3);write_date(0x30+iset4); void display_AD()uchar num;temp0+= read2543(0x00);/进行AD转换temp1+= read2543(0x01);i-;/取20次AD转换的结果,求平均值if(i=0)ADCdat=temp1/20;temp1=0;Vo

37、ltage2=(ADCdat*5.0)/4096; /基准电压为5.0V vol=(int)(Voltage2*4)*1000);/ 扩大1000倍volarry13=vol/1000;volarry12=vol%1000/100; volarry11=vol%100/10;volarry10=vol%10;ADCdat=temp0/20;temp0=0;i=20;Voltage1=(ADCdat*5.0)/4096; /基准电压为5.0V vol=(int)(Voltage1*1000+1);/ 扩大1000倍 volarry03=vol/1000; volarry02=vol%1000/1

38、00; volarry01=vol%100/10;volarry00=vol%10;write_com(0x80+0x40);write_date(0x54);write_date(0x30+volarry03);write_date(0x30+volarry02);write_date(0x30+volarry01);write_date(0x30+volarry00);write_date(0x6d);write_date(0x41);if(vol2000|vol10|volarry13=10)write_com(0x01); / 数据指针及数据清0write_com(0x80); / 设

39、置数据地址指针,第一行for(num=0;num16;num+)write_date(table3num);delayms(1); /循环方式写第一行数据set=1;AD_DAstart=0;else write_com(0x80+0x40+13); write_date(0x4f); write_date(0x4b); write_date(0x21); write_com(0x80+9); write_date(0x30+volarry13); write_date(0x2e); write_date(0x30+volarry12); write_date(0x30+volarry11);

40、 write_date(0x30+volarry10); write_date(0x56); r=Voltage2*4/Voltage1; rtt=(int)(r*10); rt1=rtt/10; rt0=rtt%10; write_com(0x80+0x49); write_date(0x30+rt1); write_date(0x52); write_date(0x30+rt0);uint read2543(uchar port)uint ad=0,j; AD_CLOCK=0; AD_CS=0; port=4; delay(50); for(j=0;j12;j+) if(AD_OUT) a

41、d|=0x01; AD_IN=(bit)(port&0x80); AD_CLOCK=1; delay(6); AD_CLOCK=0; delay(3); port=1; ad=1; return(ad);void Send1456(uint DACdat)uchar i=0;DA_CK=0;delay(2);DA_CS=0;delay(2);for(i=0;i12;i+)DA_IN=(bit)(DACdat&0x800);DA_CK=1;DACdat=1;DA_CK=0;DA_CS=1;DA_CS=0;void keyscan() /矩阵键盘uchar temp,keycount,num; /

42、 定义局部变量P2=0xfe; / 检测最上面一行各键是否有按键按下 temp=P2; / 将P2口的值赋给temp temp=temp&0xf0; / 位与 if(temp!=0xf0) delayms(100); temp=P2; temp=temp&0xf0; if(temp!=0xf0) /确认被按下,防止抖动 temp=P2; switch(temp) case 0xee: /检测到7被按下 if(keycount!=0) write_date(0x30+7); isetkeycount+=7; break; case 0xde: /检测到8被按下 if(keycount!=0) w

43、rite_date(0x30+8); isetkeycount+=8; break; case 0xbe: /检测到9被按下 if(keycount!=0) write_date(0x30+9); isetkeycount+=9; break;case 0x7e: /检测到取消键被按下 write_com(0x01); / 数据指针及数据清0 write_com(0x0c); write_com(0x80+5); write_date(0x6d); write_date(0x41); write_com(0x80); write_date(0x53); write_date(0x30+iset

44、1); write_date(0x30+iset2); write_date(0x30+iset3); write_date(0x30+iset4); AD_DAstart=1; while(temp!=0xf0) /松手检测 temp=P2; temp=P2&0xf0; P2=0xfd; / 检测最二行各键是否有按键按下 temp=P2; / 将P2口的值赋给temp temp=temp&0xf0; / 位与 if(temp!=0xf0) delayms(100); temp=P2; temp=temp&0xf0; if(temp!=0xf0) /确认被按下,防止抖动 temp=P2; sw

45、itch(temp) case 0xed: /检测到4被按下 if(keycount!=0) write_date(0x30+4); isetkeycount+=4; break; case 0xdd: /检测到5被按下 if(keycount!=0) write_date(0x30+5); isetkeycount+=5; break; case 0xbd: /检测到6被按下 if(keycount!=0) write_date(0x30+6); isetkeycount+=6; break;case 0x7d: /检测到+被按下 iset4+; if(iset4=10) iset4=0;

温馨提示

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

评论

0/150

提交评论