简易数字示波器设计方案Word格式.docx

上传人:b****6 文档编号:22039738 上传时间:2023-02-02 格式:DOCX 页数:36 大小:1.19MB
下载 相关 举报
简易数字示波器设计方案Word格式.docx_第1页
第1页 / 共36页
简易数字示波器设计方案Word格式.docx_第2页
第2页 / 共36页
简易数字示波器设计方案Word格式.docx_第3页
第3页 / 共36页
简易数字示波器设计方案Word格式.docx_第4页
第4页 / 共36页
简易数字示波器设计方案Word格式.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

简易数字示波器设计方案Word格式.docx

《简易数字示波器设计方案Word格式.docx》由会员分享,可在线阅读,更多相关《简易数字示波器设计方案Word格式.docx(36页珍藏版)》请在冰豆网上搜索。

简易数字示波器设计方案Word格式.docx

三种不同字符/字型的选择编码围为:

0000~0006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H~7FH显示半宽ASCII码字符,A1A0H~F7FFH显示8192种GB2312中文字库字形。

字符显示RAM在液晶模块中的地址80H~9FH。

字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如下表所示。

12864显示器图2-1

2.2单片机芯片选择方案

STC12C5A60S2是STC生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合。

STC12C5A60S2图2-2

2.3TL082双运放选择方案

运放电路是对输入的波形进行进一步的放大,已达到单片机的要求波形,以便对波形进行采集,从而达到设计目的,减少误差。

3硬件设计

3.1系统连接图

总体电路设计结构如图3-1所示

总设计图3-1

3.2键盘扫描电路的设计

总体电路结构如下图3-2

按键图3-2

由于设计的是示波器,在示波器显示波形的时候需要对波形的幅度频率进行调整,所以设计键盘对波形进行调整。

按扭作用四个按钮分别对应频率和幅度的加减调节,X轴减调节是减少频率,X轴加调节是增加频率,Y轴减调节是减少幅度,Y轴加调节是增加幅度。

3.3振荡复位电路

总体电路结构如图3-3所示

振荡复位电路图3-3

时钟振荡电路用于产生单片机正常工作时所需要的时钟信号,电路由两个30pF的瓷片电容和一个12MHz的晶振组成,并接入到单片机的XTAL1和XTAL2引脚处,使单片机工作于部振荡模式。

此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。

电路中两个电容C1、C2的作用使电路快速起振,提高电路的运行速度。

复位电路

复位电路的基本功能是:

系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。

为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位.

3.4最小系统

最小系统图3-4

3.5STC部AD采集

STC12C5A60S2单片机有8路10位高速AD转换器,P1^0-P1^7涉及寄存器:

P1ASF(模拟功能控制寄存器)、ADC_CONTR(ADC控制寄存器)、ADC_RES、ADC_RESL(转换结果寄存器)。

注意:

1、初次打开部A/D模拟电源需适当延时等部模拟电源稳定后,再启动A/D转换,启动A/D后,在转换结束前不改变任何I/O口的状态,有利于高精度A/D转换,若能将定时器/串行/中断系统关闭更好。

2、A/D转换模块使用的时钟为部R/C振荡器所产生的系统时钟

3、由于使用两套时钟,设置好ADC_CONTR后要加4个空延时操作才可以正确读到ADC_CONTR寄存器的值

3.6双运放电路

总体电路结构如图3-5所示

运放电路图3-5

4软件设计

4.1程序设计流程

如下图4-1所示

设计流程图4-1

4.2STC12C5A60S2部AD程式

#include<

STC12C5A60S2.h>

intrins.h>

#include"

lcd.h"

#defineADC_POWER0x80//AD电源控制

#defineADC_START0x08//AD转换控制

#defineADC_FLAG0x10//AD转换完成

#defineSpeed_00x00//540clk

#defineSpeed_10x20//360clk

#defineSpeed_20x40//180clk

#defineSpeed_30x60//90clk

#defineADC00x00//P1.0

#defineADC10x01//P1.1

#defineADC20x02//P1.2

