MSP430单片机1602液晶60秒计时程序
扫描二维码
随时随地手机看文章
MSP430单片机1602液晶60秒计时程序
//**************************************************************
//P3BIT5接RS)--(BIT7接NE)--(BIT6接RW)
//P4口送数据
//
//08-6-27
//*****************************************************
#include"msp430x22x4.h"
unsignedchartable[]="0123456789";
unsignedchara=0,b=0,c=0,d=0,e=0,f=0;
charnum,count=0;
//***********************读写数据延时******************
voiddelay(intz)
{
intx,y;
for(x=z;x>0;x--)
for(y=510;y>0;y--);
}
//***********************写命令************************
voidwrite_com(charcom)
{
P3OUT&=~BIT5;//控制LCD的R/S口此时为命令为-0
P4OUT=com;
delay(5);
P3OUT|=BIT7;//控制LCD的EN口-1
delay(5);
P3OUT&=~BIT7;//控制LCD的EN口-0
}
//**********************写数据*************************
voidwrite_data(chardate)
{
P3OUT|=BIT5;//R/S口此时为数据为-1
P4OUT=date;
delay(5);
P3OUT|=BIT7;//EN口为-1
delay(5);
P3OUT&=~BIT7;//EN口为-0
}
//*********************液晶显初始化***********************
voidinit()
{
WDTCTL=WDTPW+WDTHOLD;//关看门狗
BCSCTL1=CALBC1_1MHz;//设定DCO为1MHZ
DCOCTL=CALBC1_1MHZ;
TACTL=TASSEL1+TACLR+ID_3;//定时器A时钟源为MCLK,式
CCR0=65500;//计数值为65535个ACLK周期
CCTL0|=CCIE;
TACTL|=MC_1;
P3SEL=0X00;
P3DIR=0XFF;
P3OUT=0X00;
P4DIR=0XFF;
P4SEL=0X00;
P4OUT=0X00;
P3OUT&=~BIT6;//RW口为-0
P3OUT&=~BIT7;//EN口为-0
write_com(0x38);//显示模式设置
write_com(0x0c);//显示开及光标设置
write_com(0x04);
write_com(0x01);//显示清屏
//_EINT();
//_BIS_SR(GIE);
}
//**************************主程序*******************//
voidmain()
{
init();
for(;;)
{
//write_com(0x01);//清屏
write_com(0x80+0x05);
write_data(table[b]);
//delay(5);
write_com(0x80+0x06);
write_data(table[a]);
}}
//*****************************定时中断函数************************
#pragmavector=TIMERA0_VECTOR//ccr0中断服务
__interruptvoidta1_isr(void)
{
count++;
CCTL0&=~CCIFG;
if(count!=2)return;
count=0;
a++;
if(a>9)
{
a=0;b++;
if(b>5)
{
a=0;b=0;
}
}
CCR0=65535;
}