科技创新[2]第074组设计报告

上传人:阳*** 文档编号:152192043 上传时间:2022-09-15 格式:DOC 页数:66 大小:1.47MB
收藏 版权申诉 举报 下载
科技创新[2]第074组设计报告_第1页
第1页 / 共66页
科技创新[2]第074组设计报告_第2页
第2页 / 共66页
科技创新[2]第074组设计报告_第3页
第3页 / 共66页
资源描述:

《科技创新[2]第074组设计报告》由会员分享,可在线阅读,更多相关《科技创新[2]第074组设计报告(66页珍藏版)》请在装配图网上搜索。

1、 完成时间:2006-5-30科技创新2设计报告项目名称: 可控增益放大器,函数信号发生器及其控制系统 设计小组编号:第74组设计小组名单:王愈喜(组长)徐昊王永哲汤逸纯姓名班级学号具体负责的工作联系方式王愈喜F04030285040309811总体设计、软件编程、实验报告撰写徐昊F04030295040309815软件编程、实验报告撰写王永喆F04030285040309803硬件设计与焊接实验报告撰写汤逸纯F04030295040309835硬件设计与焊接实验报告撰写摘 要:本设计报告包括了可控增益放大器,函数信号发生器,液晶显示三个模块的主要功能、系统框图,系统硬件以及软件的设计和实现方

2、法,系统的技术指标,调试分析,针对用户操作的详细说明,对系统中某几个部分的深入扩展研究,心得体会,问题调试和实物照片等等,包括了与此相关的理论和实践中的各种问题。关键词: 可控增益放大器,函数信号发生器,液晶显示Abstract:This report includes detailed explanations of inner workings of the controllable gain amplifier, signal generator and LCD displayer; which include the designing and implementations of i

3、ts control systems, major functions, required hardware and software and technical index of system. The design specifications, plus the debugging process and testing, as well as detailed user-oriented instructions manual, and pictures of object are also attached in the report.KEYWORDS:controllable ga

4、in amplifier, signal generator LCD displayer 目次1. 概述 11.1 编写说明11.2 名词定义12. 系统总述22.1 系统组成22.2 系统的主要功能23. 增益可控放大器(基础部分)的硬件设计 33.1 主要功能33.2 系统设计指标33.3 设计原理33.4 主要部分设计及参数43.4.1 主要元件4 3.4.1.1 主要元件CD40664 3.4.1.2主要元件LM74163.4.2 外围电路设计 64. 液晶显示(拓展部分一)的硬件设计84.1主要功能84.2 系统设计指标84.3 主要部分设计和参数84.3.1 主要元件84.3.1.

5、1点阵式LCD显示器84.3.1.2 芯片825594.3.2 液晶模块整体电路设计11 4.3.2.1 电路图114.3.2.2 电路说明125.函数信号发生器(拓展部分二)的硬件设计135.1主要功能135.2主要器件135.3 电路具体实现及参数136.单片机子系统的软件设计156.1软件的主要功能156.2 软件总体框架156.3 全局变量说明166.4 主要模块描述196.4.1 定时中断0描述196.4.2 主菜单模块函数描述206.4.3 可控增益线性放大器模块函数描述216.4.4 信号发生器模块函数描述256.4.5 液晶模块函数描述287. 致谢358 参考文献369. 附

6、录A 开发环境37 9.1 软件环境37 9.2 硬件环境3710. 附录B 软件程序清单3811. 附录C 系统操作说明书51 11.1 系统用途5111.2 简要技术指标5111.3 使用前准备5111.4 操作方法和步骤5111.5 注意事项5212. 附录D 测试和分析5312.1 测试电路的搭建5312.2 测试项目和方法5312.3 测试的资源5312.4 测试结果及分析5312.4.1 可控增益放大器的实际增益5312.4.2 液晶显示模块5412.4.3 函数信号发生器模块5513.附录E 心得体会和问题调试5613.1 心得体会5613.2 问题与调试5714. 附录F 实物

7、图6060 / 661概述1.1编写说明此报告为大二下学期科技创新关于单片机实现可控增益线性放大器、函数信号发生器、液晶屏幕显示的设计报告。供对该系统感兴趣的读者阅读。1.2名词定义单片机:包括CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(串行口、并行输出口等)的一块集成电路。七段显示数码管:abcdefg七段,通过给某些段加上驱动电压或电流来使这些段发光。占空比:在信号的一个周期内,高电平信号所占的时间比例。可控增益放大器:将输入的直流电压转换成增益后的直流电压输出,其中增益可控制函数信号发生器:产生三角波,方波,正弦波等信号2.系统总述2.1系统组成本系

8、统主要由可控增益放大器,函数信号发生器,液晶屏幕显示三个模块组成系统组成框图如图2.1所示: 图2.1 系统组成框图 2.2系统的主要功能本系统是由单片机控制以实现可控增益放大器,函数信号发生器,同时通过液晶提供良好的人机操作界面。3增益可控放大器(基础部分)的硬件设计3.1 主要功能(1) 将输入的直流电压转换成增益后的直流电压输出;(2) 增益为线性的,增益等级可控的;(3) 通过按键来控制增益等级。3.2 系统设计指标输入电压Vi= 1V输出电压-1.5VVo-0.1V增益等级:0.1V3.3 设计原理增益可控放大器设计原理图见图3.1图3.1 增益可控放大器原理图加在Vi端的直流电压1

9、v经过反相放大器电路放大得到输出电压Vo。设Ri为接入运放反向端的等效电阻。由于反相放大电路的输出电压Vo = - (Rf/Ri ) Vi,所以只要改变Rf/Ri,就可以改变增益。可以由CD4066实现可控开关。 可以通过单片机控制CD4066。3.4 主要部分设计及参数3.4.1 主要元件3.4.1.1 主要元件CD4066CD4066内部结构见图3.2。 图3.2 CD4066BC内部结构(摘自CD4066 datasheet)工作原理:CD4066是一种双向模拟开关,在集成电路内有4个独立的能控制数字及模拟信号传送的模拟开关。每个开关有一个输人端和一个输出端,它们可以互换使用,还有一个选

10、通端(又称控制端),当选通端为高电平时,开关导通;当选通端为低电平时,开关截止。 管脚定义:CD4066的管脚图见图3.3:图3.3 CD4066管脚定义图(摘自CD4066 datasheet):IN/OUTSWITCH A 的输入输出端:OUT/INSWITCH A 的输出输入端(与1相对应):OUT/IN SWITCH B的输出输入端:IN/OUT SWITCH B 的输入输出端(与3相对应):CONTROL SWITCH B的控制端(加高电平的时候开关闭合):CONTROL SWITCH C的控制端(加高电平的时候开关闭合):Vss接地端:IN/OUT SWITCH C的输入输出端:O

11、UT/IN SWITCH C 的输出输入端(与9相对应):OUT/IN SWITCH D的输出输入端:IN/OUT SWITCH D 的输入输出端(与11相对应):CONTROL D SWITCH D的控制端(加高电平的时候开关闭合):CONTROL A SWITCH A的控制端(加高电平的时候开关闭合):Vdd电源端(+5V)3.4.1.2主要元件: LM741工作原理:LM741集成运算放大器是一种高放大倍数、高输入阻抗、低输出阻抗的直接耦合多级放大电路,具有两个输入端和一个输出端,可对直流信号和交流信号进行放大。外接负反馈电路后,输出电压Vo与输入电压Vi的运算关系仅取决于外接反馈网络与

12、输入的外接阻抗,而与运算放大器本身无关。管脚定义LM741的管脚定义见图3.4图3.4 LM741管脚定义图(摘自LM741 datasheet)1: OFFSET NULL 调零端2:INVERTING INPUT 反相输入端 3:NON-INVERTING INPUT 同相输入端4:V- 电源电压负端5:OFFSET NULL 调零端6:OUTPUT 输出端 7:V+ 电源电压正端3.4.2 外围电路设计设计电路图见图3.5 图3.5外围电路设计元件参数R1=10 K R2=20 K R3=40 K R4=80 K Rf=8 K参数选择1、Vi为输入电压,定为 +1.0V。2、R1,R2,

13、R3和R4 用于产生二进制信号。3、Rf是反馈电阻,大小经计算和老师的建议取8K。4、Vo 是输出电压,经过放大后等于 - (Rf/R1 ) Vi。4. 液晶显示(拓展部分一)的硬件设计4.1主要功能:在液晶显示屏上实现16 x(2行)各种ASCII码字符的显示和滚屏、反显等。4.2 系统设计指标:LCD驱动电压:5V。工作温度:室温。4.3 主要部分设计和参数:4.3.1 主要元件4.3.1.1点阵式LCD显示器 工作原理:在液晶板上排列着若干57或510 点阵的字符显示位,每个显示位可显示1个字符,从规格上分为每行8,16,20,24,32,40位,有一行,两行及四行三类。单片机输出信号经

14、过总线扩展后输入到液晶电路模块,在板上显示相应字符。电路图及说明图.1字符型模块电路图(摘自字符模块使用手册)它由HD44780,HD44100及几个电阻电容组成。HD4410是扩展显示字符位用的(例如:16字符1行模块就不用HD44100,16字符2行模块就要用1片HD44100)。在接口方面,有8条数据线,三条控制线。可与微处理器或微控制器相连,通过送入数据和指令,就可使模块正常工作.液晶模块引脚功能引 线 号符 号名 称功 能1Vss接地0V2VDD电路电源5V10%3VEE液晶驱动电压保证VDD-VEE=4.55V电压差4RS寄存器选择信号H:数据寄存器 L:指令寄存器5R/W读/写信

15、号H:读 L:写6E片选信号下降沿触发,锁存数据7|14DB0|DB7数据线数据传输表.1(摘自字符模块使用手册)4.3.1.2 芯片8255工作原理 是可编程口扩展芯片。对输入不同的指令可改变口的工作方式。工作方式由程序设定,图4.为的引脚图。内部有个寄存器:分别为寄存器、和控制寄存器。、寄存器的数据就是引脚、上输入或输出的数据。而控制寄存器的数据则表明、的工作方式。通过、和对个寄存器进行操作。 管脚定义: 如图4.2图4.2 8255管脚定义图(摘自 8255 datasheet)内部结构和外部接线图图4.3 内部结构和外部接线图(摘自东南大学讲义)8255引脚功能:RESET: 复位输入

16、线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。CS: 片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。RD: 读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR: 写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写入8255。D0D7: 三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。PA0PA7: 端口A输入输出线,一

17、个8位的数据输出锁存器/缓冲器, 一个8位数据输入锁存器。PB0PB7: 端口B输入输出线,一个8位的I/O锁存器, 一个8位输入输出缓冲器。 PC0PC7: 端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。4.3.2. 液晶模块整体电路设计4.3.2.1电路图见图4.4 图4.44.3.2.2 电路说明:期中液晶电路模块1 脚接地2 脚接Vcc (+5v)电压3 脚接一小于5v的电压,用于调节对比度4 脚为液晶电

18、路的RS脚,与8255扩展出来的I/O口PC口的第5脚相连5脚为液晶电路的RW脚,与8255扩展出来的I/O口PC口的第6脚相连 6脚为液晶电路的E 脚,与8255扩展出来的I/O口PC口的第7脚相连 7-14为液晶电路的DB0-DB7, 与8255扩展出来的I/O口PB口的八个引脚相连 15,16脚为背光,本实验中我们没有联接5.函数信号发生器(拓展部分一)的硬件设计5.1主要功能: 通过设计电路,使其可输出正弦波、三角波、锯齿波、矩形波(方波)等等的数学函数波形。难点在于需编写程序达到周期性动态连续地改变放大器增益的效果。通过按键控制菜单。5.2主要器件:该电路比可控增益放大器电路增加了一

19、片4066,其内部电路及管脚定义见上。 5.3电路具体实现及参数: 图5.1函数信号发生器电路图其中:R1=8K;R2= 16K;R3=32K;R4=64K;R5=128K;R6=256K;R=6.9K.6.单片机子系统的软件设计6.1软件的主要功能1增益可键控的线性放大器:增益可键控的线性放大器电路,并通过单片机小系统控制其直流增益等级的变化,增益等级从0.1到1.5。在单片机小系统板上提供人机操作界面,使操作者能通过按键操作,设置放大器的增益等级,相应的增益值在数码管上显示。2.函数信号发生器:电路可输出正弦、三角、矩形(方波)等数学函数波形3.液晶显示:实现菜单显示,提供友好的人机界面。

20、6.2 软件总体框架6.3 全局变量说明/* 定时器初值 */#define V_T1 0xfd /*SCOM 9600 baud, ! notice: crystal 11.0592MHz */#define V_TH0 0xee /* 5ms , ! notice: crystal 11.0592MHz */#define V_TL0 0x00/* 1s软件定时器溢出值,两百个5ms*/#define V_T1s200数码管显示使用的全局变量unsigned char xdata digi_scaner; 数码管扫描驱动指针unsigned char bdata output_sel; 数

21、码管位驱动信号输出缓存#define ADDR_8SEGXBYTE0x2000 数码管段驱动寄存器地址#define ADDR_SELXBYTE0x4000 数码管段和指示灯驱动寄存器地址按键定义:单片机小系统中的四个按键分别使用了P1口的四个引脚sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4= P13;可控增益放大器中使用的全局变量可控增益放大器中4066四个控制开关,分别使用了P3口的四个引脚sbit D0 = P32;sbit D1 = P33;sbit D2 = P34;sbit D3 = P35;unsigned char xd

22、ata counter=1; 增益等级液晶显示模块使用的全局变量#define COM8255 XBYTE0xe003 8255COM口地址#define PA8255 XBYTE0xe000 8255PA口地址#define PB8255 XBYTE0xe001 8255PB口地址#define PC8255 XBYTE0xe002 8255PC口地址#define DataPort PB8255 8255PB口地址sbit P14 = P14; 电路图中P1的第四个引脚与8255的reset端连接在一起信号发生器模块使用的全局变量unsigned char xdata sindata=31

23、,36,41,46,50,54,57,60,61,63,63,63,61,60,57,54,50,46,41,36,32,27,22,17,13,9 ,6 ,3 ,2 ,0 ,0 ,0 ,2 ,3 ,6 ,9 ,13,17,22,27; 正弦信号数据点unsigned char xdata sinindex=0; 标识当前正弦波采样地数据点unsigned char xdata squareflag=0; 标识方波的高低电平unsigned char xdata trigain=1; 三角波的增益等级unsigned char xdata triflag=0; 标志三角波的正负斜率unsign

24、ed char xdata triinc=0x01; 三角波的增益分量unsigned char xdata funcflag=0; 标志输出波形的类型菜单显示中使用的全局变量unsigned char xdata genmenuflag=1; 标志是否显示主菜单unsigned char xdata menuflag=0; 标志是否显示可控增益放大器菜单unsigned char xdata menu1flag=0; 标志是否显示函数信号发生器菜单函数声明延时函数void delay0 ();void delay50();void delay400 ();void delay5 ();键盘扫

25、描函数void GenMenu (); 总菜单时扫描键盘void Menu(); 可控增益放大器菜单时扫描键盘void Menu1(); 信号发生器菜单时扫描键盘数码管显示函数unsigned char NUMTOSEG7a(unsigned char );unsigned char NUMTOSEG7b(unsigned char );void display ();可控增益放大器模块所定义的函数void Switch (unsigned char counter); 用于控制可控增益放大器模块中的4066液晶显示模块所定义的函数void init8255 (); 初始化8255 void

26、LcdInit(); 液晶初始化void LcdClean (); 清屏void LcdWriteCommand (unsigned char ); 为液晶输入指令void Disp_XY (unsigned char ,unsigned char ); 液晶定位函数void LcdWriteData (unsigned char ); 输出字符void DispOneChar (unsigned char x, unsigned char y, unsigned char Wdata) 在指定位置输出一个字符void DispStr(unsigned char x, unsigned cha

27、r y, unsigned char * str,unsigned char n) 在指定位置输出一串字符串void DispGenMenu(); 液晶显示总菜单void DispMenu (); 液晶显示可控增益放大器菜单void DispMenu1(); 液晶显示信号发生器菜单void DispWel (); 液晶显示welcomevoid DispOut (); 液晶显示增益等级信号发生器所使用的函数void SinSig (); 输出正弦波void TriSig (); 输出三角波void SquareSig(); 输出方波void SigOut (unsigned char ); 用

28、于控制信号发生器模块中的40666.4 主要模块描述6.4.1定时中断0描述函数名timer0 ( ) interrupt 1 using 0功能描述实现5ms秒的硬件定时中断。主要用于:每5ms检测一次液晶显示菜单的标志,以此决定液晶显示哪一级菜单每隔5ms输出信号发生器产生信号的一个点定时器初值的设定V_TH0=oxeeV_TL0=0x00定时时间为5ms。检测液晶显示菜单标志在本系统中采用每5ms间隔对各个液晶显示菜单标志检测一次Genmenuflag、 menuflag、 menu1flag分别标志液晶当前所需显示的主菜单、可控增益放大器菜单、信号发生器菜单。如果其中有一个标志为1,则

