?? main.c
字號:
/*===============================================================
硬件連接: DATA:P4 P5.5-LCD_COMMAND(0)/DATA(1) P5.6-LCD_ENABLE
P5.7-LCD_READ(1,ENABLE=1)/WRITE(0,ENABLE=1->0)
=================================================================*/
#include "io430.h"
//#include "msp430x14x.h"
#define LCD_DATA_IN P4IN
#define LCD_DATA_OUT P4OUT
#define LCD_COMMAND_OUT P4OUT
#define LCD_DIR P4DIR
#define LCD_READ P5OUT |= BIT7
#define LCD_WRITE P5OUT &= ~BIT7
#define LCD_ENABLE_H P5OUT |= BIT6
#define LCD_ENABLE_L P5OUT &= ~BIT6
#define LCD_DATA P5OUT |= BIT5
#define LCD_COMMAND P5OUT &= ~BIT5
unsigned char str1[]={0x40,0x04,0x3F,0xFE,0x10,0x08,0x00,0x08,
0x80,0x48,0x67,0xE8,0x24,0x48,0x0C,0x48,
0x14,0x48,0x24,0x48,0xE7,0xC8,0x24,0x48,
0x20,0x08,0x20,0x08,0x20,0x28,0x20,0x10};
unsigned char str2[]={0x04,0x80,0x04,0x80,0x04,0x88,0x04,0x98,
0x04,0xA0,0x7C,0xC0,0x04,0x80,0x04,0x80,
0x04,0x80,0x04,0x80,0x04,0x80,0x04,0x80,
0x1C,0x82,0xE4,0x82,0x44,0x7E,0x00,0x00};
unsigned char str3[]={0x04,0x10,0x0E,0x10,0xF8,0x90,0x08,0x50,
0x08,0x10,0xFE,0x90,0x08,0x50,0x1C,0x14,
0x1A,0x1E,0x29,0xF0,0x28,0x10,0x48,0x10,
0x88,0x10,0x08,0x10,0x08,0x10,0x08,0x10};
unsigned char str4[]={0x10,0x40,0x10,0x40,0x10,0x48,0x13,0xFC,
0xFC,0x40,0x10,0x40,0x10,0x40,0x13,0xF8,
0x1A,0x08,0x31,0x10,0xD1,0x10,0x10,0xA0,
0x10,0x40,0x10,0xB0,0x51,0x0E,0x26,0x04};
void initLCD();
void write_command(unsigned char COMMAND);
void write_data(unsigned char DATA);
void asc_tran(unsigned char *asc);
char LCD_busy();
void delay_us();
void delay_ms();
int main( void )
{
P5DIR = 0XFF;
P4DIR = 0XFF;
WDTCTL = WDTPW + WDTHOLD;
initLCD();
while(1)
{
write_command(0x83); //設置顯示位址
asc_tran(str1); //顯示字符串
write_command(0x97); //設置顯示位址
asc_tran(str2); //顯示字符串
delay_ms(1000); //延遲1秒
write_command(0x01); //清除顯示器
write_command(0x83); //設置顯示位址
asc_tran(str3); //顯示字符串
write_command(0x94); //設置顯示位址
asc_tran(str4); //顯示字符串
delay_ms(1000); //延遲
write_command(0x01); //清除顯示器
}return 0;
}
void initLCD()
{
write_command(0x38);
write_command(0x38);
write_command(0x38);
write_command(0x38);
write_command(0x30);
write_command(0x0c);
write_command(0x01);
write_command(0x06);
}
void write_command(unsigned char COMMAND)
{
while(LCD_busy());
LCD_ENABLE_L;
LCD_COMMAND;
LCD_WRITE;
delay_us(2);
LCD_ENABLE_H;
LCD_COMMAND_OUT = COMMAND;
delay_us(2);
LCD_ENABLE_L;
}
void write_data(unsigned char DATA)
{
while(LCD_busy());
LCD_ENABLE_L;
LCD_DATA;
LCD_WRITE;
delay_us(2);
LCD_ENABLE_H;
LCD_COMMAND_OUT = DATA;
delay_us(2);
LCD_ENABLE_L;
}
void delay_us(int time)
{
do
{
time--;
}
while(time>1);
}
void delay_ms(unsigned int time)
{
while(time != 0)
{
delay_us(2);
time--;
}
}
char LCD_busy()
{
char status;
P4DIR = 0;
LCD_ENABLE_L;
LCD_COMMAND;
LCD_READ;
delay_us(2);
LCD_ENABLE_H;
delay_us(2);
status = P4IN&BIT7;
LCD_ENABLE_L;
P4DIR = 0XFF;
return status;
}
void asc_tran(unsigned char *asc)
{
while((*asc) != 0) //判斷字是否結束
{
write_data(*asc); //向lcd寫入字符串
asc++; //移下一個字符
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -