NOP();
NOP();
E =0;
}
//**********LCD初始化时的送命令******************
void send_com_init(unsigned char command_init )
{
RS=0;
RW=0;
PORTD=command_init;
E =1;
NOP();
NOP();
E =0;
}
//**********写数据***************************
void send_data(unsigned char data )
{
check_busy();
RS=1;
RW=0;
PORTD=data;
E =1;
NOP();
NOP();
E =0;
}
//***********读数据****************************
unsigned char read_data(void)
{
unsigned char read_data;
check_busy();
TRISD=0XFF;
RS=1;
RW=1;
E =1;
NOP();
read_data=PORTD;
E =0;
TRISD=0x00;//还原为输出。
return (read_data);
}
//***********清屏*****************************
void clear_LCD(void)
{
send_com(0x01);
send_com(0x34);
send_com(0x30);
}
//**********LCD初始化************************
void initial_LCD(void)
{
PSB=1;
RST=0;//Reset.
NOP();
NOP();
RST=1;
NOP();
delay_10us(10);
send_com_init(0x30);//30H--基本指令操作
delay_10us(4);
send_com_init(0x0c);//开显示,关光标,不闪烁。
delay_10us(10);
send_com_init(0x01);//清除显示
delay_ms(10);
send_com_init(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
}
//**********写准备***************************
void WR_ZB(void)
{
send_com(0x34);
send_com(LCD_Y);
send_com(LCD_X);
send_com(0x30);
}
//*********取数送显示******************************
void QUSHU(const unsigned char *shu)
{
for (;COUNT!=0;COUNT--)
{
send_data(*shu++);
delay_ms(80);
}
}
//*********Flash******************************
void flash(void)
{
send_com(0x08);//关闭显示
delay_ms(250);
send_com(0x0c);//开显示,关光标,不闪烁。
delay_ms(250);
send_com(0x08);//关闭显示
delay_ms(250);
send_com(0x0c);//开显示,关光标,不闪烁。
delay_ms(250);
send_com(0x08);//关闭显示
delay_ms(250);
}
//**********显示图形子程序*********************
void PHO_DISP(const unsigned char *s)
{
COUNT3=0X02;
LCD_X=0X80;
for (;COUNT3!=0;COUNT3--)
{
LCD_Y=0X80;
COUNT2=0X20;//32
for (;COUNT2!=0;COUNT2--)
{
COUNT1=0X10;//16
WR_ZB();
for (;COUNT1!=0;COUNT1--)
{
send_data(*s++);
}
LCD_Y+=1;
}
LCD_X=0X88;
}
send_com(0x36);
send_com(0x30);
}
//******************显示点阵子程序************
void LAT_DISP(void)
{
COUNT3=0X02;
LCD_X=0X80;
for (;COUNT3!=0;COUNT--)
{
LCD_Y=0X80;
F0=0;
COUNT2=0X20;
for (;COUNT2!=0;COUNT--)
{
COUNT1=0X10;
WR_ZB();
if (F0!=0)
{
LCD_DATA=LCD_DATA2;
}
else LCD_DATA=LCD_DATA1;
for (;COUNT1!=0;COUNT1--)
{
send_data(LCD_DATA);
}
LCD_Y+=1;
F0=!F0;
}
LCD_X=0X88;
}
send_com(0x36);
send_com(0x30);
}
void main(void)
{
TRISC=0X00;
TRISD=0X00;
PORTD=0X00;
PORTC=0X00;
initial_LCD();
while (1)
{
clear_LCD();
PHO_DISP(TU_TAB1);//显示图形
while (1);
}
}
上一页 [1] [2]
本文关键字:程序 PIC单片机,单片机-工控设备 - PIC单片机