单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx

上传人:b****3 文档编号:16967595 上传时间:2022-11-27 格式:DOCX 页数:13 大小:35.92KB
下载 相关 举报
单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx_第1页
第1页 / 共13页
单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx_第2页
第2页 / 共13页
单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx_第3页
第3页 / 共13页
单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx_第4页
第4页 / 共13页
单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx

《单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

单片机原理及应用第九讲MSP430单片机液晶控制器和ADC资料文档格式.docx

intmain()

{

inti,j;

WDTCTL=WDTPW+WDTHOLD;

//StopWDT

Init_TS3A5017DR();

//ConfigureTS3A5017DRIN1andIN2

Init_lcd();

//LCD初始化

Backlight_Enable();

//打开背光

LcdGo

(1);

//打开液晶模块

LCD_Clear();

//清屏

while

(1)

{

for(i=0;

i<

6;

i++)//Display"

0123456"

{

for(j=0;

j<

j++)

{

LCDMEM[j]=char_gen[i];

}

delay_ms(1000);

}

}

}

#include<

msp430f6638.h>

math.h>

#definePI3.1415926

intsin_table[360];

int*sin_data_pr;

doublei=0;

intj;

voidmain(void)

WDTCTL=WDT_MDLY_0_064;

//WDT~61usintervaltimer

SFRIE1=WDTIE;

//EnableWDTinterrupt

for(j=0;

360;

i+=PI/180;

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;

for(;

;

__bis_SR_register(CPUOFF+GIE);

//EnterLPM0

DAC12_0DAT=*sin_data_pr++;

if(sin_data_pr>

=&

sin_table[360])

sin_data_pr=&

//Positiveramp

DAC12_0DAT&

=0xFFF;

//Modulo4096

#pragmavector=WDT_VECTOR

__interruptvoidwatchdog_timer(void)

__bic_SR_register_on_exit(CPUOFF);

//ClearLPM0bitsfrom0(SR)

intmain(void){

LCDMEM[0]=char_gen[3];

LCDMEM[1]=char_gen[0];

LCDMEM[2]=char_gen[0];

52;

i+=PI/26;

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

sin_table[52])

#definecircnt1001388

#definecircnt200694

#definecircnt300462

#definecircnt400348

#definecircnt500278

#definecircnt600232

#definecircnt700198

#definecircnt800174

#definecircnt900154

#definecircnt1000138

intsin_table[180];

constintcnt_table[]={circnt100,circnt200,circnt300,circnt400,circnt500,circnt600,circnt700,circnt800,circnt900,circnt1000};

intcnt_flg=0;

voidSetVcoreUp(unsignedint);

//closewatchdog

//---------p2.6--------------

P2REN|=BIT6;

//EnableP2.6internalresistance

P2OUT|=BIT6;

//SetP2.6aspull‐Upresistance

P2IES|=BIT6;

//P2.6Hi/Loedge

P2IFG&

=~BIT6;

//P2.6IFGcleared

P2IE|=BIT6;

//PP2.6interruptenabled

/*P2REN|=BIT7;

P2OUT|=BIT7;

P2IES|=BIT7;

P2IFG&

=~BIT7;

P2IE|=BIT7;

//PP2.6interruptenabled*/

//---------enableLCD------------

LCDMEM[5]=char_gen[0];

LCDMEM[4]=char_gen[0];

LCDMEM[3]=char_gen[1];

//----------configsinelist------------

180;

i+=PI/90;

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

//----------enableSMCLKas8MHz--------------

P4DIR|=BIT1;

//P4.1output

P1DIR|=BIT0;

//ACLKsetouttopins

P1SEL|=BIT0;

P3DIR|=BIT4;

//SMCLKsetouttopins

P3SEL|=BIT4;

//IncreaseVcoresettingtolevel3tosupportfsystem=25MHz

//NOTE:

Changecorevoltageonelevelatatime..

SetVcoreUp(0x01);

SetVcoreUp(0x02);

SetVcoreUp(0x03);

UCSCTL3=SELREF_2;

//SetDCOFLLreference=REFO

UCSCTL4|=SELA_2;

//SetACLK=REFO

__bis_SR_register(SCG0);

//DisabletheFLLcontrolloop

UCSCTL0=0x0000;

//SetlowestpossibleDCOx,MODx

UCSCTL1=DCORSEL_7;

//SelectDCOrange50MHzoperation

UCSCTL2=FLLD_1+762;

//SetDCOMultiplierfor25MHz

//(N+1)*FLLRef=Fdco

//(762+1)*32768=25MHz

//SetFLLDiv=fDCOCLK/2

__bic_SR_register(SCG0);

//EnabletheFLLcontrolloop

//Worst‐casesettlingtimefortheDCOwhentheDCOrangebitshavebeen

//changedisnx32x32xf_MCLK/f_FLL_reference.SeeUCSchapterin5xx

//UGforoptimization.

//32x32x25MHz/32,768Hz~780kMCLKcyclesforDCOtosettle

__delay_cycles(782000);

//LoopuntilXT1,XT2&

DCOstabilizes‐InthiscaseonlyDCOhastostabilize

do

UCSCTL7&

=~(XT2OFFG+XT1LFOFFG+DCOFFG);

//ClearXT2,XT1,DCOfaultflags

SFRIFG1&

=~OFIFG;

//Clearfaultflags

}while(SFRIFG1&

OFIFG);

//Testoscillatorfaultflag

//-----------enabletimerACCR0usSMCLK--------------

TA0CCTL0=CCIE;

//CCR0interruptenabled

TA0CCR0=cnt_table[0];

TA0CTL=TASSEL_2+MC_1+TACLR;

//useSMCLkassetting25MHz

__bis_SR_register(CPUOFF+GIE);

DAC12_0DAT=*sin_data_pr++;

if(sin_data_pr>

sin_table[180])

sin_data_pr=&

DAC12_0DAT&

voidSetVcoreUp(unsignedintlevel)

PMMCTL0_H=PMMPW_H;

//OpenPMMregistersforwrite

//SetSVS/SVMhighsidenewlevel

SVSMHCTL=SVSHE+SVSHRVL0*level+SVMHE+SVSMHRRL0*level;

//SetSVMlowsidetonewlevel

SVSMLCTL=SVSLE+SVMLE+SVSMLRRL0*level;

while((PMMIFG&

SVSMLDLYIFG)==0);

//WaittillSVMissettled

PMMIFG&

=~(SVMLVLRIFG+SVMLIFG);

//Clearalreadysetflags

PMMCTL0_L=PMMCOREV0*level;

//SetVCoretonewlevel

if((PMMIFG&

SVMLIFG))

while((PMMIFG&

SVMLVLRIFG)==0);

//Waittillnewlevelreached

//SetSVS/SVMlowsidetonewlevel

SVSMLCTL=SVSLE+SVSLRVL0*level+SVMLE+SVSMLRRL0*level;

//LockPMMregistersforwriteaccess

PMMCTL0_H=0x00;

//--------timerAinterruption---------

#pragmavector=TIMER0_A0_VECTOR

__interruptvoidTIMER0_A0_ISR(void)

//-------bottominterruption----------

#pragmavector=PORT2_VECTOR

__interruptvoidPort_2(void)

cnt_flg++;

if(cnt_flg>

=10)cnt_flg=0;

if(cnt_flg==9)

LCDMEM[3]=char_gen[0];

LCDMEM[2]=char_gen[1];

elseLCDMEM[3]=char_gen[cnt_flg+1];

TA0CCR0=cnt_table[cnt_flg];

实验现象分析:

LCD显示屏上循环显示0到6,每次显示都为6个相同的数字,现象对应的代码为:

实验板上扬声器放出周期为64us*360=0.023s的正弦波信号。

用示波器测量P7.6信号,测出信号频率为300HZ左右,LCD面板上显示为300。

按下按键,信号频率按要求改变,同时LCD也显示出信号频率对应值。

思考题

1、MSP430系列单片机液晶驱动模块有哪些驱动方法?

答:

4种驱动方法:

静态

2‐mux

3‐mux

4‐mux

2、MSP430系列单片机液晶驱动模块包括哪些功能结构?

功能结构:

具有显示缓存器

所需的SEG、COM信号自动产生

多种扫描频率

每个闪烁段都有独立的闪烁存储器

稳压电荷泵

软件实现反向控制

显示缓存器可作为一般存储器

3、MSP430系列单片机液晶驱动模块显示缓存有什么特

点?

和普通的存储单元有什么不同?

特点:

液晶显示缓存器各个位与液晶的段一一对应。

存储位置位则可以点亮对

应的液晶段,存储位复位液晶段变暗。

段、公共极输出控制能够自动从显示

缓存器读取数据,送出相应信号到液晶玻璃片上。

因为不同器件驱动液晶的

段数不同,所以液晶显示缓存器的数量也不一样。

数量越大,驱动能力越强

,显示的内容就越多。

不同:

显示缓存器可作为一般存储器,但一般存储单元存储位置位不可以点亮液晶段。

4、常见液晶显示的类型有哪些?

段式液晶

字符式液晶

图形式液晶

5、MSP430系列单片机液晶驱动模块有哪些特点?

4种驱动方法

静态

2‐mux

3‐mux

4‐mux

6、简述DAC的主要性能参数。

分辨率(n):

DAC转换器使用的位数,D/A转换器模拟输出电压可能被分离

的等级数。

输入数字量位数越多,分辨率越高。

所以,在实际应用中,

常用数字量的位数表示D/A转换器的分辨率。

转换速度:

转换速率(SR)——在大信号工作状态下模拟电压

的变化率。

建立时间(tset)——当输入的数字量发生变化时,输出

电压变化到相应稳定电压值所需时间。

最短可达0.1μS。

单调性:

转换器的模拟输出值与数字输入值同增同减.

偏移误差:

当输入的数字量为0时,DAC输出的模拟量的大小。

温度系数:

在输入不变的情况下,输出模拟电压随温度变

化产生的变化量。

一般用满刻度输出条件下温度每升

高1℃,输出电压变化的百分数作为温度系数。

7、简述MSP430单片机DAC12模块的特点。

12位单调输出

8位或12位电压输出分辨率

可编程的时间对能量的消耗

内部或外部参考电压

二进制或二进制补码形式

具有自校验功能

多路DAC同步更新

可直接用存储器存储(DMA)

实验中遇到的问题

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

当前位置:首页 > 小学教育 > 语文

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

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