用msp430g2553控制1602液晶显示时间,并可以通过按键设置时间,我做了正计时和倒计时两种模式
/*********************************************************************
msp430g2553与1602引脚连接情况
* PIN1 --> 地
* PIN2 --> VCC(一定要接+5V)
* PIN3 -->仿真时悬空,实际电路 2K电阻-->地 (电阻可以是500-2k的,改变电阻可以改变字符显示的亮度,电阻接不好会导致什么都不显示)
* PIN4 --> RS --> P1.6
* PIN5 --> R/W --> GND
* PIN6 --> EN --> P1.7
* PIN7 --> D0不接
* PIN8 --> D1不接
* PIN9 --> D2不接
* PIN10 --> D3不接
* PIN11 --> D4 --> P2.4
* PIN12 --> D5 --> P2.5
* PIN13 --> D6 --> P2.6
* PIN14 --> D7 --> P2.7
* PIN15 --> VCC
* PIN16 --> 地
*msp430g2553与按键引脚连接情况
*k1-->p1.2
*k2-->p1.3
*k3-->p2.1
*k4-->p1.1
说明:本人用的时矩阵键盘,若用独立按键要接入电阻
*****************************************************************/
代码如下:
#include <msp430g2253.h>
#include <intrinsics.h>
#include <msp430.h>
#define LCD_EN_PORT P1OUT //以下2个要设为同一个口
#define LCD_EN_DDR P1DIR
#define LCD_RS_PORT P1OUT //以下2个要设为同一个口
#define LCD_RS_DDR P1DIR
#define LCD_DATA_PORT P2OUT //以下3个要设为同一个口
#define LCD_DATA_DDR P2DIR //一定要用高4位
#define LCD_RS BIT6
#define LCD_EN BIT7
#define LCD_DATA BIT7|BIT6|BIT5|BIT4 //4位数据线连接模式
//函数声明
void LCD_init(void);
void LCD_init_first(void);
void LCD_en_write1(void); //上升沿使能
void LCD_en_write2(void); //下降沿使能
void LCD_write_command(unsigned char command);
void LCD_write_data(unsigned char data);
void LCD_set_xy (unsigned char x, unsigned char y);
void LCD_write_string(unsigned char X,unsigned char Y, unsigned char *s);
void LCD_write_char(unsigned char X,unsigned char Y, unsigned char data);
void display_HMS(unsigned char add,unsigned char date);
void delay_1ms(void);
void delay_nus(unsigned int n);
void delay_nms(unsigned int n);
void SetTime();
void SetMode();
void CalledByTimerA();
unsigned char LCDBuf1[]={"Hello world"};//第一行要显示的内容
unsigned char LCDBuf2[]={"10:30:00"}; //第二行要显示的内容
unsigned char shi1,fen1,miao1,aa,shi2,fen2,miao2;
unsigned char miao=0;
unsigned char fen=30;
unsigned char shi=10;