1, 这是一段LCD1602的显示程序,有谁能帮我解释一下吗?谢谢
让LCD1602显示字符前要输入字符所在的地址,这也是每显示一个字符地址要加一的原因,在下面的一段代码里你会明白怎么设置地址,怎么让地址自动加一,怎么清屏,怎么显示字符,希望你能看懂哦sbit LCD_E=P2^0; //lcd1602控制置位sbit LCD_RW=P2^1;//lcd1602控制置位sbit LCD_RS=P2^2; //lcd1602控制置位void LCD_command(unsigned char com){LCD_E=0;LCD_RW=0;LCD_RS=0;P1=com;delay_us(100);LCD_E=1;delay_us(100);LCD_E=0;}void LCD_date(unsigned char dat){LCD_E=0;LCD_RW=0;LCD_RS=1;P1=dat;delay_us(100);LCD_E=1;delay_us(100);LCD_E=0;} LCD_command(0x38);//设置LCD为16*2显示,5*7点阵,8位数据接口 LCD_command(0x0c); //设置LCD显示开,光标显示关 LCD_command(0x06); //写一个数据后地址加1LCD_command(0x01);//显示清屏LCD_command(0x80);//数据指针设置为第一行第一位LCD_date("pi");LCD_date("l");LCD_date("e");LCD_date("a");LCD_date("s");LCD_date("e");LCD_date(" ");LCD_date("c");LCD_date("h");LCD_date("e");LCD_date("c");LCD_date("k");LCD_date(" ");LCD_date("t");LCD_date("h");LCD_date("e");LCD_command(0x80+0x40); //LCD地址指针指向第二行第一个位置LCD_date("c");LCD_date("o");LCD_date("n");LCD_date("n");LCD_date("e");LCD_date("c");LCD_date("t");LCD_date("i");LCD_date("o");LCD_date("n");LCD_date("!");LCD_date("!");
2, 给个单片机液晶1602显示汉字的程序,谢谢
#include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit lcdrs=P1^0;sbit lcden=P1^2;sbit lcdwr=P1^1;uchar CGCODE[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02,//"年"代码 0x000x0F,0x09,0x0F,0x09,0x0F,0x09,0x13,0x00,//"月"代码 0x010x0F,0x09,0x09,0x0F,0x09,0x09,0x0F,0x00,//"日"代码 0x020x07,0x04,0x07,0x04,0x07,0x00,0x04,0x07,//"星"左上半部分代码 0x030x1F,0x01,0x1F,0x01,0x1F,0x08,0x08,0x1F,//"星"右上半部分代码 0x040x08,0x17,0x00,0x1F,0x00,0x00,0x00,0x00,//"星"左下半部分代码 0x050x08,0x1F,0x08,0x1F,0x00,0x00,0x00,0x00//"星"右下半部分代码 0x06 };uchar tab[]={"0","8",0x00,"0","3",0x01,"0","9",0x02};//显示"08年03月09日"void delay(uint t){uint x,y;for(x=0;x<t;x++)for(y=0;y<110;y++);}void write_com(uchar com)//向1602写指令{lcdrs=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar dat)//向1602写数据{lcdrs=1;P2=dat;delay(5);lcden=1;delay(5);lcden=0;}void init()//程序初始化{lcdwr=0;lcden=0; write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);}void main()//主函数{int i;init();lcdrs=0;lcdwr=0;write_com(0x40);//将自定义字符写入CGRAMfor(i=0;i<56;i++)//循环56次写入{write_date(CGCODE[i]); }write_com(0x80);//写入初始地址for(i=0;i<9;i++){write_date(tab[i]);} write_com(0x80+9);//用09H和0AH显示"星"上部分write_date(0x03);write_date(0x04);write_com(0x80+0x40+9);//用49H和4AH显示"星"上部分write_date(0x05);write_date(0x06);while(1); }
3, lcd1602功能的介绍
1.简介工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)注:为了表示的方便 ,后文皆以1表示高电平,0表示第电平。2.管脚功能1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端。第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。3.操作控制操作控制表 操作 读状态 写指令 读数据 写数据 输入 RS=0,RW=1,E=1 RS=0,RW=0, D0~7=指令码,E=H脉冲 RS=1,RW=1,E=1 RS=1,RW=0, D0~7=数据,E=H脉冲 注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再4.字符集1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如"A"。以下是1602的16进制ASCII码表地址:读的时候,先读左边那列,再读上面那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。[编辑本段]指令集1602通过D0~D7的8位数据端传输数据和指令。显示模式设置: (初始化)0011 0000 [0x38] 设置16*2显示,5*7点阵,8位数据接口;显示开关及光标设置: (初始化)0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)0000 01NS N=1(读或写一个字符后地址指针加1 &;光标加1),N=0(读或写一个字符后地址指针减1 &;光标减1),S=1 且 N=1 (当写一个字符后,整屏显示左移)s=0 当写一个字符后,整屏显示不移动数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。
4, 51单片机液晶1602的C程序谁有,给个简单的显示一个字符A的
#include "reg52.h"sbit LED=P1^0;//LED锁存器sbit SEG=P1^1;//数码管段选锁存器sbit DIG=P1^2;//数码管位选锁存器unsigned char t;sbit LCDRS=P2^7;//数据指令控制sbit LCDRW=P2^6;//读写控制sbit LCDEN=P2^5;//液晶屏使能控制//**********延时函数,延时n*1ms*********void delay(unsigned char n){int i,j;for (i=0; ifor (j=0; j;}//*************写命令***************void Write_Cmd(unsigned char C){LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令LCDRS=0;//指令寄存器选择P0=C;delay(5);LCDEN=0;}//**************写数据**************void Write_Data(unsigned char D){LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令LCDRS=1;//选择数据寄存器P0=D;delay(5);LCDEN=0;}//**********LCD初始化*****************void LCD_Init(){LCDRS=0;//指令寄存器选择Write_Cmd(0x01);//清屏Write_Cmd(0x38);//功能设置8位双行显示5*7点阵Write_Cmd(0x0F);//开关显示设置Write_Cmd(0x06);//输入方式设置,光标从左向右移动,内容不移动}void main(){unsigned char Code1[]="I LOVE MCU!";unsigned char m;//LED,数码管锁存器片选设置LED=0;DUAN=0;WEI=0;LCDRW=0;//写选择LCD_Init();Write_Cmd(0x80+0x01);//写入显示缓冲区起始地址为1行2列for(m=0;m{Write_Data(Code1[m]);delay(3);}while (1);}//end of main
相关概念
write
write是一个计算机函数,主要功能为写到一文件中。
com
com为commercial简称,表示商业性质的,com结尾的域名为最早通用的顶级域名。历史上第一个com域名的诞生是在1985年3月15日,当时个人电脑操作系统主要还是使用MS-DOS3.0操作系统。