工学基于单片机的程控放大器设计.docx

上传人:scccc 文档编号:13345048 上传时间:2021-12-22 格式:DOCX 页数:23 大小:29.99KB
返回 下载 相关 举报
工学基于单片机的程控放大器设计.docx_第1页
第1页 / 共23页
工学基于单片机的程控放大器设计.docx_第2页
第2页 / 共23页
工学基于单片机的程控放大器设计.docx_第3页
第3页 / 共23页
工学基于单片机的程控放大器设计.docx_第4页
第4页 / 共23页
工学基于单片机的程控放大器设计.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《工学基于单片机的程控放大器设计.docx》由会员分享,可在线阅读,更多相关《工学基于单片机的程控放大器设计.docx(23页珍藏版)》请在三一文库上搜索。

1、工学基于单片机的程控放大器设计工学基于单片机的程控放大器设计可编程放大器设计 摘要 本设计主要以DAC0832内部的电阻网络作为核心, 利用AT89S52单片机控制所选 D/A的电阻网络状态,同时 利用两个独立键盘来控制正弦波的放大倍数,并利用四位数 码管将其显示由来。经过实际测量,本系统可以实现通频为 20Hz-20KHz , Vpp 为20mV-20V ,放大0.4100倍,且步进为 0.4可调的无失 真的波形放大器。关键词:AT89S52单片机数码管放大器Abstract The design mainly base on DAC0832 s inside resistors regar

2、ding as the kernel,it is used on the AT89S52 MCU controlling the resistors condition.At the same time,it utilizes double Individual Keys to control sinusoidal wave s amplify,additionally,four digital tube to display the concrete value.After measured,the system could make the function come true. In d

3、etail,the wave amplifier s parameter:passband:20Hz20KHz,Vpp:20mV20V ,amplify:0.4100,step:0.4(adjustednodistortion). Key words: AT89S52 Micro Controller Unit digital tube amplifier 目 录摘 要一.核心模31.1 滤波模块3 1.2 控制模块31.3显示模块 3 1.4自动增益模块41.5波形放大模块4 二.方案设计与总体论证4 三.单元电路分析与实现 53.1滤波模块53.2 显示模块6 3.3 波形放大模块73.4

4、自动增益模块8四.单片机软件设计94.1 软件功能94.2 流程图9 五.测试结果及分析9 六.设计总结10 七 附录117.1主要元器件清单 117.2程序清单11 第一章绪论 1.1目前研究的概况和发展趋势输入端的信号在一定幅度内,从而保证整个仪表的测量精度。但是人工档位调节增加了仪表操作的复杂性、影响了数据 测量的实时性,同时档位调节通常采用机械转扭,增加了仪 器的不可靠性和接触电阻对测量精度的影响。而且传统的方法是采用可软件设置增益的放大器,如AD8321芯片,并且该类放大器价格较高(如 AD8321 ),选 择档位也较少(如 TI的PGA103, 206等仅3-4档)。还有一种可满足

5、核仪器中所要求的线性度与增益稳定性 以及自动稳谱的增益要求的数控放大器。系统在保证放大器的增益稳定性和线性指标的同时却降 低了放大器的输入阻抗,必然对前级电路输由阻抗提由更高 的要求。在实际应用中可通过增大反馈电阻提高输入阻抗,另外必 要时还可以增加一级电压跟随电路,电压跟随器的输入阻抗 极高,这样可以忽略电路中的导通电阻对增益的影响,各级 增益完全取决于所选电阻。目前通常由于各类测量仪表设备中的传感器在不同测试 中,其输由信号的幅度可能相差很多,传统的处理方法是对 放大器增加手动档位调节以保证后端的A/D采集采用单片机来自动选择量程档位,采用非易失性数字电位器和仪表放 大器组成的高精度、多档

6、位、低成本的程控放大器。以单片机(或个人计算机)为基础的仪器测量系统的由 现,是电子电工测量的一项重大变革,具有广阔的应用前景。1.2 核心模块的方案论证与比较1.2.1滤波模块 方案一:采用CF412或者LF412芯片 此方案采用CF412或是LF412 芯片,因为此芯片的带宽增益积可以达到8MHz,理论上来说,其上限截至频率可以达到100KHz,但是考虑到此芯片需要M8V供电,这会给电源供电模块带来难度而且价格较 贵,故不采用这种方案。方案二:采用LM324N芯片此方案是采用LM324N芯片,具带宽增 益积为1MHz ,经过实际测量,可以实现上限截止频率为 20KHz,甚至可以达到 30K

7、Hz ,足以实现基本要求部分,而 且此芯片便宜,只需 M2V供电,会给整个系统的设计带来 很大的方便,故采用此方案。1.2.2 控制模块方案一:4*4矩阵键盘控制 此方案可以直接输入所需要的波形放大 倍数,方便快捷,但是程序操作复杂,故不采用这种方案。方案二:独立按键控制此方案利用两个独立按键共同控制放大倍数,其中一个按键用来控制倍数的放大,另外一个控制倍数 的衰减,以此来达到放大倍数的调节,由于本系统元件较少,而且51单片机正好有两个外部中断口可以利用,程序设计 简单,故采用此方案。1.2.3 显示模块方案一:1602液晶显示 此方案中液晶显示器可以由ASCII码控制,控制简单,可以显示更多

8、的信息,比如放大倍数和单位等, 但是价格相对昂贵,故不为本系统所采用。方案二:数码管显示 此方案中利用共阴极数码管并对09这10数字进行编码,并利用数码管的动态扫描形式来显示不同的数 字,以达到显示放大倍数的目的。由于本系统仅需对放大倍数进行显示,利用四段数码管已 经足以达到要求,程序设计也相对容易,产品价格低廉,故 本设计采用这种方案实现。1.2.4 自动增益模块方案一:采用MOSFET实现 此方案通过输入信号控制 MOS管的Rds 来实现增益的自动调节,由于 Rds不好调节,尤其是信号较 小时,Rds变化不明显,需要找到非常合适的电阻,才可以 将信号幅度控制在 2V3V的范围内,虽然电路简

9、单,但准 确度不高,参数的选择较为麻烦,故不采用这种方案。方案二:采用ADC0809实现 此方案首先通过峰值检测电路,检测由输入信号的峰值,然后将峰值电压输入ADC0809 ,由A/D与单片机结合,再通过单片机控制 D/A来实现增益的自动调 节,该方案简单,容易调节,故采用这种方案。1.2.5 波形放大模块方案一: 采用模拟开关 CD4051此方案中采用具有八路模拟开关的 电子芯片 CD4051 ,这样可以实现八种不同的放大倍数,若 采用两片,就可以实现十六种不同的放大倍数,以此类推。但是显然,这不可以实现步进调节,且其内部的开关导通 阻值较大,也会给波形放大带来较大的误差,故不采用这种 方案

10、。方案二:采用DAC0832此方案是利用 51单片机来控制 D/A内部电 阻网络的状态,以此来控制其内部电阻的变化,从而控制放 大倍数。由于DAC0832输由的是电流信号,所以需要利用LM324N 运算放大器来将其转换成电压形式,以此来输由放大后的正 弦波,故采用这种方案。1.3 本文的设计思路 本章提由了一种基于 AT89C51单片 机控制的简易程控放大器系统。单片机通过DAC0832将数字量转化为模拟量经放大器放 大输由最后通过液晶显示。本系统的设计基于 AT89C51单片机和运算放大器,通过调 节外部独立按键来实现控制电压的大小。1.4 本文的主要内容 (1) DAC0832的工作原理

11、(2) 放大器工作原理 (3) LCD1602液晶的驱动1.5系统设计 要求 本系统设计的程控放大器可以实现如下功能:设计一个简易的程控放大器系统,它可以通过按键输入来控制输生的电压大小输由的值可通过 LCD1602液晶显示。能够自己改变放大器的放大倍数。第二章系统的硬件设计该方案是以单片机 AT89S52控 制为核心,两个独立按键和D/A芯片与单片机结合参与工作,实现波形放大以及放大倍数的调节。系统框图如图2-1所示。该方案的优点是实现了软件与硬件相结合的控制方式,设 置参数较为方便,可以实现倍数的快速调节,误差也较小, 并且通过数码管将其显示出来。再加上峰值检测电路和模数转换,可以实现增益

12、的自动调 节。图2-1系统整体设计框图 2.1 AT89S52单片机AT89S52为ATMEL所生产的一种低功耗、高性能 CMOS8 位微控制器,具有8K在系统可编程Flsah存储器。(一)、AT89S52主要功能列举如下:1、拥有灵巧的8位CPU和在系统可编程 Flash 2、晶片内部具时钟振荡器(传统最高工作频率可至12MHz) 3、内部程序存储器(ROM)为8KB 4、内部数据存储器(RAM) 为256字节5、32个可编程I/O 口线6、8个中断向量源7、三个16位定时器/计数器8、三级加密程序存储器9、全双工UART串行通道 (二)、AT89S52各引脚功能介绍 如图2-2:图 2-2

13、 AT89S52 引脚图 VCC :AT89S52电源正端输入,接+5V。VSS:电源地端。XTAL1 :单芯片系统时钟的反相放大器输入端。XTAL2 :系统时钟的反相放大器输由端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统就可以动 作了,此外可以在两引脚与地之间加入一20PF的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时, 只要对此引脚电平提升至高电平并保持两个机器周期以上 的时间,AT89S51便能完成系统重置的各项动作,使得内部 特殊功能寄存器之内容均被设成已知状态,并且至地址 0000H处开始读

14、入程序代码而执行程序。EA/Vpp :“EA为英文“External Access的缩写,表示存取外部程序代 码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码 (存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其 内部无程序存储器空间。如果是使用 8751内部程序空间时,此引脚要接成高电 平。此外,在将程序代码烧录至 8751内部EPROM时,可以利 用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG :ALE是英文 “Address Latch Enable的缩写,表示地址锁存器 启用信号。AT89S52可以利用这支引脚

15、来触发外部的 8位锁存器(如 74LS373),将端口 0的地址总线(A0A7)锁进锁存器中, 因为AT89S52是以多工的方式送由地址及数据。平时在程序执行时 ALE引脚的输由频率约是系统工作频 率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划 的特殊功能来使用。PSEN:此为“ Program Store Enable的缩写,其意为程序储存启用, 当8051被设成为读取外部程序代码工作模式时(EA=0 ),会送由此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM

16、与EPROM ,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0 (P0.0P0.7):端口 0是一个8位宽的开路汲极(Open Drain)双向输由入 端口,共有8个位,P0.0表示位0, P0.1表示位1,依此类 推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态, 而是内部有一提升电路,P0在当做I/O用时可以推动 8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据 存储器),P0就以多工方式提供地址总线(A0A7)及数据 总线(D0D7)。设计者必须外加一锁存器将端口0送生的地址栓锁住成为A0A7,再配合端口 2所送生的A8A1

17、5合成一完整的16 位地址总线,而定址到 64K的外部存储器空间。PORT2 (P2.0P2.7):端口 2是具有内部提升电路的双向 I/O端口,每一个引脚可 以推动4个LS的TTL负载,若将端口 2的输由设为高电平 时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外 接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了PORT1 (P1.0P1.7):端口 1也是具有内部提升电路的双向 I/O端口,其输由缓冲 器可以推动4个LS TTL负载,同样地若将端口 1的输由设 为高电平,便是由此端口来输入数据。

18、如果是使用8052或是8032的话,P1.0又当做定时器2的 外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中 断输入的触发脚位。PORT3 (P3.0P3.7):端口 3也具有内部提升电路的双向I/O端口,其输由缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功 能,包括串行通信、外部中断控制、计时计数控制及外部数 据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD ,串行通信输入。P3.1:TXD ,串行通信输生。P3.2:INT0 ,外部中断0输入。P3.3:INT1 ,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1 ,计时计数器1

19、输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电 平时间。ALE/PROG :当访问外部存储器时,地址锁存允许的输由电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输由正脉冲信号,此频 率为振荡器频率的1/6。因此它可用作对外部输由的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲如想禁止 ALE的输由可在 SFR8EH地址上置 0。此时, ALE只有在执行 MOVX , MOVC 指令是 A

20、LE才 起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN :外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不由现。/EA/VPP :当/EA保持低电平时,则在此期间外部程序存储器 (0000H-FFFFH ),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为 RESET;当/EA端 保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)oXTAL1 :反向振荡放大器的输入及内部时钟工作电路的输入。XTAL

21、2 :来自反向振荡器的输由。2.2滤波模块 该部分由一片 LM324N ,若干合适的电容 和电阻组成。系统框图如图2-3所示。其原理是:输入信号VI通过R1, R3进行衰减,考虑到 AVF1=1.586,同 时尽量要使运放同相输入端和反向输入端对地的直流电阻 基本相等,可选取 R5=82 kQ, R4= (AVF1-1) R5=48 kQ, 由于没有买到48 k Q的电阻,故采用接近其阻值大小的 47 k Q 来代替,效果也不错。其中U1A部分是低通滤波器,根据公式,可以得到其上限 截至频率为30KHz , U1B部分是高通滤波器,根据公式,可 以得到其下限截至频率为19Hz,由于LM324N

22、带宽增益积的限制,经过实际测量,其上限截至频率为20KHz,完全可以实现通带为20Hz20KHz的基本要求。仿真结果如图2-4,图2-5所示。图2-3带通滤波器 图2-4上限截至频率 图2-5下限截 至频率2.3控制显示电路本系统采用AT89C51单片机最小 控制系统,显示部分采用 LCD1602液晶显示。本节重点介绍LCD1602的基本用法。1、LCD1602液晶简介及系统的硬件原理图1602采用标准的16脚接口,各引脚功能图如表 2-1所示。表2-1 1602液晶引脚功能图引脚号 引脚名称 功能说明1 VSS地电源2 VDD 5V正电源3 V0液晶显示器对比度调整端,接正电源时对比度最弱,

23、接地电源时对比度最高,对比度过高时会产生 鬼影工 使用时可以通过一个 10K的电位器调整对比度 4RS寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器5 RW读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当 RS为高电平RW为低电平时可以写入数据6 E使能端,当E端由高电平跳变成低电平时,液晶模块执行命令 714 D0D7 8位双向数据线1516空脚1602液晶模块内部的字符发生存储器(CGROM)已经存储了 160个不同的点阵字符图形,如表3.3所示,这些字符有:阿拉伯数字、英文字母

24、的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址 41H中的点阵字符图形显示由来,我们就能看到字母“A”。表2-2 CGROM和CGRAM中字符代码与字符图形对应关系高 位低位 0000 0010 0011 0100 0101 0110 0111 10101011 1100 1101 1110 1111 XXX0000 CG RAM (1) 0 P ' p一夕 aPXXXX 00(21) ! 1 A Q a q 口了于 L 6qxx xx 0010 (3)" 2B R b川B e

25、xxxx 0011 # 3 CS c s ir 现的指令1:清显示,指令码 01H,光标复位到地址 00H位置 指令2:光标复位,光标返回到地址 00H指令3:光标和显示模式设置1/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字 是否左移或者右移。高电平表示有效,低电平则无效指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光R/L :1向右移动;0向左移动。指令6:功能设置命令

26、 DL高电平时为4位总线,低电平时为8位总 线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示 5x10的点阵字符 指令7: 字符发生器RAM地址设置指令8:DDRAM地址设置指令9:读忙信号和光标地址BF :为忙标志位,高电平表示忙,此时模块不能接收命令或者数 据,如果为低电平表示不忙。指令10:写数据指令11:读数据 表2-3 1602液晶模块的控制指令 液晶显示模块是一 个慢显示器件,所以在执行每条指令之前一定要确认模块的 忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在 哪里显示字符,表 2-4是DM-1

27、62的内部显示地址。表2-4 DM-162的内部显示地址 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H0AH 0BH 0CH 0DH 0EH 0FH 40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH 比如第二行 第一个字符的地址是 40H ,那么是否直接写入40H就可以将 光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7恒定为高电平1所以实际写入 的 数 据 应 该 是 01

28、000000B(40H)+10000000B(80H)=11000000B(C0H)控制显示电路原理图如图2-6所示。图2-6单片机最小系统和液晶显示电路 2.3波形放大模 块该部分主要由一片 DAC0832和一块LM324N运算放大器 组成。DAC0832属于8位倒T型电阻网络 D/A转换器。其内部结构如图2-7所示。通过单片机的 P1 口向DAC0832发送数字编码,控制D/A 内部S1S7共8个模拟开关的断与合, 以此来调节内部的阻 值,可以有256种状态,并且可以实现步进调节。同时,模拟开关的电阻很小,这样可以减小放大倍数的误 差。DAC0832是电流输由型,示波器上显示波形, 通常需

29、要电 压信号,电流信号到电压信号的转换可以由运算放大器LM324N 实现。系统电路连接如图2-8所示。图2-7 DAC0832内部结构图 图2-8 DAC0832电路连接图2.4双极型转单极性通过单片机控制另一块 DAC0832可以 产生0到12V的直流偏置电压,然后通过减法运算电路可以 将双极性信号变成单极性。电路如下:图2-9 2.5D/A转换电路 D/A 转换电路采用 DAC0832来实现,首先来介绍下 DAC0832芯片DAC0832是8位D/A转换集成芯片,该芯片以其价格低 廉、接口简单、转换控制容易等优点,在单片机应用系统中 得到广泛的应用。DAC0832由8位输入锁存器、8位DA

30、C寄存器、8位D/A 转换电路及转换控制电路构成。DAC0832输生结果为电流量,单电源供电,其主要特性 参数如下:分辨率为8位;电流稳定时间1以§可单缓冲、双缓冲或 直接数字输入;只需在满量程下调整其线性度;单一电源供电(+5V+15V); 低功耗,20mWoDAC0832结构框图及引脚说明图2-10 DAC0832的结构框图和引脚(2)DAC0832工作过程 CPU执行输生指令, 输由8位数据给DAC0832 ; 在CPU执行输生指令的同 时,使ILE、/CS、/WR1三个控制信号端都有效,8位数据锁存在8位输入寄存器中; 当/WR2、/XFER两个控制信号端都有效时,8位数据再

31、次被锁存到 8位DAC寄存器, 这时8位D/A转换器开始工作,8位数据转换为相对应的模 拟电流,从Iout1和Iout2输由。(3)DAC0832的工作方式:双缓冲方式;单缓冲方式;直通方式 (4)DAC0832接口电路 图2-11第三章单片机软件设计 3.1软件功能主程序和子 程序都存放在AT89S52单片机中。该程序的主要功能是:开机以后负责查键,即做键盘扫描 及显示工作,然后根据用户所按的键转到相应的子程序进行 处理,利用程序控制D/A电阻网络中阻值的变化,并利用LM324N运算放大器来将其输由转换成电压形式,以此来输 由放大或者衰减后的正弦波,同时在四位数码管中显示由所 放大的倍数。3

