基于MSP430简易示波器的设计讲解Word格式.docx

上传人:b****5 文档编号:21375947 上传时间:2023-01-30 格式:DOCX 页数:19 大小:103.42KB
下载 相关 举报
基于MSP430简易示波器的设计讲解Word格式.docx_第1页
第1页 / 共19页
基于MSP430简易示波器的设计讲解Word格式.docx_第2页
第2页 / 共19页
基于MSP430简易示波器的设计讲解Word格式.docx_第3页
第3页 / 共19页
基于MSP430简易示波器的设计讲解Word格式.docx_第4页
第4页 / 共19页
基于MSP430简易示波器的设计讲解Word格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于MSP430简易示波器的设计讲解Word格式.docx

《基于MSP430简易示波器的设计讲解Word格式.docx》由会员分享,可在线阅读,更多相关《基于MSP430简易示波器的设计讲解Word格式.docx(19页珍藏版)》请在冰豆网上搜索。

基于MSP430简易示波器的设计讲解Word格式.docx

P2OUT=0;

P2IE|=0x38;

//P1.4interruptenabled

P2IFG&

=~0x38;

will=0;

UCA0CTL0|=UCCKPL+UCMSB+UCMST+UCSYNC+UCCKPH;

//3-pin,8-bitSPImaster

UCA0CTL1|=UCSSEL_2;

//SMCLK

UCA0BR0|=0x04;

///2

UCA0BR1=0;

//

UCA0MCTL=0;

//Nomodulation

UCA0CTL1&

=~UCSWRST;

//**InitializeUSCIstatemachine**

P1OUT&

=~BIT5;

//NowwithSPIsignalsinitialized,

P1OUT|=BIT5;

//resetslave

ADC10初始化,开启参考源和中断。

ADC10CTL0=ADC10SHT_0+REFON+ADC10ON+ADC10IE;

ADC10CTL1=INCH_6;

ADC10AE0|=0x40;

显示初始化,对LCD的界面显示初始化。

Initial_ILI9340C();

Delay_ms(300);

LCD_TEST_SingleColor(Black);

LCD_TEST_PartColor(Blue);

for(wh=22;

wh<

220;

wh+=10)

{

LCD_draw_Line(wh,39,White);

LCD_draw_Line(wh,79,White);

LCD_draw_Line(wh,119,White);

LCD_draw_Line(wh,159,White);

LCD_draw_Line(wh,199,White);

LCD_draw_Line(wh,239,White);

LCD_draw_Line(wh,279,White);

}

Delay_ms(100);

for(co=2;

co<

320;

co+=10)

LCD_draw_Col(69,co,White);

LCD_draw_Col(119,co,White);

LCD_draw_Col(169,co,White);

2.2程控选择程序

根据按键的次数,在P2口中断改变will的值,并通过P2口输出给CD4051的ABC开关选择端,对放大倍数进行选择。

#pragmavector=PORT2_VECTOR

__interruptvoidPort_2(void)

{

if(P2IFG&

0x10)

{

while(0x10&

P2IN);

will++;

if(will==8)

will=7;

}

0x20)

while(0x20&

will--;

if(will==255)

will=0;

0x08)

while(0x08&

chan++;

if(chan==4)

chan=0;

P2OUT=will;

}

2.3采样频率设置

通过改变ADC10CTL1,通过按键次数对应值不同改变ADC10时钟的频率来调节电路的采样频率。

switch(chan)

{

case0:

break;

case1:

ADC10CTL1|=ADC10DIV0+ADC10DIV1;

case2:

ADC10CTL1|=ADC10DIV0+ADC10DIV2;

case3:

ADC10CTL1|=ADC10DIV0+ADC10DIV1+ADC10DIV2;

break;

}

2.4软件触发程序

只有在一定条件下才使lcd刷新,保证每次采集到的波形都从一点开始显示,防止由于每次采集到的点不同导致波形一直移动。

ADC10CTL0|=ENC+ADC10SC;

//Samplingandconversionstart

__bis_SR_register(CPUOFF+GIE);

if(cir==0)key1=ADC10MEM/5;

if(cir==1)key2=ADC10MEM/5;

if(cir==2)key3=ADC10MEM/5;

if(cir>

2&

&

key1>

key2&

key2>

key3)//((key1-100)/2)>

=(key2-100)

{

temp[0]=key1;

temp[1]=key2;

temp[2]=key3;

temp[cir]=ADC10MEM/5;

ADC10CTL0&

=~ENC;

2.5显示刷新程序

示波器是一个动态显示过程,因此在过程中可能会引起初始界面被部分覆盖,以此需要定时刷新初始界面。

trig++;

if(trig%20==0)

{

for(wh=22;

LCD_draw_Line(wh,39,White);

LCD_draw_Line(wh,79,White);

LCD_draw_Line(wh,119,White);

LCD_draw_Line(wh,159,White);

LCD_draw_Line(wh,199,White);

LCD_draw_Line(wh,239,White);

LCD_draw_Line(wh,279,White);

Delay_ms(300);

for(co=2;

LCD_draw_Col(69,co,White);

LCD_draw_Col(119,co,White);

LCD_draw_Col(169,co,White);

}

附:

源程序

#include"

msp430g2553.h"

//STC12单片机头文件

//颜色定义

#defineBlue0x001f

#defineYellow0xffe0

#defineGreen0x07e0

#defineBlack0x0000

#defineWhite0xffff

#defineRed0xf800

//引脚定义

#defineR_ESET1P1OUT|=BIT5;

//液晶RESET引脚,接单片机IO引脚

#defineR_ESET0P1OUT&

=~BIT5;

#defineC_D1P1OUT|=BIT3;

//液晶D/CX引脚,数据/命令控制,接单片机IO引脚

#defineC_D0P1OUT&

=~BIT3;

#defineC_S1P1OUT|=BIT0;

//液晶片选CS,P1.4为单片机SPI总线的SS引脚,通过MSTR位配置为IO模式

#defineC_S0P1OUT&

=~BIT0;

unsignedcharMST_Data,SLV_Data,wh,temp[320],trig=0,key1,key2,key3,will,chan=0;

unsignedintco,cir;

voiddelay(void)

unsignedintj;

for(j=100;

j>

0;

j--);

voidDelay_us(intvalue)////延时函数_us

while(value)

value--;

voidDelay_ms(intvalue)////延时函数_ms

while(value){

Delay_us(999);

value--;

voidLCD_Writ_Bus(chara){//数据写入函数8位

C_S0;

UCA0TXBUF=a;

__delay_cycles(50);

while(!

(IFG2&

UCA0TXIFG));

C_S1;

voidLCD_WRITE_CMD(charcmd){//8bit

C_D0;

LCD_Writ_Bus(cmd);

voidLCD_WRITE_COM_DATA(charcom_data){//8bit

C_D1;

LCD_Writ_Bus(com_data);

voidLCD_WRITE_DATA(inta){//16位数据,分两次,每次送8位

LCD_Writ_Bus(a>

>

8);

LCD_Writ_Bus(a);

//设置绘点窗口,x=0~239,y=0~319

voidAddress_set(unsignedintx1,unsignedintx2,unsignedinty1,unsignedinty2)

LCD_WRITE_CMD(0x2a);

//x轴

LCD_WRITE_DATA(x1);

LCD_WRITE_DATA(x2);

LCD_WRITE_CMD(0x2b);

//y轴

LCD_WRITE_DATA(y1);

LCD_WRITE_DATA(y2);

LCD_WRITE_CMD(0x2c);

voidLCD_TEST_SingleColor(intDiscolor){

inti,j;

Address_set(0,239,0,319);

for(i=0;

i<

320;

i++){

for(j=0;

j<

240;

j++){

LCD_WRITE_DATA(Discolor);

voidLCD_TEST_PartColor(intDiscolor){

Address_set(0,19,0,319);

20;

Address_set(220,239,0,319);

for(j=220;

//画一条横线

voidLCD_draw_Line(unsignedintx,unsignedinty,unsignedintcolor)

{inti;

Address_set(x,x+4,y,y);

5;

LCD_WRITE_DATA(color);

voidLCD_draw_Col(unsignedintx,unsignedinty,unsignedintcolor)

Address_set(x,x,y,y+4);

//液晶主控初始化

voidInitial_ILI9340C(void)

LCD_WRITE_CMD(0xCB);

LCD_WRITE_COM_DATA(0x39);

LCD_WRITE_COM_DATA(0x2C);

LCD_WRITE_COM_DATA(0x00);

LCD_WRITE_COM_DATA(0x34);

LCD_WRITE_COM_DATA(0x02);

LCD_WRITE_CMD(0xCF);

LCD_WRITE_COM_DATA(0XC1);

LCD_WRITE_COM_DATA(0X30);

LCD_WRITE_CMD(0xE8);

LCD_WRITE_COM_DATA(0x85);

LCD_WRITE_COM_DATA(0x78);

LCD_WRITE_CMD(0xEA);

LCD_WRITE_CMD(0xED);

LCD_WRITE_COM_DATA(0x64);

LCD_WRITE_COM_DATA(0x03);

LCD_WRITE_COM_DATA(0X12);

LCD_WRITE_COM_DATA(0X81);

LCD_WRITE_CMD(0xF7);

LCD_WRITE_COM_DATA(0x20);

LCD_WRITE_CMD(0xC0);

//Powercontrol

LCD_WRITE_COM_DATA(0x23);

//VRH[5:

0]

LCD_WRITE_CMD(0xC1);

LCD_WRITE_COM_DATA(0x10);

//SAP[2:

0];

BT[3:

LCD_WRITE_CMD(0xC5);

//VCMcontrol

LCD_WRITE_COM_DATA(0x3e);

//对比度调节

LCD_WRITE_COM_DATA(0x28);

LCD_WRITE_CMD(0xC7);

//VCMcontrol2

LCD_WRITE_COM_DATA(0x86);

//--

LCD_WRITE_CMD(0x36);

//MemoryAccessControl

LCD_WRITE_COM_DATA(0xC8);

LCD_WRITE_CMD(0x3A);

LCD_WRITE_COM_DATA(0x55);

LCD_WRITE_CMD(0xB1);

LCD_WRITE_COM_DATA(0x18);

LCD_WRITE_CMD(0xB6);

//DisplayFunctionControl

LCD_WRITE_COM_DATA(0x08);

LCD_WRITE_COM_DATA(0x82);

LCD_WRITE_COM_DATA(0x27);

LCD_WRITE_CMD(0xF2);

//3GammaFunctionDisable

LCD_WRITE_CMD(0x26);

//Gammacurveselected

LCD_WRITE_COM_DATA(0x01);

LCD_WRITE_CMD(0xE0);

//SetGamma

LCD_WRITE_COM_DATA(0x0F);

LCD_WRITE_COM_DATA(0x31);

LCD_WRITE_COM_DATA(0x2B);

LCD_WRITE_COM_DATA(0x0C);

LCD_WRITE_COM_DATA(0x0E);

LCD_WRITE_COM_DATA(0x4E);

LCD_WRITE_COM_DATA(0xF1);

LCD_WRITE_COM_DATA(0x37);

LCD_WRITE_COM_DATA(0x07);

LCD_WRITE_COM_DATA(0x09);

LCD_WRITE_CMD(0XE1);

LCD_WRITE_COM_DATA(0x14);

LCD_WRITE_COM_DATA(0x11);

LCD_WRITE_COM_DATA(0xC1);

LCD_WRITE_COM_DATA(0x48);

LCD_WRITE_COM_DATA(0x36);

LCD_WRITE_CMD(0x11);

//ExitSleep

Delay_ms(120);

LCD_WRITE_CMD(0x29);

//Displayon

LCD_WRITE_CMD(0x2c);

//LCD进入休眠状态

voidLCD_Sleep_ILI9340C(void)

LCD_WRITE_CMD(0x28);

//Displayoff

Delay_ms(20);

LCD_WRITE_CMD(0x10);

//EnterSleepmode

//LCD退出休眠状态

voidLCD_ExitSleep_ILI9340C(void)

//ExitSleep

//Displayon

voidmain()

__delay_cycles(75);

//Waitforslavetoinitialize

Initial_ILI9340C();

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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