《单片机原理与应用实验报告-基于简单IO口的LED显示(综合类)》由会员分享,可在线阅读,更多相关《单片机原理与应用实验报告-基于简单IO口的LED显示(综合类)(19页珍藏版)》请在金锄头文库上搜索。
1、通信与信息工程学院2011 /2012 学年 第 二 学期 单片机原理与应用 实验报告专 业 网络工程 学 生 班 级 B090115 学 生 学 号 B09011512 学 生 姓 名 任 课 教 师 日 期 2012 年 4月 12 日目录实验目的1方案设计与方案比较1单元电路设计6整体电路设计11调试与运行结果13实验小结17参考文献18附件19实验名称:基于简单I/O口的LED显示(综合类)1、 实验目的按照实验提供的单片机原理图,设计一个函数信号发生器。该函数信号发生器能够产生四种波形数据(正弦、方波、三角、锯齿),四种波形可通过按键进行切换调节,同时能够实现函数信号的频率可调并可通
2、过LED数码管进行显示,以及函数信号的幅度的可调。2、 方案设计与方案比较2.1 方案一:基于软件的函数信号发生器用C+编程得到信源波形数据。现将得到的波形数据形成TABLE表存放到51单片机的程序存储器中,然后用51单片机中的定时器,每定时一定时间就从单片机中送出一个波形数据到DAC0832中进行数模转换然后送到示波器显示,循环进行,即可可到周期信号。信号选择控制即是使单片机从不同的函数表中进行取数,频率控制可设置两个按键,一个加键和一个减键,每按一次使频率所对应的计数初值加减一个单位,并送到LED数码管上进行显示。80C51DAC0832波形输出显示频率控制信号选择控制频率显示幅度控制 图
3、2.1 总体设计框图图2. 2 程序流程2.2 方案二:基于硬件的函数信号发生器用C+编程得到信源波形数据和产生100-10000hz方波所需要的计数器的计数初值。首先,将存储在51单片机中的信源数据存储到存储器6264中;然后,由单片机产生100-10000hz可变频率的方波,产生的方波作为8位计数器的时钟频率,可计数范围为0-255,即可把波形数据的一个周期读出,波形的选择可通过51单片机P2口的两位控制6264的高位A8、A9,其中00表示正弦,01表示三角波,10表示方波,11表示锯齿波;当检测到频率键发生改变时,单片机就会输出相应频率的方波并输出到LED数码管进行频率显示,这样404
4、6就可以输出不同频率扫描的波形值,之后再经过DAC0832数模转换,即可得到所要的波形,此波形通过一个幅度调节环节,最终送到示波器显示。其中存储器6264中, 0000-00FF存放的是正弦信号数据,0100-01FF、0200-02FF、0300-03FF分别存放的是三角波、方波和锯齿波的数据;程序是先从p1口读入按键值,设定变化范围是1-100(即按1表示100hz),从TABLE表中得到相应的计数初值后,即可实现在P3.0口产生所需方波。80C51波形控制频率控制锁存器74LS373数模转换DAC0832计数器LED显示存储器6264幅度控制图2.3 总体设计框图将波形数据载入6264开
5、始DPTR指向计数初值表头设定计数器为工作方式1从P1口读入频率值频率送LED显示并取出对应计数初值初始化计数器启动计数器计数器计满否波形选择重置计数初值P3.0取反输出方波频率改变否是图2.4 程序流程图 2.3 方案比较 方案一主要基于软件来实现函数信号发生器,函数的周期主要通过由读取波形数据前的指令时间决定,不能实现1000hz的波形输出并且编程复杂;方案二主要基于硬件实现函数信号发生器,函数的周期由计数器的扫描频率决定,即由51单片机产生的方波决定,若再在51单片机和计数器中增加一个256倍的倍频器,就可以得到100-10000hz频率可变的信号输出,而且程序只需要完成将波形数据载入存
6、储器6264和产生频率可变的方波,也得到了大大的简化。综上所述,选择方案二。3 单元电路设计3.1 单片机正常工作电路图3.1 单片机工作电路图3.2 波形数据载入存储器6264 80C51单片机P2口低5位(P2.0、P2.1、P2.2、P2.3、P2.4)直接连接到存储器6264的地址高5位(A8、A9、A10、A11、A12),80C51单片机P0口一方面通过地址锁存器连接到6264的地址低8位,一方面直接连到6264的地址端,即P0口既是地址端又是数据端。当由单片机的地址总线确定出6264存储地址后,由数据总线将波形数据送到6264中进行存储。80C51锁存器74LS373存储器626
7、4图3.2 实现框图开始函数表指针R0置0DPTR指向函数表头R0=存储器6264指针R1取出函数表中波形数据DPTR指向存储器中相应波形存储区头R1=0DPTR指针加1否指针R1减1将波形数据送入指定存储单元是指针R0加1R0=0否结束是图3.3 程序流程图图3.4 实现电路图3.3 存储器及函数表存储器6264中, 0000-00FF存放的是正弦信号数据,0100-01FF、0200-02FF、0300-03FF分别存放的是三角波、方波和锯齿波的数据。生成这些数据是通过C+编程实现的。以正弦波为例,由于存储区中存放的均为正数,故现将波形往上平移,则可避免存储负的数据。将波形幅度量化成255
8、个单元,一个周期中抽取256个数据,可得到下面的波形数据生成公式:h=127.5+127.5*sin(2*i*pi/256),生成波形数据见附表。3.4 地址计数器设计74LS393是4位二进制计数器,将其中一片的Q3端输出接到另一片的时钟端,即可级联扩展成8位二进制计数器。整个计数器的时钟信号由80C51单片机的P3.0口输出。要产生时钟信号,即要实现产生100-10000hz的方波,实现频率可调。TABLE表即是通过软件编程算出的相应频率的计数初值(TABLE表中的第一个数据0000H无实际意义,主要是使在编程过程中指针简化)。程序是先从p1口读入按键值,我们设定变化范围是1-100(即按
9、1表示100hz),从TABLE表中得到相应的计数初值后,即可实现在P3.0口产生所需方波。这样,当计数器以不同的频率去扫描存储器6264时就可以得到不同频率的输出波形。图3.5 计数器实现电路图3.5 D/A电路D/A电路用于产生函数波形,其原理就是将由8位二进制数表示的数字信号转换成模拟信号输出显示。OUT1是单一极性信号,其电压值由下面的公式得出(以正弦波为例)。OUT1=VR*sinwt图3.6 函数波形产生电路3.6 数字幅度控制电路 幅度控制电路由分压衰减电路和模拟开关组成。衰减电路可提供8中不同的衰减值,模拟开关在幅度开关的控制下选择其中一个输出。其原理就是由8个阻值相同的电阻对
10、OUT1进行分压,从不同的电阻间引出一个抽头就可以实现不同的波形幅度值。可选择的幅值分别为(、)OUT1,分别对应的幅度开关值为000、001、010、011、100、101、110、111。图3.7 幅度控制电路3.7 显示电路显示电路是用来显示输出波形频率的,本程序使用两位数码管显示器,利用扫描方式显示所需频率,可显示的范围为0063(即频率键最高两位不使用)。单片机P0端口并行连接两只共阳极数码管显示器。数码管的8个引脚依照a、b、c、d、e、f、g顺序依次与P0端口的7个引脚P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、 P0.6、相连,R是限流电阻,取值为10k。V0、
11、V1是两只共阳极数码管的控制三极管,三极管的基极分别接在单片机P3.2和P3.3引脚上。也就是说,P3.2输出为0时三极管V1导通,与其相连的共阳极数码管显示器开始工作;P3.3输出为1是三极管V1截至,与其相连的共阳极数码管显示器停止工作。三极管V0的作用与 V1三极管相同。图3.8 显示电路图图3.9 显示流程图4 整体电路设计4.1 整体电路图程序分两个部分,顺序执行。第一部分是把数据装入6064中,其中0000-00FF存放的是正弦信号数据,0100-01FF、0200-02FF、0300-03FF分别存放的是三角波、方波和锯齿波的数据;第二部分是实现产生100-10000hz的方波,
12、实现频率可调。TABLE表即是通过软件编程算出的相应频率的计数初值(TABLE表中的第一个数据0000H无实际意义,主要是使在编程过程中指针简化)。程序是先从p1口读入按键值,我们设定变化范围是1-63(即按1表示100hz),从TABLE表中得到相应的计数初值后,即可实现在P3.0口产生所需方波。在硬件实现的过程中,最主要考虑的问题是总线隔离问题,用三片74LS245解决了这个问题。一开始有效工作的只有80C51、74LS373和6264,当将波形数据载入存储器6264后,必须屏蔽掉74LS373,以使80C51的输出不再对6264中存储好的波形数据产生影响。然后,启动计数器和数模转换电路,
13、由80C51单片机输出的方波信号作为计数器的时钟信号,当由单片机确定出显示哪种波形后,计数器就对选定的数据区进行扫描输出显示,只要波形选择不发生改变,计数器就会对同一片波形数据区(256个波形数据)进行循环扫描。进行了总线隔离后,只要将各单元电路按一定的输入输出关系串联起来即可。而软件实现主要是将波形选择和频率显示嵌套到产生可变频率方波那段程序中即可。参见图2.4 程序流程图。图4.1 无显示有幅度控制整体电路图图4.2 有显示无幅度控制整体电路图4.2 元件明细表元件 数量80C51 1CRYSTAL(12M) 16264 174LS245 374LS373 174LS393 2DAC0832 17SEG-COM-ANODE 2DIPSW_8 1DIPSW_3 1SW-SPST 2CAP(30P) 2CAP(600000P) 1CAP(30P) 2