LCD12864驱动程序 【C语言】
主控芯片:stc8h8k64u(打狗棒)
#include "stc8h.h"
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
#define lcd P2
sbit rs=P0^0;
sbit rw=P0^1;
sbit e=P0^2;
sbit psb=P0^3;
uchar code tab1[]={"店铺链接:"};
uchar code tab2[]={"KCER001.taobao.c"};
uchar code tab3[]={"STC 国芯启航"};
uchar code tab4[]={"STCMCUAI.COM"};
void init_io()
{
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
}
void Delay1000ms() //@11.0592MHz
{
unsigned char data i, j, k;
i = 57;
j = 27;
k = 112;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay100ms() //@11.0592MHz
{
unsigned char data i, j, k;
_nop_();
i = 6;
j = 157;
k = 59;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void delayus(uint us)
{
while (us--);
}
void lcd_busy()
{
rs=0;
rw=1;
e=1;
lcd=0xff;
while((lcd&0x80)==0x80);
e=0;
}
void lcd_wcmd(uchar cmd)
{
lcd_busy();
rs=0;
rw=0;
e=0;
delayus(10);
lcd = cmd;
delayus(10);
e =1 ;
delayus(10);
e =0 ;
}
void lcd_wdat(uchar dat)
{
lcd_busy();
rs=1;
rw=0;
e=0;
delayus(10);
lcd = dat;
delayus(10);
e =1 ;
delayus(10);
e =0 ;
}
void lcd_pos(uchar x,uchar y)
{
uchar pos;
if (x==0) {x=0x80;}
else if (x==1) {x=0x90;}
else if (x==2) {x=0x88;}
else if (x==3) {x=0x98;}
if (y==0) {y=0x00;}
else if (y==1) {y=0x01;}
else if (y==2) {y=0x02;}
else if (y==3) {y=0x03;}
else if (y==1) {y=0x04;}
else if (y==2) {y=0x05;}
else if (y==3) {y=0x06;}
else if (y==3) {y=0x07;}
pos=x+y;
lcd_wcmd( pos );
}
void lcd_init()
{
psb= 1;
lcd_wcmd(0x34);
delayus(50);
lcd_wcmd(0x30);
delayus(50);
lcd_wcmd(0x0c);
delayus(50);
lcd_wcmd(0x01);
delayus(50);
}
main()
{
uchar i,z,x,j;
init_io();
lcd_init();
z=0;j=0;
lcd_pos(z,j); i = 0;
while(tab1 != '\0'){lcd_wdat(tab1);Delay100ms(); i++ ;}
z++;
lcd_pos(z,j); i = 0;
while(tab2 != '\0'){lcd_wdat(tab2);Delay100ms(); i++ ;}
z++;
lcd_pos(z,j); i = 0;
while(tab3 != '\0'){lcd_wdat(tab3);Delay100ms(); i++ ;}
z++;
lcd_pos(z,j); i = 0;
while(tab4 != '\0'){lcd_wdat(tab4);Delay100ms(); i++ ;}
while(1);
} 此代码 实现效果原图片为:
这个代码软件延迟是不是太长啦 wzaefd 发表于 2023-11-11 10:11
这个代码软件延迟是不是太长啦
体现“动态”的效果
不然速度太快 直接就显示在屏幕上了😋
当然可自行安排延时时间的 WangChong 发表于 2023-11-13 23:50
这一个屏多少钱?
10元左右 学习一下 🤙🤙🤙 学习一下 这个屏驱动芯片是什么型号?链接发一下。
页:
[1]
2