收藏 分销(赏)

毕设论文--控程放大器系统设计.doc

上传人:胜**** 文档编号:3006566 上传时间:2024-06-12 格式:DOC 页数:29 大小:854.50KB 下载积分:10 金币
下载 相关 举报
毕设论文--控程放大器系统设计.doc_第1页
第1页 / 共29页
毕设论文--控程放大器系统设计.doc_第2页
第2页 / 共29页


点击查看更多>>
资源描述
江苏信息职业技术学院毕业设计 毕业设计 程控放大器系统设计 系 电子信息工程系 专业 电子信息工程技术 姓名 杨晨 班级 电信101 学号 1001043136 指导教师 陈洁 职称 副教授 设计时间 2012.9.15-2013.1.4 摘 要 本设计介绍一种基于AT89C51单片机的简易程控放大器系统,主要由单片机丶数模转换器和运算放大器组成。系统的基本工作原理:单片机通过改变DAC0832的数字输出量改变系统的增益。单片机通过按键改变DAC0832的数字量,使得程控放大器的增益发生变化。增益放大倍数和输出电压值通过液晶显示。 关键词:AT89C51单片机,DAC0832,数模转换器,运算放大器 I 目 录 摘 要 I 目 录 II 第1章 绪 论 1 1.1 课题来源 1 1.2 设计思路 1 第2章 方案设计 2 2.1 核心模块的方案论证与比较 2 2.1.1 控制模块 2 2.1.2 显示模块 2 2.2 系统设计要求 2 2.3 系统设计思路 2 2.4 系统硬件框图 3 第3章 系统硬件设计 4 3.1 单片机的应用与选择 4 3.2 芯片简介 4 3.2.1 AT89C51性能简介 4 3.2.2 AT89C51的主要特性 4 2.2.3 AT89C51管脚功能 5 3.2 控制显示电路 6 3.3 键盘电路 8 3.4 D/A转换电路 8 3.4.1 管脚功能 9 3.4.2 D/A转换电路 10 3.5 放大电路 11 3.6整机电路 11 第 4 章 软件设计及仿真 12 4.1 软件流程图 12 4.2 程序代码 12 4.3 仿真设计 12 4.3.1 VW简介 13 4.3.2 PROTUES仿真 14 总 结 17 参考文献 18 致 谢 19 附录A 程序 20 附录B 系统原理图 25 II 第1章 绪 论 1.1 课题来源 程控放大器,又名可编程放大器,是一种放大倍数由程序控制的放大器。程控放大器可以通过软件改变增益,利用模数转换器可以自动适应大范围变化的模拟信号电平,因此越来越多地应用在自动控制系统丶智能化仪器仪表中。本课题适用于科学教研、生产实践和教学实验等领域。它是有AT89C51单片机、DAC0832。通过按键来实现放大的产生。 1.2 设计思路 本系统的主控制模块是由单片机最小系统,两个独立按键构成的,每一个按键对应一种调整模式。按下按键后,会执行相应的按键功能,松开后停止。 具体实现过程:系统上电后先对DAC0832和LCD1602液晶初始化,再对按键进行扫描。当按键有按下时,系统的数字输入量发生改变,从而改变系统的增益,使得输出电压发生相应的变化。系统的放大倍数和输出电压通过液晶实时显示。 第2章 方案设计 2.1 核心模块的方案论证与比较 2.1.1 控制模块 方案一:4*4矩阵键盘控制 此方案可以直接输入所需要的波形放大倍数,方便快捷,但是程序操作复杂,故不采用这种方案。 方案二:独立按键控制 此方案利用两个独立按键共同控制放大倍数,其中一个按键用来控制倍数的放大,另外一个控制倍数的衰减,以此来达到放大倍数的调节,由于本系统元件较少,而且51单片机正好有两个外部中断口可以利用,程序设计简单,故采用此方案。 2.1.2 显示模块 方案一:数码管显示 此方案中利用共阴极数码管并对0~9这10数字进行编码,并利用数码管的动态扫描形式来显示不同的数字,以达到显示放大倍数的目的。由于本系统仅需对放大倍数进行显示,利用四段数码管已经足以达到要求,但程序设计相对繁琐,故本设计不采用这种方案实现。 方案二:1602液晶显示 此方案中液晶显示器可以由ASCll码控制,控制简单,可以显示更多的信息,比如放大倍数和单位等,故为本系统所采用。 2.2 系统设计要求 本系统设计的程控放大器可以实现如下功能: (1)可以通过按键输入来控制输出的电压大小。 (2)输出的值可通过LCD1602液晶显示。 (3)可以通过按键输入改变放大器的放大倍数。 2.3 系统设计思路 本系统的主控制模块由单片机最小系统,两个独立按键构成的,每一个按键对应一种调整模式。按下键后,会执行相应的按键功能,松开后停止。 程控放大器的输出电压V0与DAC0832的输入电压Vref的关系式:V0=-[(Vref·Rf)]/2nR(Dn-1·2n-1+Dn-2·2n-2+...+D0·20)。Rf为系统的反馈信号输入线电阻,R为DAC0832的数字输出量,就相当于改变系统的增益。 具体实现过程:系统的数字输入量发生改变,从而改变系统的增益,使得输出电压发生相应的变化。系统的放大倍数和输出电压通过液晶实时显示。 LCD显示 MCU 键盘 D/A转换 放大器 输出 2.4 系统硬件框图 图2.1 系统硬件框图 第3章 系统硬件设计 3.1 单片机的应用与选择 8051是MCS-51系列单片机中的代表产品,它内部集成了功能强大的中央处理器,包含了硬件乘除法器、21个专用控制寄存器、64kB的程序存储器 、256B字节的数据存储器、4组8位的并行口、两个16位的可编程定时/计数器、一个全双工的串行口以及布尔处理器。 由于MCS-51集成了几乎完善的8位中央处理单元,处理功能强,中央处理单元中集成了方便灵活的专用寄存器,硬件的加、减、乘、除法器和布尔处理机及各种逻辑运算和转移指令,这给应用提供了极大的便利。 3.2 芯片简介 3.2.1 AT89C51性能简介  AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 3.2.2 AT89C51的主要特性 ⑴ 8031 CPU与MCS-51兼容 ⑵4K字节可编程FLASH存储器(寿命:1000写/擦循环) ⑶全静态工作:0Hz-24KHz ⑷三级程序存储器保密锁定 ⑸128*8位内部RAM ⑹32条可编程I/O线 ⑺两个16位定时器/计数器 ⑻5个中断源 ⑼可编程串行通道 ⑽低功耗的闲置和掉电模式 ⑾片内振荡器和时钟电路 2.2.3 AT89C51管脚功能 MCS-51系列单片机芯片均为40个引脚,HMOS工艺制造的芯片采用双列直插(DIP)方式封装,其引脚示意及功能分类如图3.1: 图3.1 MCS-51引脚图 MCS-51系列单片机的40个引脚中有2个专用于主电源的引脚,2个外接晶体的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。  VCC:供电电压。 GND:接地。 ① P0口(P0.0~P0.7) 为双向8位三态I/O口,当作为I/O口使用时,可直接连接外部I/O设备。它是地址总线低8位及数据总线分时复用口,可驱动8个TTL负载。一般作为扩展时地址/数据总线口使用。 ② P1口(P1.0~P1.7) 为8位准双向I/O口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1),可驱动4个TTL负载。 ③ P2口(P2.0~P2.7) 为8位准双向I/O口,当作为I/O口使用时,可直接连接外部I/O设备。它是与地址总线高8位复用,可驱动4个TTL负载。一般作为扩展时地址总线的高8位使用。 ④ P3口(P3.0~P3.7) 为8位准双向I/O口,是双功能复用口,可驱动4个TTL负载。 P3口也可作为AT89C51的一些特殊功能口,如下所示: P3口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 综上所述,MCS-51系列单片机的引脚作用可归纳为以下两点: ⑴单片机功能多,引脚数少,因而许多引脚都具有第2功能; ⑵单片机对外呈3总线形式,由P2、P0口组成16位地址总线;由P0口分时复用作为数据总线;由ALE、PSEN/、EA/与P3口中的INT0/、INT1/、T0、T1、WR/、RD/共10个引脚组成控制总线。 3.2 控制显示电路 本设计用AT89C51单片机最小控制系统,显示部分采用LCD1602液晶显示器LCD引脚图如图3.2所示。 图3.2 LCD1602引脚图 脚号 管脚名称 LEVER 管脚功能描述 1 VSS 0V 电源地 2 VDD 5.0V 电源电压 3 VEE 对比调整电压 4 RS H/L RS=“H”,表示DB7~DB0为显示数据 RS=“L”,表示DB7~DB0为显示指令数据 5 R/W H/L R/W=“H”,E=“H”,数据被读到DB7~DB0 R/W=“L”,E=“H→L” DB7~DB0的数据被写到IR或DR 6 E H/L 使能信号:R/W=“L”,E信号下降沿锁存DB7~DB0 R/W=“H”,E=“H” DRAM 数据读到 D7~D0 7 D0 H/L 数据线 8 D1 H/L 数据线 9 D2 H/L 数据线 10 D3 H/L 数据线 11 D4 H/L 数据线 12 D5 H/L 数据线 13 D6 H/L 数据线 14 D7 H/L 数据线 LCD1602引脚及其功能介绍如表3-1所示。 表3.1 AT89S52的P0口接上拉电阻,P0口输出显示数据,控制信号由P1口部分引脚控制输出。 图3.3 显示控制电路 3.3 键盘电路 键盘电路如图3.4所示,通过按键控制输出电压大小。P3.0接输出增加按钮, P3.1接输出减小按钮 图3.4 键盘电路 3.4 D/A转换电路 D/A转换电路采用DAC0832来实现,首先来介绍下DAC0832芯片。 3.4.1 管脚功能 图3.5 DAC0832管脚图 DAC0832管脚功能如图3.5所示。 DAC0832的主要特性参数如下: * 分辨率为8位; * 输出为电流信号,电流的建立时间为1us; * 可单缓冲、双缓冲或直接数字输入; * 只需在满量程下调整其线性度; * 单一电源供电(+5V~+15V),低功耗,20mW; * 参考电压可以达到±10V; * 直接的数字接口可以与任何一款单片机相连。 DAC0832的引脚功能: * D0~D7:8位数据输入线,TTL电平,通常与单片机的数据总线相连,用于输入CUP送来的待转换数字量。有效时间应大于90ns(否则锁存器的数据会出错); * ILE:数据锁存允许控制信号输入线,高电平有效; * CS(————):片选信号输入线(选通数据锁存器),低电平有效; * WR1(——————):数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS(————)、WR1(——————)的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存; * XFER(————————):数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效; * WR2(——————):DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR1(——————)、XFER(————————)的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。 * IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化; * IOUT2:电流输出端2,其值与IOUT1值之和为一常数; — 当DAC寄存器内容全为1时,IOUT1为最大,IOUT2=0; — 当DAC寄存器内容全为0时,IOUT1=0,IOUT2为最大; 为了保证输出电流的线性,应将IOUT1 及IOUT2接到外部运算放大器的输入端上。 * Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度; * Vcc:芯片工作电源,范围为+5V~+15V; * VREF:基准电压输入线,VREF的范围为-10V~+10V; * AGND:模拟信号地,为模拟信号和基准电源的参考地; * DGND:数字信号地,为工作电源地和数字逻辑地 3.4.2 D/A转换电路 图3.6 D/A转换电路 单片机的P2口输出信号给0832的8位并口数据输入,控制端口控制信号由P1口部分引脚控制输出。输出信号至运算放大器。 3.5 放大电路 运放与DAC0832连接的运放电路如图3-5所示。DAC0832输出的转换结果为电流形式,在本设计中利用一个高输入阻抗的线性运算放大器——TL061AMN将其转换为模拟电压信号。运放的反馈电阻通过Rfb端应用片内固有电阻。图中所示运算放大器U2的作用是反向器,是输出的电压与D/A转换的电压相同。 运放与DAC0832连接的运放电路如图3.6所示。 图3.7 运放与DAC0832连接电路图 3.6整机电路 3.8整机电路图 第 4 章 软件设计及仿真 4.1 软件流程图 图4.1 软件流程图 4.2 程序代码 见附录A 4.3 仿真设计 硬件电路完成以后,进行系统的软件设计,首先要分析系统对软件的要求,然后进行软件的总体设计,包括程序总体结构设计和对程序进行模块化设计。按照整体功能分成多个不同模块,单独设计、编程、调试然后将各个模块装配调试,组成完整的软件。在编程语言方面,选择的是C语言进行编程。 C语言是近年来国内外普遍使用的一种编程语言,C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,而且能直接对计算机硬件进行操作。既有高级语言的特点,又有汇编语言的特点。 4.3.1 VW简介 1.双平台 DOS版本,WINDOWS版本。其中WINDOWS版本功能强大。中文界面,英文界面可任选,用户源程序的大小不再有任何限制,支持ASM,C,PLM语言混合编程,具有项目管理功能,为用户的资源共享,课题重组提供强有力的手段。支持点屏显示,用鼠标左键点一下源程序中的某一变量,即可显示该变量的数值。有丰富的窗口显示方式,多方位,动态地显示仿真的各种过程,使用极为便利。本操作系统一经推出,立即被广大用户所喜爱。 2.双工作模式 1 软件模拟仿真(不要仿真器也能模拟仿真)。 2 硬件仿真。 双CPU结构,100% 不占用户资源。 全空间硬件断点,不受任何条件限制,支持地址、数据、外部信号、事件断点、支持实时断点计数、软件运行时间统计。 3.双集成环境 编辑、编译、下载、调试全部集中在一个环境下。 多种仿真器,多类CPU仿真全部集成在一个环境下。可仿真51系列,196系列,PIC系列,飞利蒲公司的552.LPC764.DALLAS320,华邦438等51增强型CPU。为了跟上形势,现在很多工程师需要面对和掌握不同和项目管理器、编辑器、编译器。他们由不同的厂家开发,相互不兼容,使用不同的界面。学习使用都很吃力。伟福 WINDOWS调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编Make、Build和调试工具并提供一个与第三方编译器的接口。 VW编译如图4.2所示 图4.2 VW编译界面图 4.3.2 PROTUES仿真 Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。 其特点是:支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等[14]。 1)提供软件调试功能 2)提供丰富的外围接口器件及其仿真 RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。这样很接近实际。在训练学生时,可以选择不同的方案,这样更利于培养学生。 3) 提供丰富的虚拟仪器 利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。 4) 具有强大的原理图绘制功能 在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程[15]。 系统的仿真结果图如下所示,初始状态如图4.3,当按下“输出增加”键时如图4.4,当按下“输出减小”键时如图4.5。 图4.3 仿真初始状态 图4.4 按下输出增加键时 图4.5 按下输出减小键时 总 结 本设计介绍了一种利用AT89C51单片机和DAC0832及放大器实现的程控放大器系统的设计。电路简介丶操作方便丶性能良好,而且其设计简练丶易懂,所用器件常见,电路模块具有通用性,整个系统具有更实用的意义和更强大的功能。在本课题的设计过程中主要完成以下工作: 完成开题报告,设计方案总结。学习PROTEL软件的使用,原理图的基本绘制方法。并根据题目要求,已经完成原理图绘制。通过查阅相关资料,独立学习仿真软件的使用方法,同时在PROTEUS环境中完成了仿真图的绘制。并且配合VW软件完成了程序的编写。经过反复调试,完成了运行效果的仿真。仿真效果良好,达到了设计预期的目的。软件的编写和调试。针对本课题要实现的基本功能编写了本课题一些基本程序,并在调试过程中不断的改善编程方法。 参考文献 [1]王炜.程控放大器及其典型应用的实例[J].中国科学院长春光学精密机械研究所.1998:89 ~94. [2]周春光.程控放大器在数据采集系统中的应用[J].电子技术应用.1987,3:77~80. [3]傅越千.程控放大器的设计与应用[J].宁波高等专科学校学报,2002,4: 37 ~40. [4]房慧龙.程控放大器的实现方法{J}.常州信息职业技术学院电子信息工程系.2004,8:52~56. [5]邵雄凯,张文灿,黄文斌.一种程控放大器的分析与实现[J].湖北工学院学报,1997,4:45~51. [6]吴建平,李建强.数字程控放大器设计与应用[J].成都理工学院报,2002,6:665~668.      [7]余锡存,曹国华编著.单片机原理及接口技术[M].西安:西安电子科技大学出版社,2000,7:27~28. [8]彭楚武主编.微机原理与接口技术[M].长沙:湖南大学出版社,2004,7: 200~204. [9]童诗白,华成英主编.模拟电子技术基础[M].北京:高等教育出版社,2001:310 ~316. [10]胡斌,蔡月红.放大器电路识图与故障分析轻松入门[M].北京:人民邮电出版社,2003.9:146~149. [11]肖景和.集成运算放大器应用精粹[M].北京:人民邮电出版社,2006:109. [12] 蔡锦福.运算放大器原理与应用[M].北京:科学出版社,2003:210 ~214. [13]Graeme,J.G.Optimizing Op Amp Performance,McGraw-Hill,New York,1997. [14]Rosenstark,S.Feedback Amplifier Principles.Macmillan New York,1986. [15]Roberge.J.K.Operational Amplifiers. Theory and Practice.John Wiley & Sons,New York,1975 致 谢 本论文是在陈洁老师的悉心指导下完成的,论文的选题由陈洁老师确定,在具体的设计过程中给予了我诸多的技术支持。工作中陈洁老师渊博的专业知识、勤奋严谨的治学精神和丰富的实际经验使我为之赞叹。在做本设计期间,我不仅学到了许多本专业的最新知识,也从各位师长身上学到了许多为人处事的方法。在此,向在本设计过程中给予我帮助的师长表示衷心的感谢! 这三年里,从身边的老师和同学中学习了许多知识,使我受益无穷。通过本次设计,对大学三年期间学习内容做了系统的总结。同时,也增强了实践中的动手能力、扩展了见识和积累了实践经验。 谨以此文献给所有关心和帮助我的师长、同学、朋友和家人! 附录A 程序 #include"reg51.h" #include"intrins.h" sbit dacs=P1^0; sbit dawr=P1^1; sbit lcdrs=P1^5; sbit lcdrw=P1^6; sbit lcde=P1^7; sbit lcd_flag=P0^7; void disp(void); 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_Assic[12]={ 0x30,0x31,0x32,0x33,0x34,0x35, 0x36,0x37,0x38,0x39,0x56,0x2e}; unsigned char dis[2][16]={{ 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; void main (void) { dacs=0; dawr=0; P2=0; disp(); while (1) { switch (P3) { unsigned char i; case 0xfe: lcd_delay(10); if (0xfe==P3) { val++; disp(); for (i=0;i<=100;i++) { lcd_delay(10); if (0xfe==P3)continue; else break; } for (i=0;;i++) { lcd_delay(10); if(0xfe==P3) { if (i%50==0) { val++; disp(); if (i==250) i=0; } } else break; } for (;;) { while (0xfe==P3); lcd_delay(10); if (0xfe==P3) continue; else break; } } break; case 0xfd: lcd_delay(10); if (0xfd==P3) { val--; disp(); for (i=0;i<=100;i++) { lcd_delay(10); if (0xfd==P3) continue; else break; } for (i=0;;i++) { lcd_delay(10); if(0xfd==P3) { if (i%50==0) { val--; disp(); if (i==250) i=0; } } else break; } for (;;) { while (0xfd==P3); lcd_delay(10); if (0xfd==P3) continue; else break; } } break; default: break; } } } void disp(void) { P2=val; lcd_deal(0,0,val/100); lcd_deal(0,1,val%100/10); lcd_deal(0,2,val%10); lcd_deal(1,2,(unsigned char)((float)val/256*5)%10); lcd_deal(1,3,11); //. lcd_deal(1,4,(unsigned char)((float)val/256*50)%10); lcd_deal(1,5,(unsigned int)((float)val/256*500)%10); lcd_deal(1,6,10); //V _1602(); } void lcd_delay(unsigned int k) { // 12M unsigned int i0; unsigned char i,j; for(i0=0;i0<k;i0++) for(i=5;i>0;i--) for(j=97;j>0;j--); } void _1602(void) { unsigned char *p; lcd_init(); //初始化 lcd_delay(10); lcd_moveto(0,0); for(p=dis[0];p<dis[0]+16;p++) { lcd_putchar(*p); } lcd_moveto(1,0); for(p=dis[1];p<dis[1]+16;p++) { lcd_putchar(*p); } } void lcd_deal(unsigned char i,unsigned char j,unsigned char dat) { dis[i][j]=lcd_Assic[dat]; } bit lcd_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; //返回标志,判断是否LCD忙碌 } void lcd_putcommand(unsigned char command) //写指令 RS=Low,RW=Low,E=High:写指令 { while (lcd_busy()); //判断是否忙碌 lcdrs=0; lcdrw=0; lcde=0; P0=command; lcde=1; lcde=0; } void lcd_putchar(unsigned char putchar) //写数据 RS=High,RW=Low,E=High:写数据 { while(lcd_busy()); //判断是否忙碌 lcdrs=1; lcdrw=0; lcde=0; P0=putchar; lcde=1; lcde=0; } void lcd_moveto(unsigned char x,unsigned char y) //显示字符的位置:第x行y列(X=1或2,Y=0~15) { if (x==0) lcd_putcommand(0x80|y); //第一行,并初始化从第y-1个字符开始显示 if (x==1) lcd_putcommand(0xc0|y); //第二行,并............ } void lcd_init(void) { lcd_putcommand(0x38); lcd_delay(1); //LCD为2行,5×7字 lcd_putcommand(0x0c); //纯粹是为了显数据,关闭光标比较好 lcd_delay(1); lcd_putcommand(0x06); lcd_delay(1);//每次右移一字符 } 附录B 系统原理图 25
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服