📄 tsp_lcd_movx.c
字号:
//**************************************************************************************//
// 头文件区 //
//**************************************************************************************//
#include <SST89x5x4.h> /*关于寄存器、位的定义*/
#include <intrins.h> /*内部函数调用,如_nop_() 、_crol_()、cror();*/
#include <absacc.h> /*绝对地址访问,如XBYTE[0x0fff0]*/
#define write_data_operation XBYTE[0XCDFF] //写数据//E =1 RS=1 RW=0
#define write_commend_operation XBYTE[0XCCFF] //写命令//E=1 RS=0 RW=0
#define read_operation XBYTE[0xCEFF] //读数据//CS=1 RS=0 RW=1
//**************************************************************************************//
// 全局变量定义 //
//**************************************************************************************//
unsigned char test_value,temp;
unsigned char code display[]= " It will take years of hard work to speak English well! ";
unsigned char code display1[]= "Try our best to study! ";
unsigned char code display2[]= " to study! ";
unsigned char code display3[]= " tsp! English! ";
unsigned char code display4[]= " so lovely! ";
//**************************************************************************************//
// 延时程序 //
//**************************************************************************************//
void delay5ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
void delay(unsigned int d) //延时du秒,延时较短,用于指令间的延时
{
while(d--);
}
//**************************************************************************************//
// 状态字检测程序 //
//**************************************************************************************//
void read_write_test(void) //状态字检测程序
{ //对控制器每次进行读写操作前,都必须进行读写检测
temp=read_operation;
test_value=(temp&0x80);
}
//**************************************************************************************//
// 写指令子函数 //
//**************************************************************************************//
void write_command_not(unsigned char value)//(不检测忙信号)写指令子函数
{
write_commend_operation=value;
}
void write_command(unsigned char value)//(须检测忙信号)写指令子函数
{
do
{
read_write_test(); //对控制器每次进行读写操作前,都必须进行读写检测
}while(test_value==0x80); //STA7=P0^7最高们为读/写操作使能端,1:禁止 0:允许
write_commend_operation=value;
}
//**************************************************************************************//
// 写数据子函数 //
//**************************************************************************************//
void write_data(unsigned char value)
{
do
{
read_write_test(); //对控制器每次进行读写操作前,都必须进行读写检测
}while(test_value==0x80); //STA7=P0^7最高们为读/写操作使能端,1:禁止 0:允许
write_data_operation=value;
}
//**************************************************************************************//
// LCD系统初始化 //
//**************************************************************************************//
void System_Init ( void )
{
delay5ms();
delay5ms();
delay5ms();
write_command_not(0x38); //(不检测忙信号)写指令子函数
delay5ms();
write_command_not(0x38); //
delay5ms();
write_command_not(0x38); //
write_command(0x38); //设置显示模式 ,8位2行5x7点阵
write_command(0x08); // 关显示
write_command(0x01); //清屏
write_command(0x38); //设置显示模式 ,8位2行5x7点阵
write_command(0x06); //文字不动,光标自动右移
write_command(0x0F); //显示器开、光标开、闪烁开
}
//**************************************************************************************//
// 主MAIN函数区 //
//**************************************************************************************//
void main(void)
{
unsigned char i,j,k;
System_Init ();
while(1)
{
for(k=0;k<3;k++)//闪烁三次
{
write_command(0x01); //清屏
delay(100);
write_command(0x0f); //显示器开、光标开、闪烁开
for(i=0;i<32;i++)
{
if(i<16)
{
write_command(0x80|i);
write_data(display1[i]);
}
else
{
write_command(0xc0|(i-16));//#0C0H ;写入显示起始地址(第二行第一个位置)
write_data(display2[i-16]);
}
}
delay(50000);
delay(50000);
}
delay(300);
for(j=0;j<75;j++)
for(i=0;i<32;i++)
{
if(i<16)
{
write_command(0x80|i);
write_data(display3[i]);
write_command(0xc0|i);//#0C0H ;写入显示起始地址(第二行第一个位置)
write_data(display[i+j]);
}
delay(700);
}
delay(100);
for(i=0;i<32;i++)
{
if(i<16)
{
write_command(0x80|i);
write_data(display3[i]);
}
else
{
write_command(0xc0|(i-16));//#0C0H ;写入显示起始地址(第二行第一个位置)
write_data(display4[i-16]);
}
}
delay(300);
delay(10);
};
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -