运算放大器增益的程序控制015组实验报告_第1页
运算放大器增益的程序控制015组实验报告_第2页
运算放大器增益的程序控制015组实验报告_第3页
运算放大器增益的程序控制015组实验报告_第4页
运算放大器增益的程序控制015组实验报告_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、 摘 要:本设计报告是我们小组对于单片机小系统的设计与实际应用的情况的展示。其主要目的在于阐述我们小组如何通过运用单片机,设计并实现了数字化自动增益控制放大电路和液晶显示。报告涵盖了我们小组对这个项目的设计思想,原理分析,模块分解,具体程序实现,外部电路设计与焊接,功能调试,问题解决等内容,并在最后提出我们对这个项目的理解和感受。在报告的开头第一二两部分,我们给出了实验的总体说明,包括实验的目的,总体的设计思路,以及我们的实际完成情况,对于一些报告中所涉及的专业的术语,我们也给出了一定的解释和说明。本次实验共分为两个板块,基础部分的增益可数字化控制的线性放大器与拓展部分的液晶显示。在报告的第二

2、到第四部分,我们从软件,硬件以及原理层面等多个角度对两个板块实验的全过程进行了全方面立体式的剖析。特别的,报告中强调了我们的一些对于细节的处理,比如延时消抖等。报告的第五至第七部分我们还对实际实验操作与测试的环境给与了说明,这其中也包括开发过程中我们所遇到的困难,以及一些关键问题的发现与解决。关键词:单片机;运算放大器;增益;液晶显示;并口扩展ABSTRACTThis report displays how we design the Single Chip Micyoco for certain uses and put it into practice. The main obejecti

3、ve is to show how we compose a digital self-moving operational amplifier which is gain controllable. This report includes our designing idea, principle analysis, module decomposition, program realization, outer circuit design and jointing, function debugging, problem solution and so on. We also list

4、 our comprehension and discussion at the end.In the first two parts, the general explanation of the experiment is given, which consists of experiment objectives, designing idea and the condition of realization. As to those professional terms, they are also explained in our report.This experiment is

5、made up of two major parts. The basic mission is about the digital self-moving operational amplifier which is gain controllable. The advanced mission includes the LCD screen. In the second to fourth part, we operate a wide, deep analysis on the experiment from software, hardware, principle and other

6、 aspects. Especially, we emphasize on some details such as anti-tremble delay in our report.In the fifth to seventh parts, the experimental and examing environment are mentioned. The problems we met with and how we conquered them are also stated in this part.KEYWORDS Single Chip Micyoco (SCM); opera

7、tional amplification circuit; gain; LCD screen; parallel port extension上海交通大学 电子信息与电气工程学院地 址:东川路800号邮 编:200240目次1. 概述11.1 编写说明11.2 名词定义11.3 缩略语12. 系统总体说明22.1 课题任务规定的设计要求22.2 实际完成后的功能22.3 系统的设计原理与分析22.3.1 系统的设计原理和总体结构22.3.2 系统的功能43. 系统的硬件结构53.1 硬件总体结构53.2 <基础部分增益可数字化控制的线性放大器>描述53.2.1 功能描述53.2.2

8、 接口定义63.2.3 技术要求63.2.4 实现方式63.3 <拓展部分液晶显示>描述73.3.1 功能描述73.3.2 接口定义73.3.3 技术要求73.3.4 实现方式74. 系统的软件结构94.1 软件总体结构和功能94.2 重要的全局变量(部分直接取自示例程序t_mini.c)94.3 流程逻辑104.4 <键盘扫描和数码管驱动、放大电路控制模块>描述104.4.1 功能描述104.4.2 输入输出项描述104.4.3 数据结构124.4.4 调用函数说明134.4.5 算法144.5 <液晶显示增益模块>描述154.5.1 功能描述154.5.