29、调用相应程序使液晶屏幕显示该菜单。信号发生器数值点输出其中信号发生器菜单较为特殊,它其中还包含了输出相应波形的程序部分。funcflag用于标志信号发生器所当前输出的波形,液晶会显示相应波形的英文名称以提示用户,并且每5ms间隔输出所选波形的一个点。由SinSig()输出正弦波的点,由SquareSig()输出方波的点,由TriSig()输出三脚波的点。这三个函数的详细描述请见信号发生器部分。6.4.2 主菜单模块函数描述函数名void GenMenu ()功能描述此函数的主要功能是显示主菜单并根据用户的选择调用相应模块,即每5ms扫描一次键盘,按照用户通过按键输入的指令分别进入帮助菜单、可控

30、增益线性放大器模块、信号发生器模块。输入输出项输入项:KEY1、KEY2KEY1、KEY2分别记录前两个按键的信息。数值有效范围为0或1。0表示有键按下,1表示没有按键按下如果KEY1被按下,则进入可控增益线性放大器模块,调用Menu()。同时将全局变量genmenuflag置为0以关闭主菜单的液晶显示,并将全局变量menuflag置为1以启动可控增益线性放大器模块的菜单显示。如果KEY2被按下,则进入信号发生器模块,调用Menu1()。同时将全局变量genmenuflag置为0以关闭主菜单的液晶显示,并将全局变量menuflag1置为1以启动信号发生器模块的菜单显示。按键消抖:由于用户操作或

31、是按键本身特性,在按键刚刚按下时输出的电平不稳定,有毛刺,要过一段时间输出的电平才会稳定。因此如果KEY1、KEY2、KEY3、KEY4中任何一个键被按下,要先用延时函数delay50()消去按键抖动,然后再进行相应函数调用。防止按键跳动:在程序相应用户按键要求,调用完相应函数后,还有一段while语句的循环。这是我们在经过调试后,为了使按键操作更加友好而添加的。调试时,我们发现有时由于手的轻微颤抖,会使系统将一次按键误认为两次甚至是多次,造成不必要的麻烦。所以,我们加入了以下语句:while (KEY4=0) display(); 即当按键未放开前,程序不会跳出循环执行后续操作,也就避免了一

32、次按键引起多次函数调用的错误。6.4.3 可控增益线性放大器模块函数描述通过以下函数实现一个可控增益线性放大器,根据用户的按键操作,选择相应增益等级,能在数码管和液晶屏幕上实时显示提示与数据,输出增益后的信号。函数名void Menu()功能描述此程序为线性放大器的主要函数。通过中断程序的控制,如果用户选择放大器模块,则每5ms进入该程序一次。程序负责扫描四个按键,若用户按下任何一个按键,则调用相应程序以完成用户所需要的要求,并在液晶屏幕上做出实时显示。输入项:KEY1、KEY2、KEY3、KEY4KEY1、KEY2、KEY3、KEY4分别记录四个按键的信息。数值有效范围为0或1。0表示有键按

33、下,1表示没有按键按下。KEY1为复位键,按下后程序会将增益等级复位到最低位0.1,并将用于记录增益等级的全局变量count重新置为1。同时通过DispOut()函数在液晶屏上实时显示当前增益等级,display()函数在数码管上实时显示当前增益等级。KEY2控制增益等级增加0.1,按下后程序会将增益等级从当前值增加0.1,并将用于记录增益等级的全局变量count同时增加1。如果当前增益已经达到最大增益等级1.5,则按下KEY2后增益等级变为0.1,进行循环,同时修改全局变量count。通过DispOut()函数在液晶屏上实时显示当前增益等级,display()函数在数码管上实时显示当前增益等

34、级。KEY3控制增益等级减少0.1,按下后程序会将增益等级从当前值减少0.1,并将用于记录增益等级的全局变量count同时减少1。如果当前增益已经达到最小增益等级0.1,则按下KEY2后增益等级变为1.5,进行循环,同时修改全局变量count。通过DispOut()函数在液晶屏上实时显示当前增益等级,display()函数在数码管上实时显示当前增益等级。KEY4控制帮助菜单,按下后液晶屏幕重新显示各按键相应功能以提示用户。函数名void Switch (unsigned char counter)功能描述将十进制数转化为二进制输出,并且将结果输出到P3口的四个引脚,以此控制可控增益放大器中40

35、66四个控制开关,控制与放大器相连的电阻值,从而使放大器输出相应增益等级的信号。 P3口的第二个引脚已设为全局变量D0,它是二进制的最低位。输入项Counter为需要转化的十进制数,即标志增益等级的全局变量。输出项D0到D3依次为目标二进制数的最低到最高位,即P3口的四个引脚,用以控制可控增益放大器中4066四个控制开关。sbit D0 = P32;sbit D1 = P33;sbit D2 = P34;sbit D3 = P35;算法描述采用十进制到二进制转换所使用的除二取余法为基本原理。数码管显示模块描述通过以下函数完成用两个数码管轮流扫描以显示相应数字、字母、符号的功能函数名void d

36、isplay ()功能描述display ()主要配合本次实验基础模块线性可控增益放大器的实现并且控制数码管的显示。变量说明用全局变量digi_scaner标志数码管扫描驱动指针,全局变量output_sel标志数码管位驱动位,XBYTE0x2000 标志数码管段驱动寄存器地址,XBYTE0x4000 标志数码管段和指示灯驱动寄存器地址变量初始化首先将初值0xf0赋给标志数码管位驱动位的全局变量output_sel ,令数码管驱动位无效,指示灯全灭。数码管扫描用一个if语句,通过改变全局变量digi_scaner的值来完成第三和第四个数码管间的轮流扫描。由于每5ms扫描一次,所以虽然两个数码管

37、不是同时显示数据,但人眼的视觉暂留使其看来像是同时显示。当digi_scaner为3时,标志选中第三个数码管。将全局变量output_sel置为0x04以驱动第三个数码管。调用NUMTOSEG7b()函数并将counter/10作为输入项,这样第三个数码管将显示增益等级的个位。并NUMTOSEG7b()函数的输出值送到锁存器U5。当digi_scaner为4时,标志选中第四个数码管。将全局变量output_sel置为0x08以驱动第四个数码管。调用NUMTOSEG7a()函数并将counter10作为输入项,这样第四个数码管将显示增益等级的小数位。并NUMTOSEG7a()函数的输出值送到锁存

38、器U5。最后将output_sel的值输出到锁存器U6。配合线性可控增益放大器的输出最后调用Switch (),将增益等级值作为输入项,以此通过P3口的四个引脚控制4066的四个控制开关,从而输出相应增益等级的信号。Switch ()函数的具体实现详见线性可控增益放大器模块函数描述。函数名:unsigned char NUMTOSEG7b(unsigned char DATA)功能描述:此函数主要是用于显示增益等级的个位和小数点。输入输出项unsigned char DATA为数码管所要显示的个位数字。由于本次实验数码管主要用于显示线性可控增益放大器的增益等级,而增益等级从0.1到1.5,所以

39、个位只有0或者1。如果为0,则数码管显示数字0和小数点;如果为1,则数码管显示数字1和小数点。否则无显示。函数名:unsigned char NUMTOSEG7a(unsigned char DATA)功能描述:此函数主要是用于显示增益等级的小数位。可以令数码管显示数字0到9,字母A到F,以及破折号、下划线和消隐。输入项unsigned char DATA为数码管所要显示的小数位数字。算法描述讲数码管管段的相应高低电平译成十六进制数,输入该十六进制数即得所需输出的数字、字母或是符号。 符号相应十六进制数00xc010xf920xa430xb040x9950x9260x8270xf880x809

40、0x90A0x88B0x83C0xc6D0xa1E0x86F0x8e破折号0xbf下划线0xf7消隐0xff6.4.4 信号发生器模块函数描述通过以下函数完成正弦信号、三角波信号和方波信号的输出函数名void SigOut (unsigned char i) 功能描述该函数主要负责信号发生器中各个数值点的输出。由于焊接电路时我们将PA0口焊到了最小的电阻值上,因此在我们的系统中将PA0对应了最高位,所以通过这个函数作一个转换。首先将所要输出的数值点从十进制转换为二进制,d0到d5,其中d0为i的二进制码最低位。然后将d0到d5顺序颠倒,使d0为j的二进制码最低位,相应输出到PA5。最后将结果j

41、输出到8255PA口,以此控制信号发生器器中两片4066的六个开关,控制与放大器相连的电阻值,从而使放大器输出相应数值的信号。变量说明全局变量 #define PA8255 XBYTE0xe000标志了8255PA口地址d0,d1,d2,d3,d4,d5为程序内部转换数值时,标志各二进制数位数字的临时变量。j为转换好的数值,将其赋值给PA8255,从而控制与电阻相连的开关的闭合,使放大器输出相应增益等级的信号。函数名:SinSig ()功能描述主要用于产生正弦信号的数值点。该程序输出不同的增益等级到放大器,因此实际正弦信号的数值是增益等级乘以当前的输入信号。该正弦信号周期为200ms,峰峰值为

42、1.5Vi(Vi为输入电压值)。一个周期中,一共选取了40个点以形成该正弦信号。变量说明变量i记录当前输出的正弦波上一点的增益等级,作为SigOut()函数的输入项。全局变量unsigned char xdata sindata为一个周期正弦信号数据点增益等级的集合全局变量unsigned char xdata sinindex标识当前正弦波采样的数据点是一个周期中的第几个点。每5ms输出一个点,一个周期共计40个点。当sinindex为40时,表明输出完一个周期,则将sinindex置为0,开始新一周期的输出。周期计算当用户选择信号发生器模块的正弦波信号后,每5ms调用一次该函数,即每5ms

43、输出一个正弦波信号的点,我们共在一个周期中选择了40个点,所以周期为5ms40200ms。算法描述:正弦信号数值点取值由于一共采用6个开关,则其不同开关的有效状态共有63种,因此有63个不同增益等级可以利用。首先利用程序模拟出这63个开关的有效状态,并计算出与这些状态一一对应的增益等级。然后另写一个程序完成以下功能:根据我们所需要输出的正弦波图形,在一个周期中等间隔的取出40个点,将这些点的取值与已计算出的增益等级比较,取出最接近值所对应的开关状态,记录下来形成sindata。从而得到最终得到一个周期内正弦信号数据点增益等级的集合。函数名:TriSig ()功能描述主要用于产生三角波信号的数值

44、点。该程序输出不同的增益等级到放大器,因此实际三角波信号的数值是增益等级乘以当前的输入信号。该三角波信号周期为630ms,峰峰值为1.5Vi(Vi为输入电压值)。一个周期中,一共选取了632即126个点以形成该三角波信号。变量说明全局变量triflag记录当前输出的三角波是处于上升还是下降状态,即标志三角波的正负斜率。triflag为0表示三角波在上升状态;triflag为1,表示三角波在下降状态。全局变量triinc记录每两个三角波采样的数据点间的增益值,预先设为0x01。全局变量trigain用于产生当前三角波采样的数据点的大小,即记录三角波的增益等级。如果三角波在上升状态,即trifla

45、g为0,则当前三角波采样的增益等级为前一采样点增益等级值加上增益值triinc。并且若增益等级trigain增加到0x3f(63)则达到最大值,将triflag置为1,开始递减。如果三角波在下降状态,即triflag为1,则当前三角波采样的增益等级为前一采样点增益等级值减去增益值triinc。并且若增益等级trigain减小到0x01(1),则达到最小值,将triflag置为0,开始递增。调用函数说明计算出当前三角波的增益等级trigain后,调用Sigout()并将trigain作为其输入,从而实现三角波的输出。周期计算当用户选择信号发生器模块的三角波信号后,每5ms调用一次该函数,即每5m

46、s输出一个三角波信号的点,在一个周期中选择了上升状态从0x01(1)到0x3f(63),下降状态从0x3f(63)到0x01(1),共126个点,所以周期为5ms126630ms。函数名:SquareSig ()功能描述主要用于产生方波信号的数值点。该程序输出不同的增益等级到放大器,因此实际方波信号的数值是增益等级乘以当前的输入信号。该方波信号周期为10ms,峰峰值为1.5Vi(Vi为输入电压值),占空比50。一个周期中,一共选取了2个点以形成该方波信号。变量说明全局变量squareflag记录当前输出的方波是处于高电平还是低电平状态。squareflag为0,表示方波在低电平状态;squar

47、eflag为1,表示方波在高电平状态。方波在低电平状态时,输出0并且将squareflag置为1,为下次输出高电平的半个周期作准备。方波在高电平状态时,输出1并且将squareflag置为0,为下次输出低电平的半个周期作准备。调用函数说明根据当前方波的高低电平状态,调用Sigout()并将高电平时的0xff或者低电平时的0作为其输入,从而实现方波的输出。周期、占空比计算当用户选择信号发生器模块的方波信号后,每5ms调用一次该函数,即每5ms输出一个方波信号的点,在一个周期中选择了2个点,所以周期为5ms2100ms。由于方波信号高低电平持续期各占一半,所以占空比为50。6.4.5 液晶模块函数

48、描述通过以下函数实现在液晶屏幕上实时显示以上各模块的菜单和输出量。函数名void init8255 ()功能描述初始化8255芯片。变量说明全局变量sbit P14 = P14,电路图中P1的第四个引脚与8255的reset端连接在一起,所以P14是8255芯片的reset位。通过将其置为0-1-0,形成脉冲,使8255芯片复位。全局变量COM8255 XBYTE0xe003是8255COM口地址。将COM8255置为0x80,选择模式0,即PA、PB、PC口都作为output。函数名LcdWriteCommand (unsigned char CMD )功能描述向液晶中的芯片写入命令变量说明

49、全局变量PC8255为XBYTE0xe002,标志8255PC口地址。将PC8255置为0x80,即将液晶使能端置为高电平。由于此使能端是下降沿触发,因此将使能端置为高电平是为后续的触发做准备。全局变量DataPort定义为8255PB口地址。将DataPort置为输入变量CMD,即是将命令CMD送到液晶数据口db0到db7的寄存器,等到脉冲下降沿的时候,液晶中的芯片会处理该命令。在程序最后,将PC8255置为0x00,即送出下降沿,使液晶中的芯片处理CMD中所包含的命令。函数调用说明需要调用延时函数delay5()。因为液晶处理命令需要一定的时间,为了协调CPU的处理速度和液晶处理速度,需要

50、延时函数用于等待。函数名LcdInit()功能描述初始化液晶部分函数调用说明按照所查有关液晶初始化的资料上的提示,调用微液晶芯片输入指令的函数LcdWriteCommand (),并依次输入指令0x30-0x30-0x30-0x38-0x08-0x01-0x06-0x0f -0x01,从而完成液晶初始化。函数名LcdClean () 功能描述用于液晶屏幕的清屏调用函数说明调用向液晶内部芯片写入指令的函数LcdWriteCommand (),向液晶芯片写入清屏指令0x01。调用延时函数delay5()以协调CPU的处理速度和液晶处理速度,确保实现清屏。函数名Disp_XY (unsigned c

51、har posx,unsigned char posy)功能描述确定输入液晶芯片的字符在液晶屏幕上的位置变量说明输入变量posx表示字符在液晶屏幕上的列位置,是十进制数。输入变量posy表示字符在液晶屏幕上的行位置,也是十进制数。由于液晶屏幕只有两行,所以只有0或者1两个值。变量x0是记录字符在液晶屏幕上的列位置的十六进制代码变量x1是记录字符在液晶屏幕上位置的十六进制代码,通过以下语句的转换:x1=x0+posx;x1=x1+0x80;恰好可以将字符在液晶屏幕上位置的十六进制代码计算出来,并且赋值给变量x1。函数调用说明程序最后调用LcdWriteCommand (),并将字符位置的十六进制

52、代码x1作为输入变量,以此将所要输出字符的具体位置赋值给液晶芯片,为后续输出字符作好准备。函数名DispOneChar (unsigned char x, unsigned char y, unsigned char Wdata)功能描述将一个有具体位置的字符显示在液晶屏幕上变量说明输入变量x表示字符在液晶屏幕上的列位置,是十进制数。输入变量y表示字符在液晶屏幕上的行位置,也是十进制数。由于液晶屏幕只有两行,所以只有0或者1两个值。输入变量Wdata表示要输入字符的代码。调用函数说明首先调用Disp_XY (),将表示字符在液晶屏幕上的行、列位置的变量x、y作为输入项,将其转换为表示位置的十六进制代码后,再写入液晶芯片中,确定输出字符的位置。后调用LcdWriteData (),将表示要输入字符代码Wdata作为输入项,在液晶屏幕的已确定的位置上显示字符。函数名DispStr(unsigned char x, unsigned char y, unsigned char * str,unsigned char n)功能描述将一串有具体位置的字符串显示在液晶屏幕上变量说明输入变量x表示字符在液晶屏幕上的列位置。输入变量y表示字符在液晶屏幕上的行位置。输入变量str是需要显示的字符串。输入变量n是字符串长度。函数调用说明

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!