课程设计(论文)-基于52单片机的信号发生器设计.doc

上传人:韩长文 文档编号:3971952 上传时间:2019-10-11 格式:DOC 页数:32 大小:6.08MB
返回 下载 相关 举报
课程设计(论文)-基于52单片机的信号发生器设计.doc_第1页
第1页 / 共32页
课程设计(论文)-基于52单片机的信号发生器设计.doc_第2页
第2页 / 共32页
课程设计(论文)-基于52单片机的信号发生器设计.doc_第3页
第3页 / 共32页
课程设计(论文)-基于52单片机的信号发生器设计.doc_第4页
第4页 / 共32页
课程设计(论文)-基于52单片机的信号发生器设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《课程设计(论文)-基于52单片机的信号发生器设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)-基于52单片机的信号发生器设计.doc(32页珍藏版)》请在三一文库上搜索。

1、目录一、 设计要求:3二、 设计内容:31. 硬件电路设计方案论证:32. 硬件电路设计4 核心电路:89C52单片机简介及其外围电路设计4A. AT89C52简介4B. 管脚说明:5C. 外围电路设计6 DAC0832简介及其外围电路7A. 芯片简介:7B. 特性参数:8C. 管脚说明:8D. 工作方式9l 直通方式:9l 单缓冲方式:9l 双缓冲方式:10D. 基准电压11 LCD1602简介及其设计12A. LCD1602简介12B. 管脚说明:12C. 参数特性:13D. LCD1602控制指令:13E. LCD1602控制信号线:143. 软件流程图:154. 周期的设置以及改变的步

2、进:175. 仿真结果17l 开机画面:17l 波形仿真:17(1)方波:17(2) 三角波:19(3) 正弦波:21(4) 改变振幅:(以正弦波为例)246. 源程序24三、 设计感想32四、 参考文献32基于52单片机的信号发生器设计摘要:函数信号发生器作为一种常用的信号源,是现代测试领域中应用最为广泛的通用仪器之一。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都要有信号源,由它产生不同频率不同波形的信号,加到被测器件上,用其他仪器观察测量被测元件的输出响应,用以分析确定它们的性能参数。信号发生器是电子测量领域最基本、应用最广泛的电子仪器、它可以产生方波、三角波、正弦波等信号

3、,因而广泛应用于通信,雷达,导航灯领域。本次智能仪器课程设计的信号发生器以52系列单片机为核心,实现简易,低频的信号输出。关键字:89C52,信号发生器1、 设计要求:1.信号发生器可产生方波,三角波,正弦波信号;2.信号的振幅,频率可调,波形可切换;3.信号的名称,周期可用LCD显示屏显示。 2、 设计内容:1. 硬件电路设计方案论证:1 采用模拟电路方法,用555振荡器产生频率,振幅可调的方波,方波经过积分电路产生三角波,三角波经过二阶有源低通滤波产生正弦波。优点:信号精确度高,所产生的信号为模拟信号,更可靠;缺点:信号的频率改变较为复杂,频率的显示复杂,且计算困难。2 采用数字方法,用8

4、9C52单片机为核心,以单片机P0口为数据输出口,数据输出加到DAC0832上,DAC0832采用单缓冲连接方式,通过单片机产生的数据的变化,DAC0832实时产生不同形式波形优点:波形建立方便,快速;频率调节方便,呈严格线性关系,显示方便;缺点:波形为离散波形,精确度比模拟波形差用单片机产生波形,由于单片机执行速度快,所以,误差很小,所以此次设计采用第二种设计方案。2. 硬件电路设计1 核心电路:89C52单片机简介及其外围电路设计 图2.2.1 AT89C52单片机A. AT89C52简介 AT89C52单片机是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的C

5、MOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而R

6、AM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。这里选用的时钟振荡频率为12MHZ。B. 管脚说明:l VCC:供电电压。l GND:接地。 l P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 l P1口:P1口是一个内部提供

7、上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 l P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对

8、外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口,管脚 备选功能 l P3.0 RXD(串行输入口) l P3.1 TXD(串行输出口) l P3.2 /INT0(外部中断0) l P3.3 /INT1(外部中断1) l P3.4 T0(计时器0外部输入)l

9、P3.5 T1(计时器1外部输入) l P3.6 /WR(外部数据存储器写选通) l P3.7 /RD(外部数据存储器读选通) l RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。l ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执

10、行MOVX,MOVC指令是ALE才起用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。l /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 l XTAL1:反向振荡放大器的输入及内部时钟工

11、作电路的输入。 l XTAL2:来自反向振荡器的输出C. 外围电路设计 图2.2.2 单片机复位电路和时钟电路l 时钟电路:时钟电路的连接采用内部时钟方式,连接方法如上图,AT89C52有一个用于构成内部振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与最为反馈元件的片外适应晶体或陶瓷谐振器一起构成自激在黄牛党电路。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有严格要求,但是电容太小会轻微影响振荡频率的高低和振荡器工作稳定性以及起振的难易程度故这里电容使用30PF的常用于单片机振荡电路中的电容。l

12、复位电路:单片机的复位是靠外电路实现的,在时钟工作以后米之遥单片机的RST引脚上出现2个周期以上的高电平,单片机便实现初始化状态复位。为了保证应用系统可靠的复位,通常是RST引脚保持10ms以上的高电平。复位电路连接如上图所示。此电路仅用一个电容,一个电阻和一个按键开关,系统上电时,在RC电路充电过程中由于电容连段的电压不能跳变,故RST端电平呈高电平,系统复位。经过一段时间,电容充电,使得RST端呈低电平,复位结束。l 中断申请:如下图,本次设计中用到了外部中断0和外部中断1,在改变信号频率的时候,通过按键开关,触发外部中断0(减少频率)或者外部中断1(增加频率)以起到增加延时和减少延时的目

13、的,从而达到改变频率的目的,连接图如下: 图2.2.3 外部中断与AT89C52连接方式 图2.2.4 按键开关连接方式l P0口上拉电阻:由于P0口在用做数据线的时候,无法输出高电平,所以在实际电路中要借助上拉电阻,使得在P0口输出高电平时,通过上拉电阻使得P0口正常输出,而在输出低电平时,P0口又可将电平拉低,实现高低电平的切换输出,否则讲无法输出高电平。图2.2.5 上拉电阻与单片机连接方法2 DAC0832简介及其外围电路A. 芯片简介: DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片 以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广

14、泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。其封装和元件图分别如下:图2.2.6 DAC0832封装图 图2.2.7 DAC0832元件在proteus中的元件图B. 特性参数:l 分辨率为8位; l 电流稳定时间1us; l 可单缓冲、双缓冲或直接数字输入; l 只需在满量程下调整其线性度; l 单一电源供电(+5V+15V); l 低功耗,20mW。C. 管脚说明:l D0D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错); 此次设计中,D0D7数据口与单片机P0口相连,实现数据的传输,连接方式如下: 图2

15、.2.8 单片机一端连接方式 图2.2.9 DAC0832一端连接方式l ILE:数据锁存允许控制信号输入线,高电平有效; l CS:片选信号输入线(选通数据锁存器),低电平有效; l WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存; l XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效; l WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR2、XFER的逻辑组合产生LE2,当LE2为高电平

16、时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。 l IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化; l IOUT2:电流输出端2,其值与IOUT1值之和为一常数; l Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度; l Vcc:电源输入端,Vcc的范围为+5V+15V; l VREF:基准电压输入线,VREF的范围为-10V+10V; l AGND:模拟信号地 l DGND:数字信号地 注:由于DAC0832输出信号为电流信号,为了得到电压信号,因而在输出端需加一级运算放大器,使得输出信号变为

17、电压信号,连接方法如下图: 图2.2.10 运算放大器与DAC0832连接方法D. 工作方式 DAC0832可工作于三种方式:直通方式、单缓冲方式和双缓冲方式。l 直通方式:当DAC0832片选信号与写信号、及传送控制信号的引脚全部接地,允许输入所存信号ILE接+5V,其工作于直通方式,数字量一旦写入,就直接进入DAC寄存器,进行D/A转换,但由于直通方式不能直接与系统总线连接,另需锁存器,故很少应用l 单缓冲方式:所谓单缓冲方式,就是使DAC0832的两个输入寄存器中有一个处于直通方式,而另一个处于受控制的所存方式,当人也可使两个寄存器同时选通或者锁存。因此,单缓冲方式有三种不同接法:如下图

18、所示: 图2.2.11 DAC寄存器直通方式 图2.2.12 输入寄存器直通方式图2.2.13 两寄存器同时选通所存l 双缓冲方式:所谓双缓冲方式,就是把DAC0832的两个寄存器都接成受控所存方式。由于芯片中有两个数据存储器,这样就可以将8位输入数据先保存在“输入寄存器”中,当需要D/A转换时,再将数据从寄存器送入“DAC寄存器”锁存,并进行D/A转换输出。采用这种方式,可以克服在输入数据更新期间输出模拟量随之不稳定的现象。这时,可以再上一次模拟量输出同时,将下一次要转换的数据事先存入“输入寄存器”中,一方面克服了不稳定现象,另一方面提高了转换速度。用这种方式可同时更新多个D/A转换器输出。

19、连接方式如下: 图2.2.14 双缓冲方式连接方法 由于本次设计单片机的时钟频率为12MHZ,在满足DAC0832的数据输入的准确性要求同时,为了提高转换速度,本次设计采用单缓冲连接方式(DAC寄存器直通方式),即将和接地,用P2.0控制,与单片机WR信号口相连实现单缓冲方式,本次设计,单片机分配给DAC0832的地址为0EFFH。连接如下:图2.2.15 单片机与DAC0832控制线连接方法注:在使用DAC0832时候要注意一下几点:第一,WR选通脉冲应该有一定宽度,通常要大于500ns,尤其是选择+5电压时,更应满足此要求,如果选择+15,则WR脉冲宽度大于100ns即可,此时为芯片最佳工

20、作状态;第二保持数据输入有效时间不小于90ns,否则数据将错误D. 基准电压 由于DAC0832基准电压可调,可在+5V+15V范围内变动,因此此次设计在基准电压选择口中放入三个可选基准电压,分别为+5V,+10V和+15V实现输出信号幅度调节。连接方式如下图:图2.2.16 DAC0832基准电压选择方式3 LCD1602简介及其设计A. LCD1602简介 图2.2.17 LCD1602实物图图2.2.18 LCD1602在proteus中的元件图 工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) (注:为了表示的方便 ,后文皆以1表示高电平,0表示低电平。) 1602液

21、晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。B. 管脚说明:l VSS为电源地 l V

22、DD接5V电源正极 l V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。l RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 l RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 l E(或EN)端为使能(enable)端。 l 第714脚:D0D7为8位双向数据端。 l 第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。C. 参数特性:l +5V电压,对比度可调 l 内含复位电路l 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移

23、位等多种功能l 有80字节显示数据存储器DDRAM l 内建有160个5X7点阵的字型的字符发生器CGROM l 8个可由用户自定义的5X7的字符发生器CGRAMD. LCD1602控制指令:指令功能清屏清DDRAM和AC值归为AC=0,光标、画面回HOME位输入方式设置设置光标、画面移动方式显示开关控制设置显示、光标及闪烁开、关光标、画面移位光标、画面移动,不影响DDRAM功能设置工作方式设置(初始化命令)CGRAM地址设置设置CGRAM地址,A5A0=03FHDDRAM地址设置设置DDRAM地址读BF及AC值读忙标记BF值和地址计数器AC值写数据将数据写入DDRAM或CGRAM读数据从DD

24、RAM或CGRAM中读出值 常用命令格式以及功能简介:(1) 清屏:RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000001(2) 显示开关控制:RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000001DCBl D为显示开关: D=1为开,D=0为关l C为光标开关: C=1为开,C=0为关l B为闪烁开关: B=1为开,B=0为关(3) 功能设置RSR/WDB7DB6DB5DB4DB3DB2DB1DB000001DLNF*l DL=1: 8位数据接口l DL=0: 4位数据接口l N=1: 两行显示l N=0: 一行显示l F=1: 5*10点阵字符l

25、F=0: 5*7点阵字符(4) DDRAM置入初始值(选择显示位置)RSR/WDB7DB6DB5DB4DB3DB2DB1DB000 初始显示位置选择E. LCD1602控制信号线:l RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 l RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 l E(或EN)端为使能(enable)端。 此三端口为控制信号线,在不同的电平下完成控制指令和数据的输入,方式如下:(1) 指令输入:RS=L,RW=L,E为下降沿,D0D7为输入指令,完成LCD1602指令输入(2) 数据输入:RS=H,RW=L,E为下降沿,D0

26、D7为输入数据,完成LCD1602数据输入注:LCD1602字符显示表格:(英文字母及数字均为其ASCii码)图2.2.19 LCD1602字符显示表格控制信号线通单片机连接方法: 图2.2.20 LCD一端 图2.2.21 单片机一端注:由于DAC0832的地址为0effh,为了不在向LCD1602输入数据时LCD与DAC0832互不干扰,故将RS,RW和E分别于P2.7,P2.6和P2.5相连,在想DAC0832传输数据时,这三个端口为0,0,0为无效的指令,达到互不干扰的目的。3. 软件流程图: 图2.3.1 总体软件流程图2.3.2 方波放生程序软件流程图2.2.3 三角波发生程序流程

27、 图2.2.4 正弦波发生程序流程4. 周期的设置以及改变的步进: 此次设计中,产生方波和三角波原理类似,产生方波时,CPU向P0口输出0FFH,然后调用延时子程序,进行125个延时单位的延时,然后向P0口输出00H调用延时子程序,进行125延时单位的延时,因此一个周期的方波共有250个延时单位。三角波同理,在上升时,P0口数据从00H增加到124,然后再从124减少到0,没变化一次,调用一次延时子程序,因此一个周期共延时250个延时单位,同方波一致。对于正弦波,采用读取表格的形式,即在CPU内事先存入一个正弦波数据的表格,然后依次从存储单元内部调出表格数据,被调用一次数据则调用一次延时子程序

28、,共256个数据,由于最后6个数据在整个周期内的比例很小,因而可近似认为正弦波每个周期共有250个周期,这样以来,方波,正弦波,三角波的每个周期都共有250个延时单位,因此改变延时长度即可以实现周期的改变。延时子程序如下:DELAY:MOV R1,20HDEL1: NOP / NOP 1us,DJNZ 2us NOPDEL2: DJNZ R1,DEL1 RET 这个延时子程序对存放在20H中的数据计数,当其减小至0时,延时结束。此次设计单片机采用12MHZ的始终频率,故一个NOP用掉1us,一个DJNZ指令用掉2us故执行一次循环公用掉4us,而20H内的值可从4到196以4为步进增加或减少,

29、从而实现周期的增加和减少。例如,当20H内存入4时,整个周期就是4*4*250=4000us,触发一次外部中断,使20H内增加到8,则周期变为8*4*250=8000us依次类推,所以波形的周期变化可从4000us到196*4*250=196000us=0.196s以4000us=4ms的步进变化。5. 仿真结果l 开机画面:图2.3.5开机画面l 波形仿真: (1)方波:图2.3.6 周期为40000us的方波图2.3.7 周期为96000us的方波图2.3.8 周期为20000us的方波图2.3.9 改变振幅时波形显示(2) 三角波:图2.3.10 周期为40000us的三角波图2.3.1

30、1 周期为80000us的三角波图2.3.12 周期为16000us的三角波图2.3.13 振幅的改变(3) 正弦波:图2.3.14 周期为40000us的正弦波图2.3.15 周期为88000us的正弦波图2.3.16 周期为12000us的正弦波图2.3.17 振幅的改变(4) 改变振幅:(以正弦波为例) 图2.3.18 周期不变,振幅减小(由5V增加到10V)6. 源程序LJMP 1000HORG 0003H /INT0 中断申请入口,跳至IN0中断服务子程序JMP IN0ORG 0013H /INT1 中断申请入口,跳至IN1中断服务子程序JMP IN1ORG 50HIN0: PUSH

31、 ACC /增加延时量,减少频率 MOV A,20H ADD A,#4 MOV 20H,A MOV A,20H XRL A,#200 JNZ RE MOV 20H,#196 JMP REIN1: PUSH ACC / 减少延时量,增加频率 MOV A,20H SUBB A,#4 MOV 20H,A MOV A,20H JNZ RE MOV 20H,#4 JMP RERE: CALL DISTi CALL YANSHI POP ACC RETIORG 1000Hstart:SETB EA /开中断,向20H内置入初值为40 SETB EX1 SETB EX0 MOV 20H,#40/*初始化LC

32、D1602* /lcd: MOV R7,#0CH CALL writep MOV R7,#38H CALL writep MOV R7,#80H CALL writep/*开机画面* /dis: MOV R7,#8 MOV DPTR,#TAB0LD1: MOV A,#00H /写入ChangAn“ MOVC A,A+DPTR CALL writed INC DPTR DJNZ R7,LD1 MOV R7,#0C4H CALL writep MOV R7,#10 MOV DPTR,#TAB1 MOV A,#00HLD2: MOVC A,A+DPTR /另起一行空两格,写入“University”

33、 CALL writed INC DPTR MOV A,#00H DJNZ R7,LD2 CALL five MOV R7,#01H CALL writep JMP mode writep: CLR P2.7 CLR P2.6MOV A,R7MOV P1,ACALL ms SETB P2.5 CALL ms CLR P2.5 RETwrited: SETB P2.7 CLR P2.6MOV P1,ACALL msSETB P2.5 CALL msCLR P2.5RET /*选择波形*/mode: PUSH ACC /通过判断P3.5 P3.6 P3.7口哪个为低 MOV R7,#01H 选择相

34、应波形 CALL writep POP ACC JNB P3.5,square1 JNB P3.1,trangle1 JNB P3.0,sin1 JMP mode/*方波发生程序*/square1:CALL DISs /显示波形和周期数 CALL DISTisquare:MOV DPTR,#0EFFH MOV A,#00H MOVX DPTR,A MOV R0,#125 ls1: CALL DELAY /输出00H并延时125个延时单位 DJNZ R0,ls1 MOV R0,#125 MOV A,#0FFH MOVX DPTR,Als2: CALL DELAY /输出0FFH并延时125个延时

35、单位 DJNZ R0,ls2 JB P3.5,mode JMP square /*三角波发生程序*/trangle1:CALL DISt /显示波形和周期数 CALL DISTitrangle: MOV A,#00H MOV DPTR,#0EFFHup: MOVX DPTR,A /从00增加到124 CALL DELAY INC ACC CJNE A,#124,updown: MOVX DPTR,A /从124减少到00 DEC ACC CALL DELAY CJNE A,#00H,down JB P3.1,mode JMP trangle/*正弦波发生程序*/sin1:CALL DISsi

36、/显示波形和周期数 CALL DISTisin:MOV R0,#00H loop:MOV A,R0 MOV DPTR,#TABLE /查表子程序,输出正弦波形 MOVC A,A+DPTR MOV DPTR,#0EFFH MOVX DPTR,A CALL DELAY INC R0 CJNE R0,#0ffh,loop JB P3.0,space JMP backspace: JMP modeback:JMP sin /*延时4us子程序*/ DELAY:MOV R1,20HDEL1: NOP / NOP 1us,DJNZ 2us NOPDEL2: DJNZ R1,DEL1 RET/*延时100m

37、s子程序*/ YANSHI: MOV R5,#100 /用于INT0,INT1按键的延时避免重复YAN1: MOV R6,#124 触发NOPYAN2: NOP NOPDJNZ R6,YAN2DJNZ R5,YAN1RET/*延时5ms*/ms: MOV 30H,#13H /用于LCD1602写入程序或ms1: MOV 31H,#82H 数据时的延时 DJNZ 31H,$ DJNZ 30H,ms1 RET/*延时5s*/five: MOV 40H,#100 /开机画面延时five1:MOV 41H,#50five2:MOV 42H,#124 NOPfive3:NOP NOP DJNZ 42H,

38、five3 DJNZ 41H,five2 DJNZ 40H,five1 RET/*LCD显示波形名称*/DISs: /显示“WAVE:square” MOV R7,#11 MOV A,#00H MOV DPTR,#TAB2DISs1: MOVC A,A+DPTR CALL writed INC DPTR MOV A,#00H DJNZ R7,DISs1 RETDISt: MOV R7,#12 /显示“WAVE:trangle” MOV A,#00H MOV DPTR,#TAB3DISt1: MOVC A,A+DPTR CALL writed INC DPTR MOV A,#00H DJNZ R

39、7,DISt1 RETDISsi: MOV R7,#8 /显示“WAVE:sin” MOV A,#00H MOV DPTR,#TAB4DISsi1: MOVC A,A+DPTR CALL writed INC DPTR MOV A,#00H DJNZ R7,DISsi1 RET/*显示周期子程序*/DISTi:PUSH ACC /计算周期数所在表格偏移地址 MOV A,20H MOV B,#4 DIV AB DEC A MOV B,#6 MUL AB MOV 21h,A MOV R7,#0C0H /在LCD屏幕上另起一行 CALL writep MOV A,#0 /在LCD上显示T= MOV DPTR,#TAB8 MOVC A,A+DPTR CALL writed MOV

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1