MSP430 单片机 1602液晶60秒计时程序
//**************************************************************
// P3BIT5接RS)-- (BIT7接NE)-- (BIT6接RW)
// P4口送数据
//
// 08-6-27
//*****************************************************
#include "msp430x22x4.h"
unsigned char table[]="0123456789";
unsigned char a=0,b=0,c=0,d=0,e=0,f=0;
char num,count=0;
//***********************读写数据延时******************
void delay(int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=510;y>0;y--);
}
//***********************写命令************************
void write_com(char com)
{
P3OUT&=~BIT5; //控制LCD的 R/S口此时为命令为-0
P4OUT=com;
delay(5);
P3OUT|=BIT7; //控制LCD的 EN口-1
delay(5);
P3OUT&=~BIT7; //控制LCD的 EN口-0
}
//**********************写数据*************************
void write_data(char date)
{
P3OUT|=BIT5; // R/S口此时为数据为-1
P4OUT=date;
delay(5);
P3OUT|=BIT7; //EN口为-1
delay(5);
P3OUT&=~BIT7; //EN口为-0
}
//*********************液晶显初始化***********************
void init()
{
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);
}
//**************************主程序*******************//
void main()
{
init();
for(;;)
{
//write_com(0x01);//清屏
write_com(0x80+0x05);
write_data(table[b]);
//delay(5);
write_com(0x80+0x06);
write_data(table[a]);
} }
//*****************************定时中断函数************************
#pragma vector =TIMERA0_VECTOR //ccr0中断服务
__interrupt void ta1_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;
}
上一篇:msp430 ADC10单通道多次转换
下一篇:MSP430单片机1602液晶显示程序
推荐阅读最新更新时间:2024-03-16 15:53