本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导。本文章会陆续推出,隔几天一个章节。希望对广大即将接触单片机的人有所帮助,如果有错误欢迎回帖指出与本人交流或加入QQ群143586739. 本部分主要介绍1602液晶显示,显示内容为“Hello,Welcome to my site,my friends.”。 原理图如下: 程序如下: #include #define uchar unsigned char #define uint unsigned int ***it RS=P3^0; //数据/命令选择端(H/L) ***it EN=P3^2; //使能端 ***it RW=P3^1; //读/写选择端(H/L),本文章只写,所以该端口供低电平 ***it wela=P3^3;//锁存器位选信号 uchar table1[]="Hello,Welcome to my ";//字符表1 uchar table2[]="site,my friends.";//字符表2 void delay(uint x) //延时函数 { uint a,b; for(a=x;a>0;a--) for(b=10;b>0;b--); } void delay1(uint x) //延时函数 { uint a,b; for(a=x;a>0;a--) for(b=100;b>0;b--); } void write_com(uchar com) //写命令函数 { wela=1; //锁存器位选打开 P2=com; //向P2口写命令 wela=0; //锁存器位选关闭 RS=0; //以下部分跟据1602手册的时序图写出 EN=0; RW=0; delay(10); EN=1; delay(10); EN=0; } void write_date(uchar date) //写数据函数 { wela=1; P2=date; wela=0; RS=1; EN=0; RW=0; delay(10); EN=1; delay(10); EN=0; } void init() //初始化函数 { write_com(0x38); //显示模式设置 delay(20); write_com(0x0f);//显示开/关及光标设置 delay(20); write_com(0x06);//当写一个字符后地址指针加一,光标加一 delay(20); } void main() //主函数 { uchar a; init(); write_com(0x80); //第一行起始地址 delay(20); for(a=0;a<25;a++) { write_date(table1[a]);//读取字符表 delay(20); } write_com(0xc0); //第二行起始地址 delay(20); for(a=0;a<17;a++) { write_date(table2[a]);//读取字符表 delay(20); } while(1); //保持显示 } 试验结果如下: 1602手册相关内容: |
更多回帖