串口液晶功编程演示:3IO直接驱动
#include <reg51.h>
#include <intrins.h>
sbit MCLK=P1^0; //定义三个IO口进行对串口液晶的操作
sbit SCLK=P1^1;
sbit SDA =P1^2;
unsigned char bdata DATA;
sbit BIT0=DATA^0;
// 发送一个数据到模块
send_byte(unsigned char ch) //3IO发送一个字节数据
{
unsigned char i;
if(!MCLK)return; //
MCLK=0; //申请通讯
DATA=ch; for(i=4;i!=0;i--)
{
while(SCLK); //检测从机响应
SDA=BIT0; //放一个bit到SDA
MCLK=1;
DATA=DATA>>1; //准备下一个bit
while(!SCLK); //检测从机响应
SDA=BIT0; //放一个bit到SDA
MCLK=0;
DATA=DATA>>1; //准备下一个bit
}
while(SCLK); //检测从机收完
MCLK=1;
while(!SCLK);//等待从机准备好
SDA=1;
}
//显示字符串
lcd_string(bit char_bit, unsigned char *pst)
{
send_byte('s');
send_byte('t');
send_byte('r');
send_byte(char_bit);
while(*pst!=0)
send_byte(*pst++);
send_byte(0x00); //字符串结束标志\0
send_byte(0x0d); //串口发送结束标志
}
//显示直线
dis_line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2)
{
send_byte('l');
send_byte('i');
send_byte('n');
send_byte(x1);
send_byte(y1);
send_byte(x2);
send_byte(y2);
send_byte(0x0d);
}
//清除直线
del_line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2)
{
send_byte('c');
send_byte('l');
send_byte('n');
send_byte(x1);
send_byte(y1);
send_byte(x2);
send_byte(y2);
send_byte(0x0d);
}
clr_lcd()
{
//清屏
send_byte('c');
send_byte('l');
send_byte('r');
send_byte(0x0d);
}
/////////////////////////////
main()
{
unsigned int n;
unsigned char i;
for(n=0;n<1000;n++); //wait...
while(1)
{
clr_lcd();
for(n=0;n<10000;n++);
//查状态
send_byte('?');
send_byte('?');
send_byte('?');
send_byte(0x0d);
for(n=0;n<60000;n++);
clr_lcd();
for(i=0;i<96;i++) //显示所有的ascii字符
{
send_byte('c');
send_byte('h');
send_byte('r');
send_byte(0x00);
send_byte(i+0x20);
send_byte(0x00); //小字体
send_byte(0x0d);
}
for(n=0;n<60000;n++);
clr_lcd();
//显示一个串1
send_byte('l');
send_byte('o');
send_byte('c');
send_byte(2);
send_byte(0);
send_byte(0x0d); //定位字符串起始地址
lcd_string(0,"Wayeah LCM ABC123中文a混B排D液晶显示器。");
for(n=0;n<60000;n++);
//显示一个串2
// send_byte('l'); //没指定显示地址则从上次的结束地址开始
// send_byte('o');
// send_byte('c');
// send_byte(2);
// send_byte(2);
// send_byte(0x0d); //定位字符串起始地址
lcd_string(0,"三串口线,UART串口,带USB转换!");
for(n=0;n<60000;n++);
//显示一个串2
// send_byte('l'); //没指定显示地址则从上次的结束地址开始
// send_byte('o');
// send_byte('c');
// send_byte(10);
// send_byte(3);
// send_byte(0x0d); //定位字符串起始地址
lcd_string(0,"三0线串口,UART");
for(n=0;n<60000;n++);
clr_lcd();
//显示一个串3
send_byte('l'); //没指定显示地址则从上次的结束地址开始
send_byte('o');
send_byte('c');
send_byte(0);
send_byte(1);
send_byte(0x0d); //定位字符串起始地址
lcd_string(1,"深圳炜烨");
for(n=0;n<60000;n++);
for(n=0;n<60000;n++);
//显示一线段
dis_line(0,10,117,33);
for(n=0;n<60000;n++);
//清除一线段
del_line(0,10,117,33);
for(n=0;n<60000;n++);
//close backlight
// send_byte('b');
// send_byte('l');
// send_byte('s');
// send_byte(0x0d);
// for(n=0;n<30000;n++);
//open backlight
// send_byte('b');
// send_byte('l');
// send_byte('s');
// send_byte(0x0d);
// for(n=0;n<30000;n++);
//反显一个区域:0列开始反显12个字符位置
// 1行开始反显两行
//注意:
send_byte('c');
send_byte('p');
send_byte('l');
send_byte(0);
send_byte(1);
send_byte(12);
send_byte(2);
send_byte(0x0d);
for(n=0;n<60000;n++);
//清除一个区域:1列开始反显12个字符位置
// 1行开始清除两行
send_byte('c');
send_byte('l');
send_byte('w'); //clw指令
send_byte(1); //开始清除的坐标
send_byte(1);
send_byte(12); //清除的宽度-12个字符位置
send_byte(2); //清除的高度-两行
send_byte(0x0d);
for(n=0;n<60000;n++);
}
}
- 串口液晶功能规格
- 串口液晶功能:控制方式:1、usb接口控制 液晶板上内置usb转换电路,可直接使用PC机的usb进行操作2、uart串口控制 液晶板上内置rs232电平转换电路,可直接用PC机的com串口操作3、针对普通mcu,板上也提供了普通IO串口进行操作的接口,只用三个IO接口就可以控制串口液晶!显示功能:1..
- 中文字库模块-KM24064A-GB规格,接口说明
- RA8822控制的液晶模块,FSTN和蓝屏两种配置,5V单电源,型号KM24064A-GB,另KM24064B-GB可工作在3V电压下,欢迎使用
- 汉字库液晶KM320240-8
- RA8803控制的中文字库液晶模块320*240点阵支持分层显示,图形和文本组合显示,功能强大,应用灵活
