📄 ts12864.c
字号:
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
void send_com_init(unsigned char command_init )
{
RS=0;
RW=0;
lcd_data=command_init;
E = 1;
NOP();
NOP();
E =0;
}
/*****************************************************************************
;函 数 名:void send_data(uchar da)
;功 能: 写数据
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
void Send_Data_Lcd(uchar da)
{
check_busy();
RS=1;
RW=0;
lcd_data = da;
E =1;
NOP();
NOP();
E =0;
}
/*****************************************************************************
;函 数 名:unsigned char read_data(void)
;功 能: 读数据
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
unsigned char read_data(void)
{
unsigned char read_data;
check_busy();
RS=1;
RW=1;
E =1;
NOP();
read_data=lcd_data;
E =0;
return (read_data);
}
/*****************************************************************************
;函 数 名:void clear_LCD(void)
;功 能: 清屏
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
void clear_LCD(void)
{
send_com(0x01);
send_com(0x34);
send_com(0x30);
}
/*****************************************************************************
;函 数 名:void initial_LCD(void)
;功 能: LCD初始化
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
void Init_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)
;功 能: 写准备
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
void WR_ZB(void)
{
send_com(0x34);
send_com(LCD_Y);
send_com(LCD_X);
send_com(0x30);
}
/*****************************************************************************
;函 数 名:void QUSHU(const unsigned char *shu)
;功 能: 取数送显示
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
void QUSHU(const unsigned char *shu)
{
for (;COUNT!=0;COUNT--)
{
Send_Data_Lcd(*shu++);
delay_ms(80);
}
}
/*****************************************************************************
;函 数 名:void flash(void)
;功 能: Flash
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
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)
;功 能: 显示图形子程序
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
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_Lcd(*s++);
}
LCD_Y+=1;
}
LCD_X=0X88;
}
send_com(0x36);
send_com(0x30);
}
/*****************************************************************************
;函 数 名:void LAT_DISP(void)
;功 能: 显示点阵子程序
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
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(LCD_DATA);
}
LCD_Y+=1;
F0=!F0;
}
LCD_X=0X88;
}
send_com(0x36);
send_com(0x30);
}
/*****************************************************************************
;函 数 名:void Show(uchar *temp)
;功 能: 查表取数据送显示
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
void Show(uchar *temp)
{
//Delay_Nms(80);延//时80ms ,
while((*temp)!='\0' )
{
Send_Data_Lcd(*temp);
temp++;
}
}
/*****************************************************************************
;函 数 名:void Test_Lcd_End(void)
;功 能: ts12864测试程序
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
******************************************************************************/
void Test_Lcd_End(void)
{
lcd_data = 0x00;
RS = 0;
RW = 0;
E = 0;
PS = 0;
RST = 0;
}
/*************************st12864的主测试程序*******************************/
void Test_Lcd(void)
{
Test_Lcd_End(); //初始化端口
Init_LCD();
clear_LCD();
PHO_DISP(TU_TAB2); //显示图形
delay_ms(60000);
delay_ms(60000);
PHO_DISP(TU_TAB1); //显示图形
delay_ms(60000);
delay_ms(60000);
clear_LCD();
send_com(0x80); //显示第一行汉字
Show(hanzi0);
delay_ms(60000);
send_com(0x90); //显示第二行汉字
Show(hanzi1);
delay_ms(60000);
send_com(0x88); //显示第三行汉字
Show(hanzi2);
delay_ms(60000);
send_com(0x98); //显示第四行汉字
Show(hanzi3);
delay_ms(60000);
delay_ms(60000);
delay_ms(60000);
clear_LCD();
Test_Lcd_End();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -