深圳市炜烨兴电子有限公司|LCD在线|智能串口液晶
注册| 登录| 通行证 生产液晶显示模块哪家强?Wayeah LCM!专业的液晶显示模块研发、生产厂家!

首页 新闻 字符型| 图形型| 定制型| 智能型| 技术应用 留言反馈 联系方式 |

当前位置液晶应用技术 >> 串口液晶功编程演示:3IO直接驱动

串口液晶功编程演示: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(1);
  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(0);
//  send_byte(0x0d);  //定位字符串起始地址
    lcd_string(0,"三串口线,UART串口,带USB转换!");
     for(n=0;n<60000;n++);

        //显示一个串2
     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(0);
  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++);
 }
}

[来源:炜烨兴电子] [作者:wayeah] [日期:09-11-08] [热度:]

评论

© 2004-2015 Wayeah LCM All rights reserved.

Powered by: KingCMS 5.1.0.0812

|2009旧版 | 联系方式 | 付款方式 | 淘宝店|