9、2 输入输出项154.5.3 数据结构164.5.4 调用函数说明164.5.5 算法和原理165. 系统功能及技术指标测试205.1 测试项目205.1.1 基础部分:增益可数字化控制的线性放大器205.1.2 拓展部分:液晶显示205.2 测试的资源205.2.1 测试所用设备:205.2.2 测试环境205.3 测试方法205.4 测试结果及分析205.4.1 基础部分216. 开发工具226.1 硬件开发工具226.2 软件开发工具227. 调试过程238. 致谢249. 参考资料2510. 附录2610.1 程序清单2610.2 课程学习心得和建议意见26第45页上海交通大学 电子信

10、息与电气工程学院1. 概述本组实验项目分为基础部分和拓展部分。基础部分是实现一个增益可数字化控制的线性放大器电路。其功能是通过单片机小系统控制的按键输入,控制1V的输入信号增益值(从0.11.5倍)并输出,并且在数码管上显示其增益倍数。拓展部分是液晶屏显示。显示内容为基础部分的放大倍数。1.1 编写说明本报告主要说明我们小组完成此次项目的基本思想,软硬件的设计和实现方法,以及遇到的问题和解决办法。作者目的在于让读者对我们小组整个实验的设计和实现过程有更深的了解。本报告适读对象为实验指导老师、本小组和其它小组成员、以及其它单片机设计爱好者。1.2 名词定义单片机小系统:由单片机、存储器、数码显示

11、管等构成的小型系统。可变增益放大器电路:本实验中是指,由运算放大器(由LM741实现),模拟开关(由CD4066实现)和各个电阻组成的可以调节放大倍数的运算放大电路。按键的抖动和消抖:每一个按键动作会引起多个脉冲信号,称为抖动。用上升沿或下降沿触发的形式消除这种抖动的方法,成为消抖。按键1、按键2、按键3:单片机小系统上的三个微动开关P10 ; P11、P12分别称为按键1、按键2、按键3。 七段显示数码管:abcdefg七段和dp小数点段,通过给某些段加上驱动电压或电流来使这些段发光。1.3 缩略语运放:运算放大器。单片机:单片机小系统。数码管: 七段显示数码管。2. 系统总体说明2.1 课

12、题任务规定的设计要求设计并实现一个增益可数字化控制的线性放大器电路。其功能是通过单片机小系统的按键输入,控制1V的输入信号增益值的等级并将其输出,同时在晶体管上显示倍数。技术指标:1) 最低增益(绝对值,可以是反相增益)小于0.15倍;最高增益(绝对值)大于1.45倍;2) 放大器的增益至少包括15个等级:从0.1倍至1.5倍,以0.1为间隔共15种;3) 各等级的实际增益值(绝对值)与标准值比较,误差应小于3%,且越小越好; 列出设计课题的各项基本功能和指标要求2.2 实际完成后的功能对照设计要求,简述实际实现的主要功能。如有超出基本要求规定的新功能,应专项说明。详细测试数据一般不在此节列出

13、,放到“系统功能及技术指标测试”一章中。基础部分:增益可数字化控制的线性放大器能够通过单片机小系统的按键输入,控制1V的输入信号增益值的等级并将其输出,同时在晶体管上显示倍数。技术指标:1)最低增益为0.1倍;最高增益为1.5倍;2)放大器的增益包括15个等级:从0.1倍至1.5倍,以0.1为间隔共15种;3)各等级的实际增益值(绝对值)与标准值比较,误差在3以下。拓展部分:液晶显示仅实现了液晶字符的显示和屏幕的翻滚,对于数字放大增益并没有在液晶屏上显示出来。2.3 系统的设计原理与分析2.3.1 系统的设计原理和总体结构对系统的设计原理和总体结构进行阐述,适当地使用图示说明法建议:本文中的图

14、都选择嵌入式对象形式,具体操作方法是在“插入”-“对象”中选择“microsoft word 图片”,这样做的好处是图容易被编辑处理基础部分:增益可数字化控制的线性放大器此部分是在基本放大电路的基础上,通过对反相比例器的拓展和与单片机的对接实现的。通过单片机的按键输入,改变单片机的数字信号输出,用此数字信号控制数字开关的开合,以数字开关的开合控制电阻并入电路与否,由此改变电路的参数,并最终实现增益的改变。系统结构图如图2.3.1-1;单片机小系统控制数字开关控制运算放大电路输出信号输入信号图2.3.1-1拓展部分:液晶显示此部分是通过单片机与液晶屏的对接实现的。单片机通过8255扩展出PB端口

