stc8a8k64s4a12 12864例程
时间: 2023-08-05 11:05:58 浏览: 128
以下是STC8A8K64S4A12单片机与12864液晶屏的一份简单例程,仅供参考:
```
#include <reg52.h>
#include <intrins.h>
#define LCD12864_PORT P1
sbit LCD12864_RS = P2^4; //12864液晶屏RS引脚连接单片机P2.4口
sbit LCD12864_RW = P2^5; //12864液晶屏RW引脚连接单片机P2.5口
sbit LCD12864_EN = P2^6; //12864液晶屏EN引脚连接单片机P2.6口
void delayms(unsigned int xms) //延时函数
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
void LCD12864_SendCmd(unsigned char cmd) //写指令函数
{
LCD12864_RS = 0;
LCD12864_RW = 0;
LCD12864_PORT = cmd;
LCD12864_EN = 1;
LCD12864_EN = 0;
delayms(2);
}
void LCD12864_SendData(unsigned char dat) //写数据函数
{
LCD12864_RS = 1;
LCD12864_RW = 0;
LCD12864_PORT = dat;
LCD12864_EN = 1;
LCD12864_EN = 0;
delayms(2);
}
void LCD12864_Init() //LCD初始化函数
{
LCD12864_SendCmd(0x30); //基本指令集,8位数据线,单行显示
delayms(2);
LCD12864_SendCmd(0x01); //清屏
delayms(2);
LCD12864_SendCmd(0x06); //光标右移,字符不移动
delayms(2);
LCD12864_SendCmd(0x0c); //显示开,光标关闭
delayms(2);
}
void LCD12864_Clear() //清屏函数
{
LCD12864_SendCmd(0x01);
delayms(2);
}
void LCD12864_ShowStr(unsigned char x,unsigned char y,unsigned char *str) //显示字符串函数
{
unsigned char i;
if(y == 0) //第一行
LCD12864_SendCmd(0x80 + x); //设置光标位置
else if(y == 1) //第二行
LCD12864_SendCmd(0x90 + x);
else if(y == 2) //第三行
LCD12864_SendCmd(0x88 + x);
else //第四行
LCD12864_SendCmd(0x98 + x);
for(i=0;str[i]!='\0';i++) //逐个发送字符
{
LCD12864_SendData(str[i]);
delayms(2);
}
}
void LCD12864_ShowNum(unsigned char x,unsigned char y,unsigned int num) //显示数字函数
{
unsigned char buf[17];
sprintf(buf,"%d",num); //将数字转换为字符串
LCD12864_ShowStr(x,y,buf); //调用显示字符串函数
}
void main()
{
LCD12864_Init(); //LCD初始化
LCD12864_Clear(); //清屏
LCD12864_ShowStr(0,0,"Hello,World!"); //显示字符串
while(1);
}
```
需要注意的是,这份例程只是一个简单的演示程序,实际应用中需要根据具体需求进行修改和优化。此外,液晶屏的连接方式和通信协议也需要根据具体型号进行设置。
阅读全文