基于单片机的正弦信号发生器论文精品.docx

上传人:b****3 文档编号:27018808 上传时间:2023-06-25 格式:DOCX 页数:24 大小:468.12KB
下载 相关 举报
基于单片机的正弦信号发生器论文精品.docx_第1页
第1页 / 共24页
基于单片机的正弦信号发生器论文精品.docx_第2页
第2页 / 共24页
基于单片机的正弦信号发生器论文精品.docx_第3页
第3页 / 共24页
基于单片机的正弦信号发生器论文精品.docx_第4页
第4页 / 共24页
基于单片机的正弦信号发生器论文精品.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

基于单片机的正弦信号发生器论文精品.docx

《基于单片机的正弦信号发生器论文精品.docx》由会员分享,可在线阅读,更多相关《基于单片机的正弦信号发生器论文精品.docx(24页珍藏版)》请在冰豆网上搜索。

基于单片机的正弦信号发生器论文精品.docx

基于单片机的正弦信号发生器论文精品

第一章绪论

1.1课题简介

1.1.1课题来源

本课题适用于科学教研、生产实践和教学实验等领域。

它是有AT89C51单片机、DAC0832。

通过按键来实现波形的产生。

1.12技术现状

运用单片机来完成本设计具有好的实用性和操作性。

因为单片机具有体积小、功能强、成本低、应用面广等功能。

1.2单片机的产生和发展

1.21单片机的定义

计算机的发展经历了从电子管到大规模集成电路等几个发展阶段,随着大规模集成电路技术的发展,使计算机向性能稳定可靠、微型化、廉价方向发展,从而出现了单片微型计算机。

所谓单片微型计算机,是指将组成微型计算机的基本功能部件,如中央处理器CPU、存储器ROM和RAM、输入/输出(I/O)接口电路等集成在一块集成电路芯片上的微型计算机,简称单片机。

总体来讲,单片机可以用以下“表达式”来表示:

单片机=CPU+ROM+RAM+I/O+功能部件

1.22单片机的发展史及发展趋势

单片机的历史可以追朔到1974年,美国仙童公司研究出世界上第一台单片微型计算机F8,该机由两块集成电路芯片组成,结构奇特,具有与众不同的指令系统,深受民用电器和仪器仪表领域的欢迎和重视。

从此,单片机开始迅速发展,应用范围也在不断扩大。

 单片机的发展历史大致可分为下面三个阶段:

 第一阶段(1976年~1978年):

初级单片机微处理阶段。

以Intel公司是MCS-48为代表,此系列的单片机具有8为CPU、并行I/O端口、8位时序同步计数器,寻址范围不大于4KB,但是没有串行口。

 第二阶段(1978年~1982年):

高性能单片机微处理阶段,如Intel公司的MCS-51、Motorola公司的6801和Zilog公司的Z8等。

该类型单片机具有串行I/O端口,有多级中断处理系统,16位时序同步计数器,RAM,ROM容量加大,寻址范围可达64KB,有的芯片甚至还带有A/D转换接口。

由于该系统单片机应用领域极其广泛,各公司正大力改进其结构与性能。

 第三阶段(1982年~现在):

8位单片机微处理改良型及16位单片机微处理阶段。

1.3单片机的特点及应用

1.31单片机的特点

随着现代科技的发展,单片机的集成度越来越高,CPU的位数也越来越高,已能将所有主要部件都集成在一块芯片上,使其应用模式多、范围广,并具有以下特点:

①体积小,功耗低,价格便宜,重量轻,易于产品化。

②控制功能强,运行速度快,能针对性地解决从简单到复杂的各类控制问题,满足工业控制要求,并有很强的位处理和接口逻辑操作等多种功能。

③抗干扰能力强,适用温度范围宽。

由于许多功能部件集成在芯片内部,受外界影响小,故可靠性高。

④虽然单片机内存储器的容量不可能很大,但存储器和I/O接口都易于扩展。

⑤可以方便的实现多机和分布式控制

1.32单片机的应用