32、.2流程图控制程序流程图如图3-1所示.图3-1波形放大部分程序流程图3.3代码分析本系统程序代码如下。1.函数声明及变量定义为方便程序的编写,把部分常用的变量进行伪定义,把实现一定功能的程序编写为一个函 数,有利于程序的编写。#include ”reg51.h “ #include “intrins.h " sb/i 蠲Scs=P1 定义 sbit dawr=P1 ;芯片 sbit lcdrs=P1 ;定义寄存器 sbit lcdrw=P1 ;定义是否读写 sbit lcde=P1 ;定义使能端 sbit lcd_flag=P0 ;定义是否忙标志void disp(void);/以

33、下为函数声明 void lcd_delay(unsigned int ); void lcd_deal(unsigned char ,unsigned char ,unsigned char ); void _1602(void); void lcd_init(void); void lcd_moveto(unsigned char ,unsigned char ); void lcd_putchar(unsigned char ); unsigned char code shuzi=0,1,2,3,4,5,6,7,8,9; unsigned char code lcd_Assic12=/AS

34、ICII 码 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x56,0x2e;unsigned chardis216=/ 液晶初始化数据0x20,0x20,0x20,0x20,/0x20输由是空即空格 0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20; unsigned char val=0;/ 全局变量 2

35、.主 程序本系统主程初始化并启动DAC0832芯片后,进入按键检测程序。当加一键按下时,val变量加一。显示屏第一行数字显示val的大小,第二行适时显示转化后的电压值。当加一键按下超过一秒钟后,val以500ms的速度增长,按键释放后停止。减一键类似。详细主程序见附录1。3.显示子程序 此程序为液晶显示子程序,首先将要显 示的变量val的百位、十位、个位分离。然后储存到液晶显示缓存区, 数据送到显示屏上显示由来。/*最后经_1602()函数把缓存的显示函 数程序*/void disp(void) P2=val;lcd_deal(0,0,val/100);/ 分 离百位 lcd_deal(0,1

36、,val%100/10);/分离十位lcd_deal(0,2,val%10);分离个位lcd_deal(1,2,(unsignedchar)(float)val/256*5)%10);lcd_deal(1,3,11); 显 示符号 "." lcd_deal(1,4,(unsignedchar)(float)val/256*50)%10);lcd_deal(1,5,(unsignedint)(float)val/256*500)%10);lcd_deal(1,6,10); 显示字符 7_1602();/输由至U 1602 4.延时程序 此程序为液晶显示函数 和主程序按键去抖延

37、时提供毫秒级延时函数。尸*延 时 函 数 程 序*/ void lcd_delay(unsigned int k) /延时函数 unsigned int i0; unsigned char i,j; for(i0=0;i00;i-) for(j=97;j>0;j-); 5 . LCD1602液晶输生函数 此函数主要完 成将液晶显示输由缓冲区的数据输生到液晶显示屏上。/*液晶输由函数程序*/ void _1602(void) unsigned char *p;lcd_init(); / 初始化 lcd_delay(10); lcd_moveto(0,0);/ 指针定位到 第 一 行 第 一

38、 列 for(p=dis0;p/*ASSICII码转化函数程序*/ void lcd_deal(unsigned char i,unsigned char j,unsigned char dat) disij=lcd_Assicdat; 7.检测 LCD忙函数 此函数主要功能为检测 LCD1602液晶忙标志函数, 当要向LCD1602内传输数据时,需要先进行忙标志检测。当返回函数为忙时,稍后写数据或者命令,如遇返回为不忙就可直接向LCD1602内写命令或者数据。/* 检测忙标志函数程序*/ b|t |cd_busy() 判断是否忙碌RS =Low, RW=High, E= High :读状态 bit flag=0; lcdrs=0; / 寄存器为 Low lcdrw=1; / 是否 读写为 High lcde=1; / 使能端为 High if (lcd_flag=1) flag=1;else flag=0; lcde=0; return flag; / 返回

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1