#defineADC30x03//P1.3

#defineADC40x04//P1.4

#defineADC50x05//P1.5

#defineADC60x06//P1.6

#defineADC70x07//P1.7

voidAD_init(void);

doubleResult_Calculate(void);

voidSendData(ucharbyte);

//**********************************//

//A/D初始化//

voidAD_init(void)

{

AUXR1=0x04;

//转换结果高2位放在ADC_RES的低2位中,低8位放在ADC_RESL中

P1ASF=0x01;

//P1.0口作为模拟功能A/D使用

ADC_RES=0x00;

//结果清零

ADC_RESL=0x00;

ADC_CONTR=ADC_POWER|Speed_2|ADC0|ADC_START;

//打开电源,180CLK周期转换,选择P1.0作输入

_nop_();

EADC=1;

//允许A/D转换中断

EA=1;

//开总中断

}

//****************************************//

//串口初始化//

voidUART_init(void)

SM0=0;

//选择串口为方式1工作

SM1=1;

//8位数据波特率可变

REN=1;

BRT=0xDC;

AUXR=0x15;

//选择独立波特率发生器为串行

//口的波特率发生器,模式为1T

//******************************************//

//转换结果计算//

doubleResult_Calculate(void)

uinttemp;

doubleresult;

temp=ADC_RES*256+ADC_RESL;

result=temp*4.94/1024;

returnresult;

//串口发送数据//

voidSendData(ucharbyte)

SBUF=byte;

while(!

TI);

TI=0;

//主程序//

voidmain()

{

Init_LCD();

AD_init();

UART_init();

while

(1);

//A/D中断服务//

voidAD_Service(void)interrupt5

ADC_CONTR&

=!

ADC_FLAG;

//清标志

Printf_Decimal(Result_Calculate());

ADC_CONTR=ADC_POWER|Speed_2|ADC_START;

//开始下一次转换

#defineucharunsignedchar

#defineuintunsignedint

sbitPSB=P0^4;

//串/并行接口选择1-并行0-串行

sbitRS=P0^7;

//并行数据/命令选择,串行片选0-指令1-数据

sbitRW=P0^6;

//并行读写选择0-写1-读串行数据口

sbitE=P0^5;

//并行使能,串行同步时钟

voidDelay_ms(uinttime);

//延时

ucharBusy(void);

//读忙

ucharRead_Status(void);

//读状态

ucharRead_Date(void);

//读数据

voidWrite_Cmd(ucharcmd);

//写命令

voidWrite_Date(uchardate);

//写数据

voidInit_LCD(void);

//初始化LCD

voidLocation(ucharx,uchary);

//设定显示位置

voidClear_Screen(void);

//清屏

voidWrite_str(uchar*p);

voidPrintf_Decimal(doubleNum);

externvoidSendData(ucharbyte);

4.3主程式

#include"

stc12c5a60s2.h"

#defineuintunsignedint

sbitbusy=P0^7;

sbitrw=P3^6;

sbitrs=P3^7;

sbiten=P3^5;

uintdataADC_RES_DATA;

uintpdataa[128];

ucharad_t,ad_min,ad_max,max,min,num,windows,heng,zong,ab,num_1,num_k;

uintad_pp,freq;

ucharcodewave[]={0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x80,0x00,0x08,0x00,0x00,0x80,0x00,0x08,0x00,0x00,0x80,0x00,0x08,0x00,0x00,

0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x3E,0xF3,0xE7,0x00,0x00,0x11,0x7C,0x01,0xE0,0x78,0x00,0x00,0x04,0x40,0x00,0x00,

0x20,0x8A,0x08,0xB0,0x00,0x11,0x0C,0x01,0x10,0x44,0xC0,0x00,0x04,0x40,0x00,0x00,

0x20,0x8A,0x08,0xB0,0x00,0x11,0x18,0x01,0x10,0x44,0xC0,0x00,0x04,0x40,0x00,0x00,

0x

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

当前位置:首页 > 高等教育 > 农学

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

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