单片机低频信号发生器的设计.doc_第1页
单片机低频信号发生器的设计.doc_第2页
单片机低频信号发生器的设计.doc_第3页
单片机低频信号发生器的设计.doc_第4页
单片机低频信号发生器的设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

单片机低频信号发生器的设计一、系统分析1、 系统实现方案 用80C51单片微型机实现整个系统的控制,并提供指令系统。用可编程接口芯片8255将CPU与外设相连,实现其间数据的并行传输。外设主要有:16*16显示屏用于显示提示语;数字显示屏回显键盘输入;波形发生器显示不同频率的正弦波。通过键盘和显示电路,实现人机对话,执行频率和幅值的输入然后由单片机进行判断分析,最后输出需要的结果。2、 基本功能 屏幕上显示:正弦波 4:50Hz 5:30Hz 6:20Hz 8:停 ,用户根据提示,从键盘上输入所选参数,在数字显示屏上回显,在波形发生器上显示相应频率的波形。 汇编语言控制程序的结构如下图示,在键盘输入过程中有相应提示。 系统初始化汉字提示: 正弦波 4:50Hz 5:30Hz 6:20Hz 8:停用户从键盘上输入所选参数 按用户要求输出波形二、系统硬件设计1、 硬件线路图见附录一2、 芯片说明8051单片机MCS51单片机内部结构:MCS51单片机包括如下功能部件:一个8位中央处理器;4K/8KB的ROM;128/256B的RAM;32条I/O口;2个和3个(对8032/8052)定时器/计数器;1个具有5个中断源、2个优先级的嵌套中断结构;1个用于多微处理机通信、I/O或全双工UART(通用异步接收发生器)的串行I/O口,此外还有程序寄存器PC,程序状态寄存器PSW,堆栈寄存器SP,数据指针寄存器DPTR等部件,这些部件集成在一块芯片上,通过内部总线连接,构成完整的微型计算机。根据8051内部结构和工作原理,可以把上述各功能部件划分为以下五部分:CPU结构:由运算器(ALU)、控制器(定时控制部件等)和专用寄存器三部分电路构成。算术逻辑部件ALU:既可进行加、减、乘、除四则运算,也可以进行与、或、非、异或等逻辑运算,还具有数据传送,移位,判断和程序转移等功能。定时控制部件:起控制器的作用,由定时控制逻辑、指令寄存器(IR)和振荡器(OSC)组成。专用寄存器组:主要用来指示当前要执行指令的内存地址、存放操作数和指示指令执行后的状态等。存储器结构存储器地址分配:存储器的地址分配有三个地址空间ROM存储器地址空间(包括片内ROM和片外ROM);片内RAM地址空间;片外RAM地址空间。片内ROM:8031内部没有ROM;只有8051才有4KBROM。片外RAM:MCS51可以对片外RAM中数据进行读/写。片内RAM:MCS51的片内RAM容量只有128个存储单元,可以用来存放操作数、操作结果和实时数据。I/O端口:是MCS51单片机对外部实现控制和信息交换的必经之路,是一个过度的集成电路,用于信息传送过程中的速度匹配和增强它的负载能力。并行I/O端口:P0、P1、P2和P3,每个端口都有双向I/O功能,每个I/O端口内部都有一个8位数据输出缩存器和一个8位数据输入缓冲器。并行I/O端口一次可以传送一组二进制信息。串行I/O端口:既可以在程序控制下把CPU的8位并行数据变成串行数据逐位从发送数据线TXD发送出去,也可以把RXO线上串行接收到的数据变成8位并行数据送给CPU,而且这种串行发送和串行接收可以单独进行,也可以同时进行。串行I/O端口一次只能传送1位二进制信息。定时器/计数器:8051内部有两个16位可编程定时器/计数器,命名为T0和T1,分别由TH0(高八位)和TL0(低八位),TH1和TL1拼装而成,它们均为特殊功能寄存器SFR中的一个,用户可以通过指令对它们存取数据。T0和T1的最大计数模值为65535。T0和T1有定时器和计数器两种工作模式,每种模式下又分为若干工作方式。在定时器模式下,T0和T1的计数脉冲可以由单片机时钟脉冲经12分频后提供,定时时间和单片机时钟频率有关。在T0和T1的计数脉冲可以从P3.4和P3.5引脚上输入。中断系统:8051共可处理五个中断源发出的中断请求,可以对五个中断请求信号进行排队和控制,并响应其中优先权最高的中断请求。8051的五个中断源有内部和外部之分:外部中断源有二个,通常指外部设备;内部中断源有三个,两个定时器/计数器中断源和一个串行口中断源。8051的中断系统主要有中断允许控制器IE和中断优先级控制器IP等组成。IE用于控制五个中断源中哪些中断请求被允许向CPU提出,哪些被禁止;IP用于控制五个中断源的中断请求的优先级最高,可以被CPU最先处理。MCS51单片机引脚功能:1、 端口线(4832条)P0.7P0.0:若8051不带片外存储器,P0.7P0.0可作为通用I/O使用,传送CPU的 输入、输出数据。 若8051带片外存储器,P0.7P0.0在CPU访问片外存储器时先是用于传送片外存储器的低8位地址,然后传送CPU对片外存储器的读写数据。P1.7P1.0:可作为通用I/O使用,传送用户的输入、输出数据。P2.7P2.0:可作为通用I/O使用。 可配合P1.7P1.0传送片内EPROM12位地址中的高4位地址。P3.7P3.0:可作为通用I/O使用。 可作控制用,专用功能。2、 电源线(2条)VCC为5V电源线。VSS为接地线。3、 控制线(16条) ALE/PROG:地址锁存允许/编程线 EA/VPP:允许访问片外存储器/编程电源线 PSEN:片外ROM选通线。 RST/VPD:复位、备用电源线。 XTAL1和XTAL2:片内振荡电路输入线。61166116是2K8位静态随机存储器芯片,采用CMOS工艺制作,单一5V电源,额定功耗160mW,典型存取时间为200ns,24线双列直插式封装。A0A10为片内11位地址线;IO0IO7为8位数据线;CE为片选信号线;OE、WE为读、写信号线。74LS373 74LS373是一个三态门的8位锁存器,它可以作为8031外部的一个扩展输入口。 接口电路的工作原理:当外设把数据准备好后,发出一个控制信号XT加到373的G端,即锁存控制端,使输入数据在74LS373种锁存。在执行上面的第二条指令时,P2.6=0,RD有效,通过或门后加到373的OE端,即373的三态门控制端,使三态门畅通,锁存的数据读入到累加器中。81558155是Intel公司研制的通用I/O接口芯片,MCS51和8155相连不仅可为外设提供两个8位I/O端口(A口和B口)和一个6位I/O端口(C口),也可为CPU提供一个256字节的RAM和一个14位定时器/计数器。8155共由7部分电路组成:双向数据总线缓冲器:该缓冲器是8位的,用于传送CPU对RAM存储器的读写数据。地址缩存器:共有8位,用于锁存CPU送来的RAM单元地址和端口地址。地址译码器和读写控制器:地址译码器的地址由地址缩存器输出端送来,读写控制接RD和WR线上信息,实现对CPU和8155间所传信息的控制。RAM:容量为256字节,主要用于存放实时数据。 I/O寄存器:分为A、B和C三个端口。A口和B口的I/O寄存器为8位,既可以存放外设的输出数据,也可以存放外设的输入数据;C口的I/O寄存器只有6位,用于存放I/O数据或命令、状态信息。 命令寄存器和状态寄存器:皆为8位寄存器,命令寄存器存放CPU送来的命令字,状态寄存器存放8155的状态字。 定时器/计数器:这是一个二进制的14位减1计算器,计数器初值由CPU通过程序送来。8155引脚功能: 地址/数据总线(8条):AD7AD0。 I/O总线(22条):PA7PA0,通用I/O总线; PB7PB0,通用I/O总线; PC5PC0,I/O数据/控制线。 控制总线(8条):RESET总清输入线; CE和IO/MCE为片选输入线,IO/M为I/O端口或RAM的选通 线; RD和WRRD是读/写命令输入线,WR是写命令线; ALE允许地址输入线; T/IN和T/OUT:T/IN是计数器输入线,T/OUT为计数器输出线; 电源线(2条):VCC为5V电源输入线, VSS为接地线。8255A8255A是Intel公司生产的通用可编程并行I/O接口芯片,MCS51和8255A相连可为外设提供三个8位I/O端口,允许采用同步、异步和中断方式传送I/O数据。8255A内部由四部分电路组成:A口、B口和C口:均为8位I/O数据口,但结构上略有差别。A口由一个8位数据输出缓冲/缩存器和一个8位数据输入缓冲/缩存器组成,B口和C口各有一个8位数据输出缓冲/缩存器和一个8位数据输入缓冲器(无输入数据缩存器)组成。A口、B口和C口三个端口都可与外设相连,分别传送外设的输入/输出数据或控制信息,但在Mode1和Mode2工作方式下,A口和B口常作为数据口,用于传送I/O数据;C口为控制器,高4位属于A口,传送A口上外设的控制/状态信息,低四位属于B口,传送B口所需的控制/状态信息。A组控制器和B组控制器:都由控制字寄存器和控制逻辑组成。A组控制字寄存器控制A口和C口上半部(PC7PC4),B组控制器控制B口和C口下半部(PC3PC0)。数据缓冲器:双向8位缓冲器,用于传送MCS51和8255A间的控制字、状态字和数据字。读写控制逻辑:接收MCS51送来的读写命令和选口地址,用于控制对8255A的读写。8255A引脚功能:8255A有40条引脚,采用双列直插式封装。 数据总线(8条):D7D0 控制总线(6条):RESET复位线;CS片选线;RD和WRRD为读命令线,WR为写命令线;A0和A1地址输出线。 并行I/O总线(24条):PA7PA0双向I/O总线; PB7PB0双向I/O总线; PC7PC0双向数据/控制总线 电源线(2条):VCC为5V电源线; GND为地线。D/A转换器 D/A转换器(Digital to Analog Converter)是一种能把数字量转换成模拟量的电子器件。D/A转换器可以直接从MCS51输入数字量,并转换成模拟量推动执行机构动作,以控制被控实体的工作过程。 D/A转换器的原理很简单,可以总结为“按权展开,然后相加”几个字,换句话说,D/A转换器要能把输入数字量中的每位都按其权值分别转换成模拟量,并通过运算放大器求和相加,因此D/A转换器内部必须有一个解码网络(解码网络通常有两种:二进制加权电阻网络和T型电阻网络),以实现按权值分别进行D/A转换。DAC0832DAC0832内部结构: DAC0832内部由三部分电路组成。“8位输入寄存器”用于存放CPU送来的数字量,使输入数字量得到缓冲和锁存,由LE1加以控制;“8位DAC寄存器”用于存放待转换数字量,由LE2控制;“8位D/A转换电路”由8位T型电阻网络和电子开关组成,电子开关受“8位DAC寄存器”输出控制,T型电阻网络能输出与数字量成正比的模拟电流。因此,DAC0832通常需要外接运算放大器才能得到模拟输出电压。DAC0832引脚功能:DAC0832共有20条引脚,双列直插式封装。 数字量输入线DI7DI0(8条); 控制线(5条):CS片选线; ILE允许数字联输入线; XFER传送控制输入线; WR1和WR2两条写命令输入线 输出线(3条):Rfb运算放大器反馈线; IOUT1和IOUT2两条模拟电流输出线。 电源线(4条):VCC电源输入线; VREF参考电压; DGND数字量地线; AGND模拟量地线。3、组合模块说明本系统由三大模块组成:汉字显示模块、键盘输入模块和波形显示模块。汉字显示模块:由8051、锁存器、27128、8255和373芯片组成。键盘输入显示模块:由8051、8155和数字显示器组成。波形显示模块:由8051、138和波形发生器组成。4、系统工作原理汉字显示模块 每个汉字采用16*16点阵显示,8255芯片使用方式0工作,PA、PB、PC口均为输出。PA口和PB口的输出分别控制汉字的上八行和下八行,PC口的输出控制由8051的并行口P1选中的八列。即H16H9 由PA口输出,H8H1由PB口输出,PC口输出八列。8051的P1口:P1.0 选左起第一个八列,选最上面的374 P1.1 选左起第二个八列,选次上的374 P1.2 选左起第三个八列,选最上面的374 P1.3 选左起第四个八列,选次上的374 P1.4 选左起第五个八列,选次上的374 P1.5 选左起第六个八列,选次上的374 P1.6 选左起第七个八列,选次上的374 P1.7 选最右一个八列, 选最下面的374如汉字正:L1出0: H16H9: 00H H8 H1: 00HL2出0: H16H9: 00H H8 H1: 01HL3出0: H16H9: 20H H8 H1: 00HL4出0: H16H9: 40H H8 H1: 02HL5出0: H16H9: 40H H8 H1: 02HL6出0: H16H9: 40H H8 H1: 7EHL7出0: H16H9: 40H H8 H1: 02HL8出0: H16H9: 40H H8 H1: 02HL9出0: H16H9: 7FH H8 H1: FEHL10出0:H16H9:42H H8 H1: 02HL11出0:H16H9: 42H H8 H1: 02HL12出0:H16H9: 42H H8 H1: 02HL13出0:H16H9: 42H H8 H1: 02HL14出0:H16H9: 40H H8 H1: 02HL15出0:H16H9: 00H H8 H1: 00HL16出0:H16H9: 00H H8 H1: 00H 将要显示的字的编码放入DATA表中,通过移动指针依次取出并扫描在屏上。DATA表中的编码如下:(具体点阵见附录二) 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H正 00H, 00H, 00H, 01H, 40H, 01H, 41H, FFH, 40H, 01H, 40H, 01H, 40H, 01H, 40H, 01H 7FH, FFH, 40H, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 00H, 01H, 00H, 00H 弦 47H, C0H, 44H, 40H, 44H, 42H, 44H, 41H, 7CH, 7FH, 00H, 00H, 10H, 02H, 10H, 86H 91H, 8AH, 52H, 92H, 1CH, A2H, 10H, C2H, 10H, 86H, 11H, 02H, 10H, 01H, 10H, 00H波 44H, 40H, 32H, 7FH, 00H, 82H, 01H, 0CH, 3FH, F1H, 22H, 01H, 23H, 82H, 22H, 44H 22H, 28H, FEH, 10H, 22H, 28H, 22H, C4H, 23H, 02H, 28H, 01H, 30H, 01H, 00H, 01H 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H4 00H, 00H, 7FH, 80H, 00H, 80H, 00H, 80H, 00H, 80H, 00H, 80H, 7FH, FFH, 00H, 00H: 00H, 00H, 00H, 00H, 00H, 00H, 00H, 82H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H5 00H, 00H, 7FH, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 40H, FFH, 00H, 00H0 00H, 00H, 7FH, FFH, 40H, 01H, 40H, 01H, 40H, 01H, 40H, 01H, 7FH, FFH, 00H, 00HH 00H, 00H, 7FH, FFH, 00H, 80H, 00H, 80H, 00H, 80H, 00H, 80H, 7FH, FFH, 00H, 00Hz 01H, 03H, 01H, 05H, 01H, 09H, 01H, 11H, 01H, 21H, 01H, 41H, 01H, 81H, 00H, 00H 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H5 00H, 00H, 7FH, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 40H, FFH, 00H, 00H: 00H, 00H, 00H, 00H, 00H, 00H, 00H, 82H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H3 00H, 00H, 40H, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 7FH, FFH, 00H, 00H0 00H, 00H, 7FH, FFH, 40H, 01H, 40H, 01H, 40H, 01H, 40H, 01H, 7FH, FFH, 00H, 00HH 00H, 00H, 7FH, FFH, 00H, 80H, 00H, 80H, 00H, 80H, 00H, 80H, 7FH, FFH, 00H, 00Hz 01H, 03H, 01H, 05H, 01H, 09H, 01H, 11H, 01H, 21H, 01H, 41H, 01H, 81H, 00H, 00H 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H6 00H, 00H, 7FH, FFH, 40H, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 40H, FFH, 00H, 00H: 00H, 00H, 00H, 00H, 00H, 00H, 00H, 82H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H2 00H, 00H, 40H, FFH, 40H, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 7FH, 81H, 00H, 00H0 00H, 00H, 7FH, FFH, 40H, 01H, 40H, 01H, 40H, 01H, 40H, 01H, 7FH, FFH, 00H, 00HH 00H, 00H, 7FH, FFH, 00H, 80H, 00H, 80H, 00H, 80H, 00H, 80H, 7FH, FFH, 00H, 00Hz 01H, 03H, 01H, 05H, 01H, 09H, 01H, 11H, 01H, 21H, 01H, 41H, 01H, 81H, 00H, 00H 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H8 00H, 00H, 7FH, FFH, 40H, 81H, 40H, 81H, 40H, 81H, 40H, 81H, 7FH, FFH ,00H, 00H: 00H, 00H, 00H, 00H, 00H, 00H, 00H, 82H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H停 01H, 00H, 02H, 00H, 1FH, FFH, 21H, 00H, A2H, 80H, 22H, 80H,3EH, 80H, 36H, 82H B6H, 81H, 76H, FFH, 36H, 80H, 36H, 80H, 3EH, 80H, 22H, 80H, 22H, 80H, 03H, 00H 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H键盘输入模块 键盘输入监视模块中的8155芯片采用PA口输出,PB口输出和PC口输入的控制方式。PA7PA0 八位LED数位选择:PA0 1:最右边的LED亮 0:最右边的LED暗PA1 1:右边第二个的LED亮 0:右边第二个的LED暗PA2 1:右边第三个的LED亮 0:右边第二个的LED暗PA3 1:右边第四个的LED亮 0:右边第二个的LED暗PA4 1:右边第五个的LED亮 0:右边第二个的LED暗PA5 1:右边第六个的LED亮 0:右边第二个的LED暗PA6 1:右边第七个的LED亮 0:右边第二个的LED暗PA7 1:最左边的LED亮 0:最左边的LED暗接线:8051 P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0 8155 命令字口 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 8000HPA口 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 8101HPB口 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 8102HPC口 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 8102H按键:将PA口置0,当发现键盘按下时,相应的PC口输入0,如:PA0 0 1键按下 PC0入0,1键未按下 PC0入1 2键按下 PC1入0,1键未按下 PC0入1 3键按下 PC2入0,1键未按下 PC0入1 4键按下 PC3入0,1键未按下 PC0入1 5键按下 PC4入0,1键未按下 PC0入1 6键按下 PC5入0,1键未按下 PC0入1 7键按下 PC6入0,1键未按下 PC0入1 8键按下 PC7入0,1键未按下 PC0入1 1 无法检测键是否按下 通过对按键的检测,将按键对应的数字(即TAB表中该数字编码的偏移量)放入缓冲区,再调用显示程序,找到TAB表中该数字位置,根据编码输出数字PB口PB70 字型编码输出 波形显示模块 将正弦波量化成不同大小的电压植输出给波形发生器在屏幕上显示不同振幅的亮点,根据所按键调用不同的延时程序以得到不同频率的正弦波。 当8155检测到该0后,从PB口输出,显示相应的数字。三、软件设计1、程序流程图 开 始 开 始 扫描显示器 初始化寄存器 置PA口出置PA口显示的字 PC口送入取字型编码,PB口显示对应 A 取 反 延 迟按下键? 显示位左移 N8位LED扫描完? YA01? N08H58H Y Y 返 回 NA11?08H58H Y 8位显示器流程图 N08H58HA71? Y N调用显示器程序 键盘流程图2、程序清单及说明汉字显示: 正弦波 4: 50Hz 5:30Hz 6:20Hz 8:停 MOV R0, #00HMOV R1, #00HMOV R2, #00HMOV R3, #00HMOV R4, #00HMOV R5, #00H ;系统初始化MOV R6, #00HMOV R7, #00HMOV R8, #00HMOV R9, #00HCLR A CLR BCLR CCLR D ORG 0030H MOV R0, #0FFH ;控制口址 MOV A, #80H ;控制字10000000 方式0,PA PB PC口输出 MOV R0, A ;控制字送到控制字端口AGAI: MOV DPTR, #DATA ;DPTR指向数据表首址 MOV A, DPL ;低8位的地址送入A ADD A, #20H MOV 30H, A ;表长-1的低位送入30H MOV A, DPH ;高8位的地址送入寄存器A ADDC A, #02H MOV 31H, A ;表长-1的高位送入31H(表末址送31H,30H)REPE: MOV R2, #0FFH ;字符重复次数送R2STAR: MOV R3, #00H ;相对DATA首址的偏移量送R3 MOV R4, #0FEH ;从最左一列开始SCAL: MOV P1, #0FEH ;P1.0出,选中最上面的374 MOV R0, #0FEH ;PC口址 MOV A, R4 MOVX R0, A ;列出PC口 MOV A, R3 MOVC A, A+OPTR MOV R0, #0FCH ;PA口址 MOVX R0, A ;行出PA口(上半字) INC R3 ;偏移量加1 MOV A, R3 MOVC A, A+DPTR MOV R0, #0FDH ;PB口址 MOVX R0, A ;行出PA口(下半字) ACALL DL ;调用延时子程序 INC R3 ;偏移量加1 MOV A, R4 SETB C RLC A ;循环左移1位 MOV R4, A CJNE A, #0FFH, SCAL ;8列扫描完了么?未,则转SCAL MOV R4, #0FEHSCAR: MOV P1, #0FDH ;P1.1=0,选中第二个374 MOV R0, #0FEH ;

温馨提示

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

评论

0/150

提交评论