15、,并使用P34,P32,P16控制液晶模块,显示放大倍数。系统结构图如图2.3.1-2。单片机放大电路8255液晶总线扩展PA控制控制 图2.3.1-22.3.2 系统的功能对系统的各项功能进行简要阐述,如可分为“可变增益放大器”、“键盘与显示”、“增益控制”等基础部分:增益可数字化控制的线性放大器可变增益放大器:由单片机和放大电路组成,通过按键控制单片机的数字信号输出,并由该信号控制放大电路的参数变化,使电压增益从0.11.5之间改变。键盘与显示:用按键14控制增益的倍数。按键1为增加一挡(一挡为0.1倍),按键2为减小一挡,按键3为增加3档,按键4为减小3档。最小为0,最大为1.5。超过此

16、范围的数将被视为非法并将不予读入数据。用2位的数码管显示增益放大倍数,包括一位整数(以及整数后面的小数点)和一位小数。增益控制:通过键盘按键的键入调节放大的倍数。主要由单片机实现。拓展部分:液晶显示显示放大倍数:通过基础部分完成的单片机的数字信号输出,控制液晶屏显示放大倍数。3. 系统的硬件结构3.1 硬件总体结构给出硬件总体结构的框图和说明,硬件模块的列表,合理进行模块划分硬件总体结构由三部分构成:单片机,放大电路和液晶屏显示电路。单片机和基本放大电路的连接构成了基础部分:增益可数字化控制的线性放大器;而单片机和液晶屏显示电路的连接构成了拓展部分:液晶显示。放大电路单片机小系统液晶屏显示电路

17、 连接组成连接组成增益可数字化控制线性放大器液晶显示单元3.2 <基础部分增益可数字化控制的线性放大器>描述标题中的< >部分应换成实际的模块名称,下同对有必要单独详细说明的硬件模块,进行专门描述,重点应是除单片机小系统外的自行完成 部分。从内容完整的角度考虑,单片机电路部分也应给予适当的描述。以下给出建议的说明项目3.2.1 功能描述人机界面: 由按键1(P10)、按键2(P11)、按键3 (P12)按键4 (P13)和数码显示管组成。按键1和按键2为用户提供调节增益的功能,按键1为增加一挡(一挡为0.1倍),按键2为减小一挡,按键3为增加3档,按键4为减小3档,。数

18、码管则用于显示当前放大倍数。3.2.2 接口定义放大电路单元和单片机控制增益倍数单元间的接口: P14,p16,p32,p34,为单片机控制增益倍数单元向放大电路单元输出的接口。4066的管脚1c,2c,3c,4c则为放大电路单元的输入接口。其对应关系如下:P144c(控制80千欧的电阻)p163c(控制40千欧的电阻)p322c(控制20千欧的电阻)p341c(控制10千欧的电阻)3.2.3 技术要求1 输出电压增益误差不能大于3。由于器件并非时理想的,所以有结点电阻、CD4066导通电阻等存在,并将产生的误差。为了减小它们的影响,把输出电压增益误差控制在3内,R1、R2、R3、R4、Rf应

19、尽量大。但是又由于LM741不是理想运放,其输入电阻不为无穷大,输出电阻不为0,Au也不是无穷大,所以选取R1、R2、R3、R4、Rf时阻值又不能过大。经过理论计算,我们选取的R1、R2、R3、R4、Rf的阻值依次为80K,40K,20K,10K和8K。2 按键消抖:按键输入的扫描由中断函数控制。也就是说,每一个中断信号到来时,有按键按下,则放大倍数就会自动加一。而时钟信号频率对于人的动作而言是很高的,所以若不对按键进行消抖处理,一个按键的动作,将会触发若干个记数信号,产生错误的输入。理想的消抖做法是采用计数器上升沿触发。由于一个按键的动作只有一个上升沿,这样设计就能保证一个按键动作只产生一个

