MSP430F413单片机构成的时钟小系统程序清单如下:
#include <msp430x41x.h>
#define LCD_IN_USE 10
const unsigned char NUM_LCD[17]={
0xd7, 0x06, 0xe3, 0xa7, 0x36, //'0'~ '4'
0xb5, 0xf5, 0x07, 0xf7, 0xb7, //'5' ~ '9'
0x77, 0xf4, 0xd1, 0xe6, 0xf1, // 'A'~ 'E'
0x71, 0x00}; // 'F','全熄'
unsigned char lcd_Buf[LCD_IN_USE]; // 自定义显示缓冲区,用于要显示的数据
unsigned int cont,y0,y1,y2; //秒、时、分存储变量
void init_LCD(void)
{
char tmpv;
BTCTL = BT_fLCD_DIV32; // set LCD 时钟
P5SEL = 0xfc; // 置为外围模块
LCDCTL = LCDON+LCD4MUX+LCDP1; // 4Mux 模式
for (tmpv = 0;tmpv<10;tmpv++)
{
LCDMEM[tmpv] = 0x00; //clear LCD
}
}
void cl_LCD(void)
{
char tmpv;
for (tmpv = 0;tmpv<10;tmpv++)
{
LCDMEM[tmpv] = 0x00; //clear LCD
}
}
void lcd_Display(void)
{
char tmpv;
lcd_Buf[0]=y2/10;
lcd_Buf[1]=y2%10;
lcd_Buf[2]=16;
lcd_Buf[3]=y1/10;
lcd_Buf[4]=y1%10;
lcd_Buf[5]=16;
lcd_Buf[6]=y0/10;
lcd_Buf[7]=y0%10;
lcd_Buf[8]=16;
lcd_Buf[9]=16;
for(tmpv=0;tmpv<LCD_IN_USE-1;tmpv++)
{
LCDMEM[tmpv] = NUM_LCD[lcd_Buf[tmpv]]; //更新LCDMEM中的内容
}
}
interrupt[WDT_VECTOR] void watchdog_timer(void)
{
cont=cont+1;
if(cont==4)
{
cont=0;
y0=y0+1; //秒加1
if(y0==60)
{
y0=0;
y1=y1+1; //60秒为1分,分加1
if(y1==60)
{
y1=0;
y2=y2+1; //60分为1小时,小时加1
if(y2==24)
{y2=0 ; //24小时再清零
}
}
}
cl_LCD();
lcd_Display();
_NOP();
}
}
void main(void)
{
WDTCTL = WDT_ADLY_250; // WDT间隔时间为250ms(ACLK)
IE1 |= WDTIE; // 使能WDT中断
SCFQCTL |= SCFQ_4M; // 设定主时钟为4MHz
init_LCD();
_EINT(); // 使能中断
cont=0;
y0=0;
y1=0;
y2=0;
for (;;)
{
_BIS_SR(CPUOFF); //关CPU
_NOP(); // 调试程序使用
}
}
本人欲在此基础上增加显示时间功能 要求:显示时间格式 NN-YY-RR LCD显示屏显示时间和日期每5秒交替显示一次 我的QQ81173002 如果哪位高手能帮忙 感激不尽