找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LCD1602显示

[复制链接]
跳转到指定楼层
楼主
ID:434028 发表于 2018-11-27 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#include <intrins.h>

sbit rs= P3^5;    //寄存器类型,1表示数据寄存器,2表示指令寄存器
sbit rw = P3^6;   //读写选择  1表示读,0表示写
sbit ep = P3^7;   //读写使能,下降沿使能


void delay(unsigned char ms)     //延时 n  ms
{
unsigned char i;
while(ms--)
{
  for(i = 0; i<123; i++)   
  {
   ;
  }   
}
}

bit lcd_bz()           //判断LCD是否忙碌
{
bit result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P1 & 0x80);
ep = 0;
return result;
}
void lcd_wcmd(unsigned char cmd)     //写指令
{
while(lcd_bz());//判断LCD是否忙碌
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P1 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}

void lcd_pos(unsigned char pos)      //显示地址
{
lcd_wcmd(pos | 0x80);
}
             //写数据
void lcd_wdat(unsigned char dat)
{
while(lcd_bz());//判断LCD是否忙碌
rs = 1;
rw = 0;
ep = 0;
P1 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}

void lcd_wstr(const unsigned char *s)
{
  unsigned int x,y,z;
  x=number/10000;     //x 1,2,3,4
  y=(number/1000)%10;  // y 2
  z=(number/100)%10;     //z 3
  write_LCD_DATA1(int2charLCD[x]);
  display_LCD_string(".");
  write_LCD_DATA1(int2charLCD[y]);
  write_LCD_DATA1(int2charLCD[z]);
}

void lcd_init()          //LCD初始化
{
lcd_wcmd(0x38);    //功能设定
delay(1);
lcd_wcmd(0x0c);    //显示器开关
delay(1);
lcd_wcmd(0x06);    //设定进入模式
delay(1);
lcd_wcmd(0x01);    //清除显示屏,把光标移至左上角
delay(1);
}

void main(void)
{
lcd_init();// LCD初始化
delay(10);
lcd_pos(0x01);//设置显示位置
//i = 0;
while(1){
  lcd_wstr("abcdefg");
  lcd_pos(0x42);
  lcd_wstr("abcdefg");
  lcd_wcmd(0x01);
  delay(3);
}
}


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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