20、记数信号。但是在实际操作中,我们只是通过对按键进行了延时处理,通过实际的测试,多次的试验,我们最终将延时消抖定在200ms,应用于实际电路中,测试的效果还是比较理想的。3.2.4 实现方式对模块的具体实现方式进行详细描述,主要是电路设计说明,有些情况要有必要的定量计算;必要时可包括主要器件的介绍3.2.4.1 单片机控制增益倍数单元:本单元的实现我们采用了四个微动开关(按键1、按键2、按键3和按键4)和四个数码管来实现。本单元又分为人机界面和输入信号读取与转换两部分。(1) 人机界面: 按键14供用户输入放大倍数。按键按下后,通过对输入信号的读取与转换,改变输出的数字信号,同时在数码管上显示。

21、(2) 输入信号读取与转换部分: 由单片机完成。经过消抖后的按键读入信号,通过读入信号对计算和转换,产生两部分输出信号。一部分通过接口传到下一单元,另一部分则传到数码管,转化为数字显示。具体实现方法主要涉及软件部分,在此不再赘述。(3) 输出接口:单片机的作用在于输出控制电子开关的数字信号,因此输出接口必不可少。由于有4个开关,所以我们采用的是四线输出,输出口分别是p14,p16,p32,p34。这样数字信号就能通过传输线传输至下一单元。3.2.4.2 放大电路单元:(1) 接口:由单片机输出的数字信号要被正确接收才能正确控制数字开关。在这一单元中,我们从CD4066的1c,2c,3c,4c端

22、口中接出4条导线,作为接受数字控制信号的接口。它们与单片机输出接口的对应关系为:P144c(控制80千欧的电阻)p163c(控制40千欧的电阻)p322c(控制20千欧的电阻)p341c(控制10千欧的电阻)(2) LM741放大电路的核心是LM741运算放大器。在本次实验中,我们采用的是反相放大的方法,通过改变外接阻抗的阻值来达到改变放大倍数的目的。外接阻抗由4个阻值互不相同的电阻并联而成,并在每个电阻上串联一个开关,即CD4066的4个in和out端口。一个开关有开/闭两种状态,4个开关组合在一起就有16种不同的状态,因此外接阻抗可以有16个不同的阻值,可满足15个增益等级的要求。反相放大

23、器的原理如图3.2.4.2-1图3.2.4.2-11在我们的设计中,Rf为固定电阻,Rl为4个电阻R1,R2,R3,R4并联而得,则由并联电阻阻值公式1/Rl=1/R1+1/R2+1/R3+1/R4,以及Afl-1/Rl可知R1,R2,R3,R4比值之比为1:2:4:8。由于实验室中免费供应的电阻阻值的局限性和较大的误差,我们决定选取Rf为8k,R1为10k,R2为20k,R3为40k,R4为80K。Rf,R1,R2,R3,R4的接法见图3.2.4.2.2-2 图3.2.4.2.2-22图3.2.4.2-2中的4个开关均由CD4066控制,其中4个开关均断开时输出电压为零,即断开,故共有15种

24、有效状态。3.2.4.2.1 CD4066:CD4066在单片机的控制下可改变最多4个开关的开/闭状态。CD4066的引脚定义见图3.2.4.2.3-1图3.2.4.2.3-13CD4066的VCC引脚接入+5V的供电电压,当1C连接高电平时1A和1B之间连通,低电平时1A和1B断开。3.2.4.2.2 最终电路图将LM741的电路图和CD4066的电路图连在一起就是最终电路图。我们的电路板上4个引脚分别为+5V,-5V,+1V和地线,而输出端用一根黑色导线悬在电路板上。最终电路图见图3.2.4.2.4-1图3.2.4.2.4-13.3 <拓展部分液晶显示>描述3.3.1 功能描述

25、本模块从单片机接收数据,实现液晶显示基础部分放大倍数的功能。3.3.2 接口定义引 线 号符 号名 称功 能1Vss接地0V2VDD电路电源5V±10%3VEE液晶驱动电压保证VDD-VEE=4.55V电压差4RS寄存器选择信号H:数据寄存器 L:指令寄存器5R/W读/写信号H:读 L:写6E片选信号下降沿触发,锁存数据7|14DB0|DB7数据线数据传输表3.3.2-1 液晶模块功能引用表3.3.3 技术要求1、 能够正常与单片机交换数据。2、 能够正常显示文字和符号,并能够调节对比度。3.3.4 实现方式由于我们拿到的液晶模块已经将液晶控制器HD44780和驱动器HD44100封

26、装在一起,并给出了标准化的接口,所以硬件部分要做的就是简单的供电、接地和实现与单片机交换数据的接口。图3.3.4-11234567891011121314P3P1口插座DB口插座P32P33P34TVCC电位器液晶的引脚1-14图3.3.4-14. 系统的软件结构4.1 软件总体结构和功能1总体功能1.通过外部开关控制内部变量增减,以实现各级放大机显示。2.液晶显示增益。2体系结构如图4.1-1所示系统初始化数码管显示中断键盘扫描及数据处理调用调用主循环及显示增益液晶显示显示模块 图4.1-1 主程序基本结构图3功能模块键盘扫描模块、数码管驱动模块、放大器增益控制模、液晶屏驱动模块。阐述整个系

27、统的软件体系结构,给出软件总体结构的框图和功能说明,各软件功能模块的列表4.2 重要的全局变量(部分直接取自示例程序t_mini.c)1、按键定义:单片机小系统中的四个按键分别使用了P1口的四个引脚sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4=P13;2、输出端口定义:本系统中使用了P14、P16、P32以及P36作为输出端口控制电子开关4066。在拓展部分的实验中使用了8255扩展的PB0PB7作为输出端口控制液晶模块,使用P34、P32、P16分别控制液晶模块的片选、使能和读写 ,使用P14作为8255的复位控制。sbit p14

28、= P14;/控制80千欧的电阻sbit p16 = P16;/控制40千欧的电阻sbit p32 = P32;/控制20千欧的电阻sbit p34 = P34;/控制10千欧的电阻sbit RS=P34;sbit EN=P32;sbit RW=P16;sbit res8255=P14;3、 0.1s软件定时器计数 unsigned char clock;4、0.1s软件定时器溢出标志,位变量bit clock1s_flag;5、 数码管位驱动和指示灯驱动信号输出缓存,定义了一个可位寻址的变量unsigned char bdata output_sel;sbit led_1 = output_

29、sel5;sbit led_2 = output_sel6;sbit led_3 = output_sel7;sbit led_4 = output_sel4;6、 数码管扫描驱动指针,为测试外部存储器(U3 6264),特使用xdata类型 unsigned char xdata digi_scaner;7、 测试用计数器,为测试外部存储器(U3 6264),特使用xdata类型 unsigned int xdata test_counter;8、 测试用计数值十进制表示,为测试外部存储器(U3 6264),特使用xdata类型 unsigned char xdata digi4; 详细描述

30、重要的全局变量的功能含义和类型结构定义4.3 流程逻辑用图表(例如流程图、判定表等)辅以必要的说明来表示程序的逻辑流程。$4.4 <键盘扫描和数码管驱动、放大电路控制模块>描述 对有必要单独详细说明的模块(尤指原示例程序内容以外的自行添加或修改完成的部分),进行专门描述以下给出建议的说明项目,如果某项目无相关内容,则删去该项标题4.4.1 功能描述本模块实现如下功能:1、 键盘防抖扫描2、 顺序扫描驱动数码管3、 计算放大倍数,通过P14、P16、P32和P34口输出高低电平控制4066的通断,进而控制放大电路的放大倍数 给出软件模块要实现功能的详细描述。4.4.2 输入输出项描述

