• 1602液晶显示例题

    #include<reg52.h> #include<intrins.h> //具有_nop_()函数的库文件 typedef unsigned char zj; //重定义数据类型zj为无符号字符型; sbit L_RS=P2^0; //定义控制信号L_RS连接的引脚 sbit L_RW=P2^1; //定义控制信号L_RW连接的引脚 sbit L_EP=P2^2; //定义控制信号L_EP连接的引脚 zj code disp[]={"digital tempratu"}; //写入liquid crystal的字符串数组 delay(int ms) //延时函数 { int i; while(ms--) { for(i=0;i<250;i++) { _nop_();_nop_();_nop_();_nop_(); } //_nop_()空操作; }} bit licrystal_bz() //测是liquid crystal 忙状态函数,返回“bit”类型; { bit result; //定义bit变量; L_RS=0; //L_RS=0,为读命令而不是数据; L_RW=1; //L_RW=0为读操作,而不是写操作; L_EP=1; //L_EP=0,高电平使读操作有效; _nop_();_nop_();_nop_();_nop_(); result=(bit)(P0&0x80); //将P0口的最高位取出,并强制为bit类型; L_EP=0; //停止读操作; return result; //返回liquid crystal忙标志; } licrystal_wcmd(zj cmd) //向liquid crystal写入指令函数; { while(licrystal_bz()); //liquidcrystal 忙时等待; L_RS=0; //l_RS=0为读写命令; L_RW=0; //L_RW为写操作 L_EP=0; //L_EP=0,为正脉冲做准备; _nop_();_nop_(); P0=cmd; //将命令写入P0口(于liquid crystal数据总线相连); _nop_();_nop_(); _nop_();_nop_(); L_EP=1; //L_EP=1,准备写操作下降沿; _nop_();_nop_();_nop_();_nop_(); L_EP=0; //l_ep=0,出现有效下降沿。 } licrystal_pos(zj pos) //设定字符显示位置函数;pos 的范围为00h~27H,40H~67H { licrystal_wcmd(pos|0x80); //调用写命令函数,写入位置值 } licrystal_wdat(zj dat) //向liquid crystal写入字符(一字节的数据) { while(licrystal_bz()); //当忙时等待; L_RS=1; //写数据操作 L_RW=0; //数据操作; L_EP=0; //写操作; P0=dat; //将显示数据写入p0口 _nop_();_nop_();_nop_();_nop_(); L_EP=1; //L_EP=1,准备写操作下降沿; _nop_();_nop_();_nop_();_nop_(); L_EP=0; //L_EP=0,出现有效下降沿; } licrystal_init() //软件初始化函数 { //L_RW为写操作 licrystal_wcmd(0x38); //16*2显示,5*7点阵,8位数据(001,DL=1,N=0,F=0,00) delay(1); licrystal_wcmd(0x0f); //显示开、关光标,不闪烁(0000,1,D=1,C=0,B=0;) delay(1); licrystal_wcmd(0x06); //增量方式移动光标(0000,0,1,I/D=0,S=0); delay(1); licrystal_wcmd(0x01); //清除LCD的显示内容,AC与DDRAM初始化 delay(1); } main() { zj i; //定义不符号字符变量i licrystal_init(); //调用初始化函数,软件初始化LCD delay(10); while(1) //无限循环 { licrystal_wcmd(0x06); //调用写命令函数,向右移动光标(增量) licrystal_pos(0); //调用显示位置函数,设置显示位置为第一行的一个字符 i=0; //变量初始化 while(disp[i]!='\0') //如果没有遇到结束符,则显示字符 { licrystal_wdat(disp[i]); //调用写数据函数,向liquid crystal写字符,由于增量方式,所以AC自动加1 i++; delay(10); //设置两个字符之间显示的速度 } //控制两屏之间的转换时间 } }

    0
    151
    4KB
    2009-09-09
    14
关注 私信
上传资源赚积分or赚钱