标题: 字符型LCD液晶显示广告牌控制 [打印本页]

作者: zhouhualong    时间: 2018-11-23 19:57
标题: 字符型LCD液晶显示广告牌控制
#include <reg51.h>     
#include <intrins.h>  
//定义控制信号端口
sbit RS=0xb0;                        //P3.0
sbit RW=0xb1;                        //P3.1
sbit E=0xb2;                        //P3.2
//声明调用函数
void lcd_w_cmd(unsigned char com); //写命令字函数
void lcd_w_dat(unsigned char dat); //写数据函数
unsigned char lcd_r_start();        //读状态函数
void lcd_int();              //LCD初始化函数
void delay(unsigned int i);  //可控延时函数
void delay1();    //软件延时函数,大约几个机器周期
void main()     //主函数
{
   unsigned char lcd[]="SHEN ZHEN";  
   unsigned char i;
   P1=0xff;                            //送全1到P0口
   lcd_int();                     //初始化LCD
   delay(255);
   lcd_w_cmd(0x83);                    //设置显示位置
   delay(255);
   for(i=0;lcd[i]!='\0';i++)         //显示字符串,字符串结束符为'\0'
   {                    
    lcd_w_dat(lcd[i]);
    delay(200);
    }
   while(1);                           //原地踏步,待机命令
}
  
//函数名:delay1
//函数功能:采用软件实现延时,大约几个机器周期
//形式参数:无
//返回值:无
void delay1()      
{  
  _nop_();
  _nop_();
  _nop_();
}
//函数名:lcd_int
//函数功能:lcd初始化
//形式参数:无
//返回值:无
void lcd_int()           
{
  lcd_w_cmd(0x3c);                //设置工作方式
  lcd_w_cmd(0x0e);                //设置光标
  lcd_w_cmd(0x01);                //清屏
  lcd_w_cmd(0x06);                //设置输入方式
  lcd_w_cmd(0x80);                //设置初始显示位置
}
//函数名:lcd_r_start
//函数功能:读状态字
//形式参数:无
//返回值:返回状态字,最高位D7=0,LCD控制器空闲;D7=1,LCD控制器忙
unsigned char lcd_r_start()         
{
  unsigned char s;
  RW=1;    //RW=1,RS=0,读LCD状态
  delay1();
  RS=0;
  delay1();
  E=1;           //E端时序   
  delay1();
  s=P1;    //从LCD的数据口读状态
  delay1();
  E=0;
  delay1();
  RW=0;
  delay1();
  return(s);   //返回读取的LCD状态字
}
//函数名:lcd_w_cmd
//函数功能:写命令字
//形式参数:命令字已存入com单元中
//返回值:无
void lcd_w_cmd(unsigned char com)   
{
  unsigned char i;
  do{                           //查LCD忙操作
    i=lcd_r_start();  //调用读状态字函数
    i=i&0x80;                   //"与"操作屏蔽掉低7位
    delay(2);
     }while(i!=0);         //LCD忙,继续查询,否则退出循环
  RW=0;
  delay1();
  RS=0;    //RW=0,RS=0,写LCD命令字
  delay1();
  E=1;    //E端时序   
  delay1();
  P1=com;   //将com中的命令字写入LCD数据口
  delay1();
  E=0;
  delay1();
  RW=1;
  delay(255);
}
//函数名:lcd_w_dat
//函数功能:写数据
//形式参数:数据已存入dat单元中
//返回值:无
void lcd_w_dat(unsigned char dat)   
{
  unsigned char i;
  do{           //查忙操作
    i=lcd_r_start();  //调用读状态字函数
    i=i&0x80;          //"与"操作屏蔽掉低7位
    delay(2);            
      }while(i!=0);             //LCD忙,继续查询,否则退出循环
  RW=0;
  delay1();
  RS=1;    //RW=0,RS=1,写LCD命令字
  delay1();
  E=1;    //E端时序   
  delay1();
  P1=dat;   //将dat中的显示数据写入LCD数据口
  delay1();
  E=0;
  delay1();
  RW=1;
  delay(255);
}
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void     delay(unsigned int i)     //延时函数
{
  unsigned int k;
for(k=0;k<i;k++);
}

单片机代码程序.zip

39.69 KB, 下载次数: 10, 下载积分: 黑币 -5


作者: Amelime    时间: 2018-11-28 08:46
上传个图啊




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1