31、4.4.2.1 输入项KEY1、KEY2、KEY3、KEY4KEY14分别用来代表四个按键SW2、SW3、SW4、SW5。声明:sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4=P13;数据类型:sbit。数据值:0/1。数据来源:P10P13。4.4.2.2 输出项1 Count放大倍数声明:int count; /全局变量,记录增益数据类型:int。数据值:015。数据来源:计算。2 p14,p16,p32,p344066控制端口声明:sbit p14 = P14;/控制80千欧的电阻sbit p16 = P16;/控制40千欧的电阻s

32、bit p32 = P32;/控制20千欧的电阻sbit p34 = P34;/控制10千欧的电阻数据类型:sbit。数据值:0/1。数据来源:程序赋值。3 digi0、digi1、digi2、digi3数码管显示值。声明:unsigned char xdata digi4;数据类型:unsigned char xdata。数据值:0F,0.,1.,-,_, 。数据来源:digi0不显示,digi1显示-,digi2 、digi3由程序赋值。 给出对每一个输入输出项的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、输入数据的来源等等。4.4.3 数据结构本模块中使用到的数据结构按照功

33、能分类主要有以下几种,现分别介绍。详细描述本软件模块中一些全局变量、记录状态变量、结构和数组或各寄存器的使用说明。4.4.3.1 计时器及中断相关时间常量#define V_TH0 0xee #define V_TL0 0x00#define V_T1s 0xfdV_TH0和V_TL0分别为时间常数的高8位和低8位,其计算方法如下:,其中T为1个机器周期的长度。从式中解出x,转换成2进制,高8位为V_TH0值,低8位为V_TL0值。V_T1s代表要达到1秒钟所需的中断次数。因为中断间隔时间为5ms,故取200。中断开关TR0=1时,计时器T0中断开。TR0=0时,计时器T0中断关。软件计时un

34、signed char clock1s;bit clock1s_flag;clock1s为中断计数器,当其等于V_T1s时1秒钟计时到,计时器溢出标志clock1s_flag赋值为1,clock1s重新赋值为0,下一秒计时开始。4.4.3.2 放大倍数计算和显示、输出相关放大倍数int count;/全局变量,记录增益count为放大倍数,根据用户的需要自增或自减数码管显示digi0、digi1、digi2、digi3digi0时钟显示0digi1显示-digi2为个位数,digi3为小数点后一位。具体计算方式为:digi2 = count/10+16; /*计算十位数 */digi3 = c

35、ount%10; /*计算个位数 */放大倍数输出sbit p14 = P14;/控制80千欧的电阻sbit p16 = P16;/控制40千欧的电阻sbit p32 = P32;/控制20千欧的电阻sbit p34 = P34;/控制10千欧的电阻为避免和8255冲突,ALPHA选择P35端口。p14,p16,p32.p34分别控制4066四个开关的通断。4.4.4 调用函数说明1、 主函数:timer0() interrupt 1 using 0时钟中断服务程序,每5ms执行一次,内含键盘扫描、数码管驱动、数据计算等本模块主要代码。输入项:无。输出项:无。2、 调用的本模块相关函数(以下资

36、料和代码来自示例程序t_mini.c):unsigned char NUMTOSEG7(unsigned char DATA)七段码显示器译码程序,提供从字符到7段译码结果的转换功能。输入项:DATA,数据类型unsigned char,要显示的数字或字符。输出项:7段译码结果 ( D70 = PGFEDCBA )。unsigned char NUMTOSEG7(unsigned char DATA)4066开关控制程序,在相应放大倍数下打开或关闭开关。输入项:count,数据类型int ,放大倍数。输出项:无。 给出本软件模块调用的其它函数的说明,包括对函数功能、输入输出项的详细说明。4.4

37、.5 算法4.4.5.1 键盘扫描和消抖/* 0.1秒钟软定时器计数 ,延时消抖*/if (+clock>=V_T1s)clock_flag = 1; /*当0.1秒到时,溢出标志置1 */clock = 0;放大倍数的计算程序中放大倍数以变量count保存,根据用户按键的情况,count在合理范围内自增或自减。4.4.5.2 放大倍数的控制和显示程序通过p14,p16,p32,p34代表的端口输出高低电平,控制4066各开关的通断来控制放大倍数。count的值介于0和15之间,其4位二进制值分别送入 。使用NUMTOSEG7函数计算各开关的二进制值,并实现开关的开闭。代码如下:unsi

38、gned char NUMTOSEG7(unsigned char DATA) unsigned char AA; switch (DATA) case 0: AA=0xc0;break; /* 0*/ case 1: AA=0xf9;break; /* 1*/ case 2: AA=0xa4;break; /* 2*/ case 3: AA=0xb0;break; /* 3*/ case 4: AA=0x99;break; /* 4*/ case 5: AA=0x92;break; /* 5*/ case 6: AA=0x82;break; /* 6*/ case 7: AA=0xf8;br

39、eak; /* 7*/ case 8: AA=0x80;break; /* 8*/ case 9: AA=0x90;break; /* 9*/ case 10: AA=0x88;break; /* A*/ case 11: AA=0x83;break; /* B*/ case 12: AA=0xc6;break; /* C*/ case 13: AA=0xa1;break; /* D*/ case 14: AA=0x86;break; /* E*/ case 15: AA=0x8e;break; /* F*/ case 16: AA=0x40;break; /* 0.*/ case 17: A

40、A=0x79;break; /* 1.*/ case '-':AA=0xbf;break; /* 破折号*/ case '_':AA=0xf7;break; /* 下划线*/ case ' ':AA=0xff;break; /* 消隐*/ default: AA=0xff; return(AA);七段数码管的显示值由数组digi4提供,其中前两位没有用到,将digi0时钟显示为0,digi1显示为-。digi2、digi3分别取times十位和个位,其中digi2后需要加小数点,由于使用的共阳极数码管,若可归纳出算法,则详细说明本软件模块所选用的

41、算法,具体的计算公式或处理步骤。4.5 <液晶显示增益模块>描述4.5.1 功能描述本模块实现液晶屏的驱动,放大倍数在液晶屏上的再显示。4.5.2 输入输出项4.5.2.1 输入项本模块主体部分与<键盘扫描和数码管驱动、放大电路控制模块>共享中断函数。4.5.2.2 输出项液晶模块的显示内容:HELLO WORLD; HELLO WORLD;声明:uchar LCD_Disp_Buf116='H','E','L','L','O',' ','W','O&

42、#39;,'R','L','D','!','!',' ',' ',' 'uchar LCD_Disp_Buf216='H','E','L','L','O',' ','W','O','R','L','D','!','!',' ',' '

43、;,' '使用unsigned char 类型的全局变量,在运行期间始终显示。数据来源:无符号字符数组。4.5.3 数据结构本模块中使用到的数据比较简单,故不再赘述。4.5.4 调用函数说明1、 液晶片选函数void En_Toggle(void);本函数通过对液晶的EN引脚的控制选中液晶模块。输入项:无输出项:无2、 液晶数据写入函数void Write_Data(unsigned char datas);本函数向液晶写入数据。输入项:datas,要写入的数据值,数据类型:unsigned char。输出项:无3、 液晶命令写入函数void Write_Command(uns

44、igned char command);本函数向液晶写入命令输入项:command,要写入的命令,数据类型:unsigned char。4、 放大倍数显示的函数unsigned char display_num(unsigned char n);本函数将要显示的数字转化为相应的ASCII码。输入项:n,要显示的数字,数据类型:unsigned char输出项:abc,数字所对应的ASCII码,数据类型:unsigned char4.5.5 算法和原理4.5.5.1 液晶模块显示算法本模块仅涉及到显示的数字转化为相应的ASCII码。使用switch语句完成,代码如下:unsigned char