单片机的应用具有面广量大的特点,目前它广泛的应用于国民经济各个领域,对技术改造和产品的更新起着重要作用。

主要表现在以下几个方面:

①单片机在智能化仪器、仪表中的应用:

由于单片机有计算机的功能,它不仅能完成测量,还既有数据处理、温度控制等功能,易于实现仪器、仪表的数字化和智能化。

②单片机在实时控制中的应用:

单片机可以用于各种不太复杂的实时控制系统中,如一般性的温度控制、液面控制、电镀顺序控制等。

将测量技术、自动控制技术和单片机技术相结合,充分发挥单片机的数据处理和实时控制功能,使系统工作于最佳状态。

③单片机在机电一体化中的应用:

单片机有利于机电一体化技术的发展,已广泛应用于数控机床、医疗设备、汽车设备等。

④单片机在多机系统中的应用:

单片机在多机系统中的应用是将来单片机发展的主要模式,它可以提高单片机的可靠性,使系统运行速度更快。

⑤单片机在计算机外围设备中的应用:

单片机广泛应用于打印机、绘图机等多种计算机的外围设备,特别是用于智能终端,可大大减轻主机负担,提高系统的运行速度。

⑥单片机在家用电器中的应用:

单片具有体积小、重量轻、价格便宜等特点,所以家电产品中配上微电脑后,使其身价百倍,功能更强,使用方便,灵活,深得用户欢迎。

⑦单片机在通信中的应用:

单片机广泛应用于移动通信领域,使移动电话的功能更强大,操作更方便。

 

第二章AT89C51单片机的特性与功能

2.1单片机的应用与选择

8051是MCS-51系列单片机中的代表产品,它内部集成了功能强大的中央处理器,包含了硬件乘除法器、21个专用控制寄存器、64kB的程序存储器、256B字节的数据存储器、4组8位的并行口、两个16位的可编程定时/计数器、一个全双工的串行口以及布尔处理器。

由于MCS-51集成了几乎完善的8位中央处理单元,处理功能强,中央处理单元中集成了方便灵活的专用寄存器,硬件的加、减、乘、除法器和布尔处理机及各种逻辑运算和转移指令,这给应用提供了极大的便利。

MCS-51的指令系统近乎完善,指令系统中包含了全面的数据传送指令、完善的算术和逻辑运算指令、方便的逻辑操作和控制指令、对于编程来说,是相当灵活和方便的。

MCS-51单片机的工作频率为2-12MHz,当振荡频率为12MHz时,一个机器周期为1us,这个速度应该说是比较快的。

8051中集成了完善的各种中断源,用户可十分方便地控制和使用其功能,使得它的应用范围加大,可以说它可以满足绝大部分的应用场合。

MCS-51把微型计算机的主要部件都集成在一块心片上,使得数据传送距离大大缩短,可靠性更高,运行速度更块。

由于属于芯片化的微型计算机,各功能部件在芯片中的布局和结构达最优化,抗干扰能力加强,工作亦相对稳定。

因此,在工业测控系统中,使用单片机是最理想的选择。

单片机属于典型的嵌入式系统,所以它是低端控制系统最佳器件。

2.2芯片简介

2.21AT89C51性能简介

 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2.22AT89C51的主要特性

⑴8031CPU与MCS-51兼容

⑵4K字节可编程FLASH存储器(寿命:

1000写/擦循环)

⑶全静态工作:

0Hz-24KHz

⑷三级程序存储器保密锁定

⑸128*8位内部RAM

⑹32条可编程I/O线

⑺两个16位定时器/计数器

⑻5个中断源

⑼可编程串行通道

⑽低功耗的闲置和掉电模式

⑾片内振荡器和时钟电路

2.23AT89C51管脚功能

MCS-51系列单片机芯片均为40个引脚,HMOS工艺制造的芯片采用双列直插(DIP)方式封装,其引脚示意及功能分类如图2-1:

图2-1MCS-51引脚图

MCS-51系列单片机的40个引脚中有2个专用于主电源的引脚,2个外接晶体的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。

 VCC:

供电电压。

GND:

接地。

①P0口(P0.0~P0.7)为双向8位三态I/O口,当作为I/O口使用时,可直接连接外部I/O设备。

它是地址总线低8位及数据总线分时复用口,可驱动8个TTL负载。

一般作为扩展时地址/数据总线口使用。

②P1口(P1.0~P1.7)为8位准双向I/O口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1),可驱动4个TTL负载。

③P2口(P2.0~P2.7)为8位准双向I/O口,当作为I/O口使用时,可直接连接外部I/O设备。

它是与地址总线高8位复用,可驱动4个TTL负载。

一般作为扩展时地址总线的高8位使用。

④P3口(P3.0~P3.7)为8位准双向I/O口,是双功能复用口,可驱动4个TTL负载。

P3口也可作为AT89C51的一些特殊功能口,如下所示:

P3口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

综上所述,MCS-51系列单片机的引脚作用可归纳为以下两点:

⑴单片机功能多,引脚数少,因而许多引脚都具有第2功能;

⑵单片机对外呈3总线形式,由P2、P0口组成16位地址总线;由P0口分时复用作为数据总线;由ALE、PSEN/、EA/与P3口中的INT0/、INT1/、T0、T1、WR/、RD/共10个引脚组成控制总线。

 

第三章硬件设计

3.1正弦信号发生器设计方案框图

图3-1设计方框图

3.2DAC0832硬件简介

3.2.1管脚功能如图3-2所示:

图3-2DAC0832管脚图

DAC0832的主要特性参数如下:

*分辨率为8位;

*输出为电流信号,电流的建立时间为1us;

*可单缓冲、双缓冲或直接数字输入;

*只需在满量程下调整其线性度;

*单一电源供电(+5V~+15V),低功耗,20mW;

*参考电压可以达到±10V;

*直接的数字接口可以与任何一款单片机相连。

DAC0832的引脚功能:

*D0~D7:

8位数据输入线,TTL电平,通常与单片机的数据总线相连,用于输入CUP送来的待转换数字量。

有效时间应大于90ns(否则锁存器的数据会出错);

*ILE:

数据锁存允许控制信号输入线,高电平有效;

*

片选信号输入线(选通数据锁存器),低电平有效;

*

数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。

由ILE、

的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;

*

数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;

*

DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。

的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。

*IOUT1:

电流输出端1,其值随DAC寄存器的内容线性变化;

*IOUT2:

电流输出端2,其值与IOUT1值之和为一常数;

—当DAC寄存器内容全为1时,IOUT1为最大,IOUT2=0;

—当DAC寄存器内容全为0时,IOUT1=0,IOUT2为最大;

为了保证输出电流的线性,应将IOUT1及IOUT2接到外部运算放大器的输入端上。

*Rfb:

反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;

*Vcc:

芯片工作电源,范围为+5V~+15V;

*VREF:

基准电压输入线,VREF的范围为-10V~+10V;

*AGND:

模拟信号地,为模拟信号和基准电源的参考地;

*DGND:

数字信号地,为工作电源地和数字逻辑地;

3.2.2DAC0832芯片与单片机硬件接口设计

DAC0832与MCS-51单片机的连接方式:

根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种连接方式:

直通方式、单缓冲方式和双缓冲方式。

1、双缓冲方式:

进行两级缓冲;

2、单缓冲方式:

只进行一级缓冲;

3、直通方式:

不进行缓冲,适用于比较简单的场合。

本设计采用的是直通连接方式。

具体电路设计如图3-3、3-4所示:

图3-3连接图

图3-4连接图

3.2.3放大整形电路

为了输入的是小信号时也能对精确的测出它的频率,所以在信号的输入口加电压放大。

有时输入的信号波形不是很好时,放大后也是失真的信号,这就会影响到所测信号的频率,因此要经过整形。

其电路如图3-5所示:

图3-5放大电路

3.3LCD1602硬件介绍

图3-6LCD1602引脚图

LCD1602引脚及其功能介绍如表3-1所示:

表3-1

管脚号

管脚名称

LEVER

管脚功能描述

1

VSS

0V

电源地

2

VDD

5.0V

电源电压

3

VEE

对比调整电压

续表

4

RS

H/L

RS=“H”,表示DB7~DB0为显示数据

RS=“L”,表示DB7~DB0为显示指令数据

5

R/W

H/L

R/W=“H”,E=“H”,数据被读到DB7~DB0

R/W=“L”,E=“H→L”DB7~DB0的数据被写到IR或DR

6

E

H/L

使能信号:

R/W=“L”,E信号下降沿锁存DB7~DB0

R/W=“H”,E=“H”

DRAM

数据读到

D7~D0

7

D0

H/L

数据线

8

D1

H/L

数据线

9

D2

H/L

数据线

10

D3

H/L

数据线

11

D4

H/L

数据线

12

D5

H/L

数据线

13

D6

H/L

数据线

14

D7

H/L

数据线

 

第四章基于51单片机的正弦信号发生器设计

4.1正弦信号发生器程序的流程图如图4-1所示:

图4-1流程图

4.2程序设计

#include//头文件

#defineucharunsignedchar

#defineuintunsignedint

sbitlcdrw=P3^3;//位变量的定义

sbitlcdrs=P3^2;//位变量的定义

sbitlcde=P3^4;//位变量的定义

sbits1=P2^0;//位变量的定义

sbits2=P2^1;//位变量的定义

sbits3=P2^2;//位变量的定义

sbitcs1=P3^5;//位变量的定义

sbitcs2=P3^6;//位变量的定义

uchars1num,a,ys,j;//变量的定义(字符型)

uintfre;//变量的定义(整型)

ucharcodetosin[256]={

0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,

0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,

0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,

0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,

0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,

0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,

0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,

0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,

0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,

0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,

0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,

0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,

0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,

0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,

0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,

0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,

0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,

0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,

0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,

0x76,0x79,0x7c,0x80};/*正弦波码*/

voiddelay(uintz)//延时子程序

{

uchari,j;

for(i=z;i>0;i--)

for(j=110;j>0;j--);

}

voiddelay1(uinty)//延时子程序

{

uinti;

for(i=y;i>0;i--);

}

voidwrite_com(ucharcom)//1602写指令

{

lcdrs=0;

P1=com;

delay(5);

lcde=1;

delay(5);

lcde=0;

}

voidwrite_data(uchardate)//1602数据

{

lcdrs=1;

P1=date;

delay(5);

lcde=1;

delay(5);

lcde=0;

}

voidinit()//初始化

{

lcdrw=0;

lcde=0;

cs2=0;

cs1=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80+0x00);

write_data(0x77);//写wave:

write_data(0x61);

write_data(0x76);

write_data(0x65);

write_data(0x3a);

write_com(0x80+0x40);//写f:

write_data(0x66);

write_data(0x3a);

}

voidwrite_f(uintdate)//写频率

{

ucharqian,bai,shi,ge;

qian=date/1000;

bai=date/100%10;

shi=date/10%10;

ge=date%10;

write_com(0x80+0x42);

write_data(0x30+qian);

write_data(0x30+bai);

write_data(0x30+shi);

write_data(0x30+ge);

write_data(0x48);

write_data(0x5a);

}

voidxsf()//显示频率

{

if(s1num==1)//if语句(判断是否是状态1)

{

fre=(1000/(9+3*ys));//频率计算公式

write_f(fre);//写频率

}

}

voidkeyscanf()//按键部分

{

if(s1==0)

{

delay(5);

if(s1==0)

{

while(!

s1);//无限循环函数

s1num++;//s1num+1

if(s1num==1)//if语句(判断是否是状态1)

{

ys=0;

write_com(0x80+0x05);

write_data(0x73);//写sine:

write_data(0x69);

write_data(0x6e);

write_data(0x65);

write_data(0x20);

write_data(0x20);

}

if(s1num==2)//if语句(判断是否是状态2)

{

s1num=0;

P1=0;

write_com(0x80+0x05);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_com(0x80+0x42);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

}

}

}

if(s2==0)//按键减频率

{

delay(5);

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

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1