发一个简单点的,供初学的孩子使用。
芯片用的是g2553,LCD1602显示,整分的时候显示温度。直接放代码了哈。
/******************************************************************
File Name : Launchpad g2553 LCD1602液晶测试程序
Frequency : 1.000000MHz
Time : 2011/08/13 18:16
Modify Time : 2012/04/29
Author : Fuwei
******************************************************************/
#include "msp430g2553.h"
#define uchar unsigned char
#define uint unsigned int
extern void Initialize_LCD();
extern void LCD_ShowString(uchar x, uchar y, char *str);
extern void LCD_ShowChar(uchar x, uchar y, char c);
char hour = 20, minute = 6, second = 0;
char hour1, hour0, minute1, minute0, second1, second0;
long temp;
long IntDegC;
char Temp2, Temp1, Temp0;
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
//液晶显示端口初始化
P2DIR |= 0x07;
TACTL = TASSEL_1 + MC_2 + TAIE; // ACLK, contmode, interrupt
_EINT();
for(;;)
{
ADC10CTL1 = INCH_10 + ADC10SC; // Temp Sensor ADC10CLK
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON;
__delay_cycles(5); // Wait for Ref to settle
ADC10CTL0 |= ENC + ADC10SC; // Samp and convert start
__delay_cycles(100); // Wait for conversion
ADC10CTL0 &= ~ENC; // Disable ADC conversion
ADC10CTL0 &= ~(REFON + ADC10ON); // Ref and ADC10 off
// oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278
temp = ADC10MEM;
IntDegC = ((temp - 673) * 4230) / 1024;
Temp2 = IntDegC % 1000 / 100;
Temp1 = IntDegC % 100 / 10;
Temp0 = IntDegC % 10;
__delay_cycles(1000000); // delay 1 second
}
}
// Timer_A3 Interrupt Vector (TA0IV) handler
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{
switch( TA0IV )
{
case 2: break;
case 4: break;
case 10:
second += 2;
if((hour >= 23) && (minute >= 59) && (second >= 59))
hour = 0;
if((minute >= 59) && (second >= 59))
{
minute = 0;
hour++;
}
if(second >= 59)
{
second = 0;
minute++;
Initialize_LCD();
LCD_ShowString(0, 0, "Temperature:");
LCD_ShowString(8, 1, ". 'C");
LCD_ShowChar(6, 1, Temp2 + '0');
LCD_ShowChar(7, 1, Temp1 + '0');
LCD_ShowChar(9, 1, Temp0 + '0');
}
else
{
second1 = second / 10;
second0 = second % 10;
minute1 = minute / 10;
minute0 = minute % 10;
hour1 = hour / 10;
hour0 = hour % 10;
Initialize_LCD();
LCD_ShowString(0, 0, "Time :");
LCD_ShowString(4, 1, ": :");
LCD_ShowChar(2, 1, hour1 + '0');
LCD_ShowChar(3, 1, hour0 + '0');
LCD_ShowChar(5, 1, minute1 + '0');
LCD_ShowChar(6, 1, minute0 + '0');
LCD_ShowChar(8, 1, second1 + '0');
LCD_ShowChar(9, 1, second0 + '0');
}
break;
}
}