找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2417|回复: 1
打印 上一主题 下一主题
收起左侧

字符型LCD液晶显示广告牌控制

[复制链接]
跳转到指定楼层
楼主
ID:432034 发表于 2018-11-23 19:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:345979 发表于 2018-11-28 08:46 | 只看该作者
上传个图啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表