45、abc;switch (n)case 0:abc='0'break;case 1:abc='1'break;case 2:abc='2'break;case 3:abc='3'break;case 4:abc='4'break;case 5:abc='5'break;case 6:abc='6'break;case 7:abc='7'break;case 8:abc='8'break;case 9:abc='9'break;defaul

46、t:break; return abc;4.5.5.2 并口扩展芯片8255和液晶模块HD44780的使用原理及编程1、8255的使用8255为一并口扩展芯片,有A、B、C三个8位I/O端口和一个8位数据总线。本系统使用74HC138三态八位译码器连接8255与单片机,74HC138的引脚与8255的片选引脚相连,地址总线的高三位为单片机的P20,P21,P22,全部置时选中8255,故A、B、C三个端口和控制字写入分别对应的地址声明如下:#define A8255 XBYTE0XE000#define B8255 XBYTE0XE001#define C8255 XBYTE0XE002#de

47、fine D8255 XBYTE0XE003本例中由口输出数据和命令。2、HD44780的使用原理及编程和编程有关的三个引脚定义如表5.1:表5.1:HD44780引脚定义(部分)4引脚号缩写定义说明4RS寄存器选择信号H:数据寄存器 L:指令寄存器5R/W读/写信号H:读 L:写6E片选信号下降沿触发,锁存数据其中E为使能信号,读操作中高电平有效,写操作中下降沿有效。结合RS、R/W的取值,我们有如下的指令表(表5.2):表5.2:HD44780指令表5指令名称 指 令 码 说 明执行周期FCP=250KHZRS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0清 屏L

48、 L L L L L L L L H清除屏幕,置AC为零1.64ms返 回L L L L L L L L H X设AC为零,显示回原位,DDRAM内容不变1.64ms输入方式设 置L L L L L L L H I/D S设光标移动方向并指定整体显示是否移动40us显示开关控 制L L L L L L H D C B设整体显示开关(D),光标开关(C),及光标位的字符闪耀(B)40us移 位L L L L L H S/C R/L X X移动光标或整体显示,同时不改变DDRAM内容40us功能设置L L L L H DL N F X X设接口数据位数(DL),显示行数(L),及字型(F)40us

49、CGRAM地址设置L L L H ACG设CGRAM地址,设置后CGRAM数据被发送和接收40usDDRAM地址设置L L H ADD设DDRAM地址,设置后DDRAM数据被发送和接收40us读忙信号(BF)及ACL H BF AC读忙信号位(BF)判断内部操作正在执行并读地址计数器内容0us写数据CG/DD RAMH L 写数据写数据到CG或DDRAM40usTadd=6ns读数据由CG/DD RAMH H 读数据读数据由CG或DDRAM40usTadd=6nsI/D 1:增量方式, 0:减量方式S 1:移位S/C 1:显示移位,0:光标移位R/L 1:右移,0:左移DL 1:8位,0:4位

50、N 1:2行,0:1行F 1:5×10,0: 5×7BF 1:内部操作,0:接收指令RS :寄存器选择R/W :读/写DDRAM : 显示数据RAMCGRAM: 字符生成RAMAC: 用于DD和CGRAM地址的地址计数器执行周期随主频率改变而改变例如:当Fosc或fcp为270KHZ40us×250/270=37 us实际接线中,我们将单片机的P34,P32,P33与R/W、RS、E连接,PB的07号针与DB07连接,这样就可以通过8255控制液晶模块的工作了。写入命令时,RS、R/W均置0,命令通过PB口写入,再由E的下降沿变化使能。写入数据时,RS、R/W分别

51、置1、0,数据通过PB口写入,再由E的下降沿变化使能。读出数据时,RS、R/W均置1,数据通过PB口读入。在进行这些工作之前,必须对液晶模块进行初始化。HD44780的初始化流程如图: 电 源 开 VDD 上升到4.5V后等待>15 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 × × × ×等待>4.1ms RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 × × × ×等待>100us

52、RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 × × × × 检查忙标志或延时40us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 N F × ×检查忙标志或延时40us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 0 × × 检查忙标志或延时40 us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0

温馨提示

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

评论

0/150

提交评论