📄 lcd显示.c
字号:
#include<msp430x14x.h>
unsigned data_temp;
unsigned P_IN;
unsigned tab[40] = {015H,00AH,015H,00AH,015H,00AH,015H,00AH,
0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
000H,000H,000H,000H,000H,000H,000H,000H
0FFH,000H,0FFH,000H,0FFH,000H,0FFH,000H
015H,015H,015H,015H,015H,015H,015H,015H};
void LCD_init (void);
void LCD_write_char (unsigned command,unsigned data);
void LCD_Write_half_char (void);
void LCD_write_CGRAM (void);
//void LCD_set_xy (unsigned char x, unsigned char y);
//void LCD_write_string (unsigned char X,unsigned char Y,unsigned char *s);
void delay_nus (unsigned int n);
void delay_nms (unsigned int n);
void LCD_wait_Ready (void);
void delay_1ms (void);
void delay_1us (void);
void main(void)
{
int j;
unsigned k;
P6SEL = 0;
P2SEL &= ~BIT0;
P2SEL &= ~BIT1;
P2SEL &= ~BIT2;
P2DIR |= BIT0 + BIT1 + BIT2;
P6DIR = 0xff;
P6OUT = 0x0f;
P2OUT &= ~BIT0; //en=0
LCD_init();
while(1)
{
//LCD_write_char(0,0x01); //显示清屏
k=0x00;
while(k<0x05)
{
LCD_write_char(0,0x80); //设置DDRAM地址
for(j=0;j<24;j++)
{
LCD_write_char(1,k);
delay_nus(100);
}
LCD_write_char(0,0xc0); //设置DDRAM地址
for(j=0;j<24;j++)
{
LCD_write_char(1,k);
delay_nus(100);
}
LCD_write_char(0,0x01); //显示清屏
k=k+1;
}
k=0x20;
while(k<0x2e)
{
LCD_write_char(0,0x80); //设置DDRAM地址
for(j=0;j<24;j++)
{
LCD_write_char(1,k);
delay_nus(100);
}
LCD_write_char(0,0xc0); //设置DDRAM地址
for(j=0;j<24;j++)
{
LCD_write_char(1,k);
delay_nus(100);
}
LCD_write_char(0,0x01); //显示清屏
k=k+1;
}
//delay_nus(39);
//LCD_write_string(0,0,"start");
//LCD_write_string(0,1,"www.wuliang.com");
//delay_nms(2000);
// LCD_write_char(0,0x01); //显示清屏
//delay_nms(2);
// LCD_write_string(0,0,"Tel:13675124623");
//LCD_write_string(0,1,"wwwqsqs@163.com");
//delay_nms(2000);
}
}
void LCD_init(void)
{
LCD_write_char(0,0x38); //8bit test
delay_nus(39);
LCD_write_char(0,0x0c); //显示开
delay_nus(39);
LCD_write_char(0,0x01); //显示清屏
delay_nus(39);
//delay_nms(2);
LCD_write_char(0,0x06); //显示光标移动设置
LCD_write_char(0,0x40); //设置DDRAM地址
LCD_write_CGRAM();
}
/*-----------------------------------------------------------------------
-----------------------------------------------------------------------*/
void LCD_write_char(unsigned command,unsigned data)
{
LCD_wait_Ready();
P2OUT &= ~BIT2; //RW=0
if (command == 0) //
P2OUT &= ~BIT1; //RS=0
else
P2OUT |= BIT1; //RS=1
data_temp = data;
LCD_Write_half_char();
//data_temp = data;
//data_temp=data_temp << 4;
//LCD_Write_half_char();
//delay_nus(100);
}
/*---------写LCD----*/
void LCD_Write_half_char(void)
{
P6DIR = 0Xff; //p6 shuchu
P6OUT = data_temp; //send
P2OUT |= BIT0; //EN端产生一个由低电平变高电平,写LCD
//delay_nus(1);
P2OUT &= ~BIT0; //EN端产生一个由高电平变低电平,写LCD
//LCD_DATA_PORT &= 0X0f;
//delay_nus(1);
}
/*-----------------------------------------------------------------------
-----------------------------------------------------------------------
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == 0) address = 0x00 + x;
else
address = 0x40 + x+x+x;
LCD_write_char(0,address);
}*/
/*-----------------------------------------------------------------------
-----------------------------------------------------------------------
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y );
while (*s)
{
LCD_write_char(1,*s);
s ++;
}
}
*/
void LCD_wait_Ready(void) //等待LCD空闲
{
P6DIR = 0x00; //PD7 I/O口方向设置为输入
P2OUT |= BIT2; //RW=1
P2OUT &= ~BIT1; //RS=0
while (1) //RW=1,读PD7,为0表示空闲;
{
P2OUT |= BIT0; //EN=1
P_IN = P6IN;
P2OUT &= ~BIT0; //EN=0
if(!(( P6IN & 0x80 ) == 0x80))break;
}
//LCD_DATA_DDR |= 0xf0;
}
void delay_nms(unsigned int n) //N ms延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1ms();
}
void delay_nus(unsigned int n) //N us延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1us();
}
void delay_1ms(void) //1ms延时函数
{
unsigned int i;
for (i=0;i<1140;i++);
}
void delay_1us(void) //延迟函数(微秒)
{
int i;
int j;
for(i = 1;i > 0;i--)
{
for(j = 3;j > 0;j--);
}
return;
}
void LCD_write_CGRAM(void) //写DDRAM
{
int i;
for(i=0;i<40;i++)
{
void LCD_write_char(1,tab[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -