东南大学MSP430LCD+ADC实验报告Word格式.docx

上传人:b****7 文档编号:22163951 上传时间:2023-02-02 格式:DOCX 页数:27 大小:34.25KB
下载 相关 举报
东南大学MSP430LCD+ADC实验报告Word格式.docx_第1页
第1页 / 共27页
东南大学MSP430LCD+ADC实验报告Word格式.docx_第2页
第2页 / 共27页
东南大学MSP430LCD+ADC实验报告Word格式.docx_第3页
第3页 / 共27页
东南大学MSP430LCD+ADC实验报告Word格式.docx_第4页
第4页 / 共27页
东南大学MSP430LCD+ADC实验报告Word格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

东南大学MSP430LCD+ADC实验报告Word格式.docx

《东南大学MSP430LCD+ADC实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《东南大学MSP430LCD+ADC实验报告Word格式.docx(27页珍藏版)》请在冰豆网上搜索。

东南大学MSP430LCD+ADC实验报告Word格式.docx

a+b+c+d+e+f,//Displays"

0"

b+c,//Displays"

1"

a+b+d+e+g,//Displays"

2"

a+b+c+d+g,//Displays"

3"

b+c+f+g,//Displays"

4"

a+c+d+f+g,//Displays"

5"

a+c+d+e+f+g,//Displays"

6"

a+b+c,//Displays"

7"

a+b+c+d+e+f+g,//Displays"

8"

a+b+c+d+f+g,//Displays"

9"

a+b+c+e+f+g,//Displays"

A"

c+d+e+f+g,//Displays"

b"

a+d+e+f,//Displays"

c"

b+c+d+e+g,//Displays"

d"

a+d+e+f+g,//Displays"

E"

a+e+f+g,//Displays"

f"

g"

c+e+f+g,//Displays"

h"

i"

b+c+d,//Displays"

j"

b+c+e+f+g,//Displays"

k"

d+e+f,//Displays"

L"

a+b+c+e+f,//Displays"

n"

a+b+c+d+e+f+g+dp//Displays"

full"

};

intsin_table[180];

int*sin_data_pr;

doublei=0;

intj;

voidmain(void)

{

WDTCTL=WDTPW+WDTHOLD;

//StopWDT

//8MHz

UCSCTL3=SELREF_2;

//SetDCOFLLreference=REFO

UCSCTL4|=SELA_2;

//SetACLK=REFO

UCSCTL0=0x0000;

//SetlowestpossibleDCOx,MODx

do{

UCSCTL7&

=~(XT2OFFG+XT1LFOFFG+DCOFFG);

//ClearXT2,XT1,DCOfaultflags

SFRIFG1&

=~OFIFG;

//Clearfaultflags

}while(SFRIFG1&

OFIFG);

//Testoscillatorfaultflag

__bis_SR_register(SCG0);

//DisabletheFLLcontrolloop

UCSCTL1=DCORSEL_6;

//SelectDCOrange16MHzoperation

UCSCTL2|=610;

//SetDCOMultiplierfor8MHz

//(N+1)*FLLRef=Fdco,(249+1)*32768=8MHz

__bic_SR_register(SCG0);

//EnabletheFLLcontrolloop

//Worst‐casesettlingtimefortheDCOwhentheDCOrangebitshavebeen

//changedisnx32x32xf_MCLK/f_FLL_reference.SeeUCSchapterin5xxUGfor

//optimization,32x32x8MHz/32,768Hz=250000=MCLKcyclesforDCOtosettle

__delay_cycles(650000);

//timerA

TA0CCTL0=CCIE;

//CCR0interruptenabled

TA0CCR0=370;

TA0CTL=TASSEL_2+MC_1+TACLR;

//SMCLK,upmode,clearTAR

for(j=0;

j<

180;

j++)

{

i+=PI/90;

sin_table[j]=(int)((sin(i)+1)*2048);

}

sin_data_pr=&

sin_table[0];

DAC12_0CTL0=DAC12IR+DAC12SREF_0+DAC12AMP_5+

DAC12ENC+DAC12CALON+DAC12OPS;

P5DIR=BIT1;

//打开扬声器的运放

P5OUT&

=~BIT1;

//Lcdinitial

Init_TS3A5017DR();

//ConfigureTS3A5017DRIN1andIN2

Init_lcd();

LcdGo

(1);

//打开液晶模块

LCD_Clear();

LCDMEM[5]=char_gen[0];

LCDMEM[4]=char_gen[0];

LCDMEM[3]=char_gen[3];

for(;

;

__bis_SR_register(CPUOFF+GIE);

//EnterLPM0

DAC12_0DAT=*sin_data_pr++;

if(sin_data_pr>

=&

sin_table[180])

sin_data_pr=&

DAC12_0DAT&

=0xFFF;

//Modulo4096

}

#pragmavector=TIMER0_A0_VECTOR

__interruptvoidTIMER0_A0_ISR(void)

staticunsignedintch=0;

ch++;

if(ch>

=50000)//0.93s

ch=0;

__bic_SR_register_on_exit(CPUOFF);

//ClearLPM0bitsfrom0(SR)

 

//LCD初始化

voidInit_lcd(void)

LCDBCTL0=LCDDIV0+LCDPRE0+LCDMX1+LCDSSEL+LCDMX1+LCD4MUX;

LCDBPCTL0=LCDS0+LCDS1+LCDS2+LCDS3+LCDS4+LCDS5+LCDS6+LCDS7+LCDS8+

LCDS9+LCDS10+LCDS11;

P5SEL=0xfc;

//用作LCD驱动

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

打开或关闭液晶

1:

打开0:

关闭

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

voidLcdGo(unsignedchardoit)

if(doit==1)

//打开液晶显示

LCDBCTL0|=LCDON;

elseif(doit==0)

//关闭液晶显示

LCDBCTL0&

=~LCDON;

显示或者消隐显示内容

doit:

0:

消隐1:

显示

voidLcdBlink(unsignedchardoit)

if(doit==0)

=~LCDSON;

elseif(doit==1)

LCDBCTL0|=LCDSON;

voidLCD_Clear(void)//清屏

unsignedcharindex;

for(index=0;

index<

12;

index++)

LCDMEM[index]=0;

voidInit_TS3A5017DR(void)

P3DIR|=BIT4+BIT5;

//P3.4:

IN1;

P3.5:

IN2setasoutput

P3OUT&

=~BIT4;

//IN1=0

P3OUT|=BIT5;

//IN2=1

提高部分实验代码:

#defineuintunsignedint

#defineucharunsignedchar

#definePI3.1416

intsin_table[100];

uintfre_term_pr;

a+b+c+d+e+f,//Displays"

b+c,//Displays"

a+b+d+e+g,//Displays"

a+b+c+d+g,//Displays"

b+c+f+g,//Displays"

a+c+d+f+g,//Displays"

a+c+d+e+f+g,//Displays"

a+b+c,//Displays"

a+b+c+d+e+f+g,//Displays"

a+b+c+d+f+g,//Displays"

a+b+c+e+f+g,//Displays"

c+d+e+f+g,//Displays"

a+d+e+f,//Displays"

b+c+d+e+g,//Displays"

a+d+e+f+g,//Displays"

a+e+f+g,//Displays"

c+e+f+g,//Displays"

b+c+d,//Displays"

b+c+e+f+g,//Displays"

d+e+f,//Displays"

a+b+c+e+f,//Displays"

a+b+c+d+e+f+g+dp//Displays"

/*Privatefunctionprototypes-----------------------------------------------*/

//LCD初始化

voidLcdGo(unsignedcharDot);

//打开或关闭液晶

//显示或者消隐显示内容

//清屏

voidBacklight_Enable(void);

//打开背光

LCDBPCTL0=LCDS0+LCDS1+LCDS2+LCDS3+LCDS4+LCDS5+LCDS6+LCDS7+LCDS8+LCDS9+LCDS10+LCDS11;

voidLcdGo(unsignedcharDot)

if(Dot==1)

//打开液晶显示

LCDBCTL0|=LCDON;

elseif(Dot==0)

//关闭液晶显示

LCDBCTL0&

LCDBCTL0|=LCDSON;

voidLCD_Clear(void)//清屏

LCDMEM[index]=0;

voidInit_TS3A5017DR(void)

//P3.4:

IN1;

P3.5:

IN2setasoutput

voidBacklight_Enable(void)

P5DIR|=BIT7;

P5OUT&

=~BIT7;

uintfre_term[10]={977,488,326,244,195,163,140,122,109,98};

voidDAC_Init()//DAC初始化

DAC12_0CTL0|=DAC12CALON;

//启动校验

while((DAC12_0CTL0&

DAC12CALON)!

=0);

DAC12_0CTL0|=DAC12SREF_0+DAC12LSEL_0+DAC12IR+DAC12AMP_5+DAC12OPS;

DAC12_0DAT=0x0000;

voidClock_Init()//MCLK16MHZ,SMCLK16MHz

UCSCTL3|=SELREF_2;

UCSCTL5|=DIVS_1;

//SMCLK2fenpin

UCSCTL1=DCORSEL_5;

//SelectDCOrange24MHzoperation

UCSCTL2=FLLD_1+243;

//SetDCOMultiplierfor12MHz

//(N+1)*FLLRef=Fdco

//(243+1)*32768=8MHz

//SetFLLDiv=fDCOCLK/2=4MHz

__delay_cycles(375000);

//LoopuntilXT1,XT2&

DCOfaultflagiscleared

do

//

intmain(void){

WDTCTL=WDTPW|WDTHOLD;

//Stopwatchdogtimer

Clock_Init();

//TA0_Init();

TA0CCR0=fre_term[0];

TA0CCTL0|=CCIE;

TA0CTL|=TASSEL_2+MC_1+ID_0+TACLR;

//SMCLK=DCO

DAC_Init();

Backlight_Enable();

//打开液晶模块

LcdBlink

(1);

delay_ms(1000);

100;

i+=PI/50;

sin_table[j]=(int)((sin(i)+1)*2048);

LCDMEM[3]=char_gen[1];

LCDMEM[4]=char_gen[0];

LCDMEM[5]=char_gen[0];

//Port_Init();

P2IE|=BIT6+BIT7;

P2IFG&

=~(BIT6+BIT7);

P5DIR|=BIT1;

__bis_SR_register(GIE);

while

(1)

#pragmavector=PORT2_VECTOR

__interruptvoidPortISR(void)

switch(__even_in_range(P2IV,16))

case0:

break;

case2:

case4:

case6:

case8:

case10:

case12:

case14:

//p2.6

if(fre_term_pr<

9)

{

fre_term_pr++;

}

else

fre_term_pr=0;

TA0CCR0=fre_term[fre_term_pr];

if(fre_term_pr==9)

LCDMEM[2]=char_gen[1];

LCDMEM[3]=char_gen[0];

LCDMEM[3]=char_gen[fre_term_pr+1];

LCDMEM[2]=0;

P2IFG&

=~BIT6;

break;

case16:

//p2.7

if(fre_term_pr>

0)

{

fre_term_pr--;

}

else

fre_term_pr=9;

TA0CCR0=fre_term[fre_term_pr];

if(fre_term_pr==9)

{

LCDMEM[2]=char_gen[1];

LCDMEM[3]=char_gen[0];

}

else

LCDMEM[3]=char_gen[fre_term_pr+1];

LCDMEM[2]=0;

P2IFG&

=~BIT7;

b

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

当前位置:首页 > 解决方案 > 营销活动策划

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

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