午时龙且的笔记 https://passport2.21ic.com/?639469 [收藏] [复制] [RSS]

日志

1602液晶简单显示

已有 604 次阅读2010-9-26 15:36 |系统分类:单片机| 1602液晶

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="
www.hao123.com"; //14
uchar code table1[]="QQ:805039081"; //12
sbit lcden=P2^7;//使能端
sbit lcdrs=P2^6;//1:数据 0:命令
sbit lcdrw=P2^5;//1:读 0:写


uchar num;



void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void write_com(uchar com) //写命令子函数 ,控制滚屏,滚动,整体左移,整体右移等一系列操作
{
        lcdrw=0;
 lcdrs=0;
 P0=com;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0;
}


void write_data(uchar date)//写数据子函数,控制输入数字,字母等显示模块
{
        lcdrw=0;
 lcdrs=1;
 P0=date;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0;
}
void init()//初始化子函数
{


 lcden=0;
 write_com(0x38);//显示模式设置
 write_com(0x0f);// 开显示,开显示光标,开光标闪烁
 write_com(0x06); //N=1,当读或写一个字符后地址指针加一,且光标加一
 write_com(0x01);//清屏
 write_com(0x80+0x10);//第一行从第一个开始,10H~27H
}
void main()
{
 init();
 for(num=0;num<14;num++) //  限制第一行的字符
 {
  write_data(table[num]);
  delay(20);
 }
// write_com(1); //清屏
 write_com(0x80+0x50); //0x80是第一行的起始位置,第一行10~27,第二行50~67
 for(num=0;num<12;num++)   //限制第二行的字符
 {
  write_data(table1[num]);
  delay(20);
 }
 for(num=0;num<16;num++) //移动16个字符
 {
  write_com(0x18);//整屏左移动
  delay(20);
 }
 while(1);
}


 


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)