📄 st9270显示模块_l4循环输出中文字.c
字号:
/*
说明 用单片机低四位驱动ST7920版本单行显示模块显示指定字符串(4bit模式)
按8个字符一屏循环输出自定义字符串列表
中文字符采用 ST7920-0B 版本中文字库
上电显示"欢迎访问阿呆科技"
文件 ST7920显示模块_L4循环输出中文字.C
作者 TEGEST
修改 修改建议可发到21ICBBS讨论. 或 photar@126.com
版本 V1.00A Build 081212
*/
#include<reg52.h>//采用51单片机驱动ST7920 P0口低四位03-01输出数据
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P2^2;
sbit lcdrw=P2^3;
sbit lcden=P2^4;
//sbit BF=P0^7;//忙标志BUSY FLAG
uchar num,Bit_H=0xa1,Bit_L=0xf7;//字库表的高(Bit_H)和低(Bit_L)位地址
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
uchar com_temp;
com_temp=com>>4;//低四位数据
lcdrs=0;
delay(1);
P0=com_temp;
delay(1);
lcden=1;
delay(1);
lcden=0;
delay(1);
lcdrs=0;
delay(1);
P0=com;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void write_data(uchar out_char)
{
uchar temp;
temp=out_char>>4; //低四位数据
lcdrs=1;
delay(1);
P0=temp;
delay(1);
lcden=1;
delay(1);
lcden=0;
delay(1);
lcdrs=1; //写低四位数据
P0=out_char;
delay(1);
lcden=1;
delay(1);
lcden=0;
delay(1);
}
void init()
{
delay(500);
lcden=0;
lcdrw=0;
delay(1);
write_com(0x02);//地址计数器清零
delay(1);
write_com(0x02);
delay(1);
write_com(0x20);//2line display on 4bits
delay(1);
write_com(0x06);//display on/off control
delay(1);
write_com(0x01);//display clear
delay(1);
write_com(0x0c);//entry mode set c0光标关 e0光标开 f0光标闪烁开
delay(500);
}
void main()
{
init();
write_data(0xbb);//欢 //TEST CHINESE CHAR
write_data(0xb6);
write_data(0xd3);//迎
write_data(0xad);
write_data(0xb7);//访
write_data(0xc3);
write_data(0xce);//问
write_data(0xca);
write_com(0x90); //设置第五个汉字的地址
write_data(0xb0);//阿
write_data(0xa2);
write_data(0xb4);//呆
write_data(0xf4);
write_data(0xbf);//科
write_data(0xc6);
write_data(0xbc);//技
write_data(0xbc);
delay(3000);
write_com(0x80);//指定第1列汉字的地址 0x80
delay(1);
write_com(0x01);//display clear
delay(4);
while(1)
{
for(num=0;num<4;num++)
{
if(Bit_H == 0xaa)
Bit_H=0xb0;
if(Bit_H == 0xf7)
Bit_H=0xa0;
if(Bit_L == 0xff)
{
Bit_H++;
Bit_L=0xa0;
}
write_data(Bit_H);
write_data(Bit_L);
Bit_L++;
delay(1);
}
write_com(0x90);//指定第4列汉字的地址 0xc0=0x80+0x40
for(num=4;num<8;num++)
{
if (num==8)
num=0;
if(Bit_H == 0xaa)
Bit_H=0xb0;
if(Bit_H == 0xf7)
Bit_H=0xa0;
if(Bit_L == 0xff)
{
Bit_H++;
Bit_L=0xa0;
}
write_data(Bit_H);
write_data(Bit_L);
Bit_L++;
delay(1);
lcden=0;
lcdrw=0;
}
delay(500);
write_com(0x80);//指定第1列的地址 0x80
delay(1);
write_com(0x01);//display clear
delay(4);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -