单片机液晶显示驱动程序(用C语言写的)
要求是:RS232接口单片机液晶显示模块PC机上使用串口调试助手的设置如下:
串口设置:波特率9600,无奇偶校验,数据位8位,停止位1位。
发送数据时必须以$开始,无结束字符。如$1234,就可以直接发送。
TMOD=0x20;
TH1=0xfd; 
TL1=0xfd;
PCON=0x00;
SCON=0x50;
TR1=1;
ES=0;
#include <reg52.h>
#include <absacc.h>
#include <math.h>
sbit RS  = P2^5;
sbit RW  = P2^6;
sbit Enable  = P2^7;
sbit  cs      =P1^0;
sbit  sck      =P1^1;
sbit  si      =P1^3;
sbit  so =P1^2;
sbit  clflag0  =ACC^0;
void CheckBF(void);
void LCD_WtoiR(char datas);
void LCD_WtData(char datas);
void LCD_Clr(void);
void LCD_Init(void);
void LCD_SFLine(void);
void LCD_SSLine(void);
void LCD_printf(char lines, char *p);
void ReadLine(char lines, char *p);
void outbyt(char k);
char inbyt(void);
void wren_cmd(char k);
char rdsr_cmd(void);
void wip_poll(void);
void wrsr_cmd(void);
void CheckBF()      /*  检查忙碌状态  */
{
    char flag;
    flag=0xff;
    while((flag & 0x80)!=0)
      {
        RS=0;
        RW=1;
        Enable=0;
        Enable=1;
        flag=P0;
        Enable=0;
      }
单片机printf函数    RW=0;
}
void LCD_WtoiR(char datas)          /*  指令函数  */
{
    CheckBF();
    Enable=0;
    RS=0;
    Enable=1;
    P0=datas;
    Enable=0;
}
void LCD_WtData(char datas)        /*  数据写入  */
{
    CheckBF();
    Enable=0;
    RS=1;
    RW=0;
    Enable=1;
    P0=datas;
    Enable=0;
}
void LCD_Clr()            /*  清零  */
{
    LCD_WtoiR(1);
}
void LCD_Init()              /*  初始化  */
{
    LCD_WtoiR(0x38);            /*  (0x3c)? 第一行或第二行  */
    LCD_WtoiR(0x0e);            /*  (0x0c)? 是否显示光标  */
    LCD_WtoiR(0x06);            /*  (0x07)?光标左移或右移 */
}
void LCD_SFLine()              /*  显示第一行  */
{
    LCD_WtoiR(0x80);
}
void LCD_SSLine()                  /*  显示第二行  */