电子系统设计实践报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电气工程学院基于51单片机的低通滤波器

系统设计报告

姓名:胡雄飞孟旭迪

学号:**********,**********

专业:测控技术与仪器(电类)

2016年 5 月25 日

低通滤波器的设计

完成人:胡雄飞(电测控31);孟旭迪(电测控31)

摘要:51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL 公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

这次电子系统设计是以单片机为基础,设计一个低通滤波器。利用单片机外接数模和模数转换器,运算放大电路,以及FT2232,达到与上位机通讯的目的,通过上位机进行数据处理,从而达到滤波的目的。也就是说下位机为单片机,控制DA,AD,FT2232的工作,以及串口通讯。上位机为Labview虚拟仪器,用于数据采集,数据存储,和数据的处理。

关键词:低通滤波器上位机采样 AD DA 串口

1.设计要求

低通滤波器是容许低于截止频率的信号通过,但高于截止频率的信号不能通过的电子滤波装置。在电子系统中应用得很多。

本课题设计的频率计应达到如下指标:

1.AD能很好的工作,DA也能正常运作(虽然不会用到)

2.串口通讯能达到数据基本的传输不丢失,能传输十位的AD采集数据;

3.上位机数据能够正常的接收,存储并处理数据

4. 低通滤波器上位机前面板的低通截至频率能够调整,滤波器阶数可调。

5. 滤波后的波形不会畸变,滤波结果完好,波形圆滑;

2.总体设计

2.1系统组成及工作原理

AT89C51单片机时钟电路采用内部方式,外接陶瓷谐振器(频率为

11.0592MHz)。DAC0832来进行DA转换,FT2232进行数据的传输,串口通讯。基于Labview的虚拟仪器上位机。

系统的总体框图

2.2

低通滤波器的原理

模拟信号可以通过数/模转换器转换成数字信号,因此可通过产生数字信号上传给上位机的方法来获得所需要的数据,Labview处理数据,进行DA转换,51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,AD功能。

单片机和上位机是整个滤波器的核心部分,通过程序的编写和执行,对模拟信号进行模数转换,并通过下位机传输数据,上位机接受数据,上位机进行数据处理,DA转换,波形滤波。

3硬件设计

3.1整体硬件组成 DA部分。

单片机以及AD部分

3.2系统核心模块

上位机模块

4.系统测试及工程4.1系统测试

4.1.1上电测试

首先仔细检查了电路板的电气连接,检查完了各处是否有虚焊的情况,然后用万用表测试了VCC和GND之间的电阻,发现电阻为25.961K,说明此时板子内部没有出现短路的状况。

4.2.2 串口测试:

串口测试的程序:

#include //包含文件

#include

#define SYSCLK 11059200 //MHz

#define BAUD 9600 //串口波特率

#define times 500 //微秒

#define T2x12 1 //计数脉冲12分频

#define S2RI 0x01

#define S2TI 0x02

sbit clk_A=P1^2; //P1.1做数字输出口线unsigned char th2x,tl2x; //声明变量

unsigned int y;

unsigned char x,i;

main()

{

x=0xa6;

S2CON=0x50; //8位UART,串口使能

put_AUXR_T2x12(1);

y=65536-(SYSCLK/4/BAUD); //计算时间常数

th2x=y>>8; //获取时间常数高8位

tl2x=y; //获取时间常数低8位

T2H=th2x; //置入时间常数高8位

T2L=tl2x; //置入时间常数低8位

AUXR=0x14; //定时器2使能,T2x12=1 //AUXR|=0x01; //sist2=1,使用定时器2作为波特率发生器

IE2=0x01;

EA=1;

S2BUF=0x33; //如果要与LABVIEW通信,必须先发送一个数据,否则程序不进中断

while(1);

}

void uart2() interrupt 8 //中断方式

{

if(S2CON & S2RI) //判断是否S2CON.0(S2RI)=1接收中断

{

S2CON &= ~S2RI; //S2RI=0

x=S2BUF;

S2BUF=x;

}

if(S2CON & S2TI) //判断是否S2CON.1(S2TI)=1接收中断

{

S2CON &= ~S2TI; //S2TI=0

clk_A=~clk_A;

}

}

4.1.2 AD测试:

#include

unsigned int result;

float result_d;

unsigned char flag;

main()

{

P1ASF=0X08; //P1.2为模拟电压输入端

CLK_DIV=0X20; //ADJR位置0,结果存放格式是ADC_RESL的8位加上ADC_RES 的最低两位

ADC_CONTR=0X8B; //ADC上电、选择P1.2为转换通道、转换速度最低、启动ADC 转换

EA=EADC=1; //允许总中断、ADC中断

while(1)

{

if(flag==1)

{

result_d=(result*4.9)/1024; //将结果计算成十进制

ADC_CONTR=0X8B; //重新启动ADC并清除ADC中断标志位(ADC_FLAG)

//当一次转换完成ADC转换控制位(ADC_START)会清0,

//停止再次转换,所以需要再启动一次ADC

相关文档
最新文档