找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1481|回复: 0
收起左侧

1602动态显示

[复制链接]
ID:378041 发表于 2018-7-23 17:09 | 显示全部楼层 |阅读模式
本帖最后由 515229319 于 2018-7-24 10:52 编辑

实现1602基本动态显示:
(附详细解析)
  实现
#include<reg52.h>        //52系列单片机头文件
#define uchar unsigned char      //宏定义
#define uint unsigned int      //宏定义
uchar code table[]="51 dan pian ji";
uchar code table1[]="conscientious";
uchar num;

sbit lcden=P3^5;        //液晶使能端
sbit lcdrw=P3^6;        
sbit lcdrs=P3^7;        //液晶数据命令选择端

void delay(uint z)        //延时函数
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}

void write_com(uchar com)    //子函数
{
lcden=0;       //选择写命令模式
lcdrw=0;
P0=com;        //将要写的命令字送到数据总线上
delay(10);          //稍做延时以待数据稳定
lcden=1;       //使能端给一高脉冲,因为初始化函数中已经将lcden置位0
delay(10);          //稍做延时
lcden=0;       //将使能端置0以完成高脉冲
}

void write_date(uchar date)
{
lcden=0;
lcdrs=1;       //选择写命令模式
lcdrw=0;
P0=date;       //将要写的命令字送到数据总线上
delay(10);       //稍做延时以待数据稳定
lcden=1;       //使能端给一高脉冲,因为初始化函数中已经将lcden置位0
delay(10);       //稍做延时
lcden=0;       //将使能端置0以完成高脉冲
}

void init()
{
lcden=0;
lcdrw=0;
write_com(0x38);     //00111000  设置16*2显示,5*7点阵,8位数据接口
write_com(0x0c);     //00001100 设置开显示,不显示光标    改为0x0f则带闪烁光标(00001111)
write_com(0x06);     //00000110 写一个字符后地址指针加1
write_com(0x01);     //00000001  显示清0,数据指针清0
}

void main()
{
init();
write_com(0x80+0x10);   
for(num=0;num<14;num++)
{
  write_date(table[num]);
  delay(10);
}
write_com(0x80+0x50);   
for(num=0;num<13;num++)
{
  write_date(table1[num]);
  delay(10);
}
for(num=0;num<16;num++)
{
  write_com(0x18);     //左移指令
  delay(200);              //控制进入速度
}
while(1);
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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