图和程序都在这了:LCD1602(51单片机).txt
这是1602的引脚功能图,根据引脚的功能来驱动相应的引脚就好
这是我麒麟座里面附加的中文资料,里面详细介绍了他的时序和控制方式,
希望对你有帮助哦
SMC1602A.pdf
首先,你应该看看1602的数据手册,明白要求是什么。
之后硬件和程序可以参考这个链接http://www.51hei.com/mcu/3306.html
测试代码
#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit lcden=P3^2; //使能端 sbit lcdrs=P3^0; //数据命令选择端 sbit rw=P3^1; uchar code table[]="xian shi 1"; //输入的字符 uchar code table1[]="xian shi 2"; //输入的字符 uchar num=0; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com)//根据写时序图写出指令程序 { lcdrs=0; rw=0; P1=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date)//根据写时序图写出数据程序 { lcdrs=1; rw=0; P1=date; delay(5); lcden=1; delay(5); lcden=0; } void init() { lcden=0; //使能端为低电平 write_com(0x38); /*显示模式设置 00111000 设置16*2显示 5*7点阵 8位数据接口*/ write_com(0x0f); /*显示开关及光标设置 00001DCB D=1,开显示 D=0, 关显示 C=1,显示光标 C=0,不显示光标 B=1,光标闪烁 B=0,光标不闪烁*/ write_com(0x06);//地址指针自动+1且光标+1,写字符屏幕不会移动 write_com(0X01); write_com(0X80); } void main() { init(); for(num=0;num<10;num++) //输入的字符数量,修改 { write_data(table[num]); delay(50); } write_com(0X80+0x40); for(num=0;num<10;num++) //输入的字符数量,修改 { write_data(table1[num]); delay(50); } while(1); }
看接口说明和时序图就成了