资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
本例程为通过用AT89C52芯片操作LCD12864显示的程序,使用的晶振为12M。/*程序说明:LCD12864显示主程序程序调试员:莫剑辉调试时间:2010-6-7*/#include#include12864.cvoid main()Ini_Lcd(); /液晶初始化子程序Disp(1,0,6,莫剑辉); /显示数据到LCD12864子程序while(1); 这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。/*程序说明:LCD12864显示头文件程序调试员:莫剑辉调试时间:2010-6-7*/#include#define uchar unsigned char#define uint unsigned int#define DATA P2 /数据输出端07sbit RS=P00; /LCD12864 RS端sbit RW=P01; /LCD12864 RW端sbit E =P02; /LCD12864 E 端sbit PSB =P03;/*延时子程序*/void Delay_1ms(uint x)uint j,i; for(j=0;jx;j+) for(i=0;i120;i+); /延时X乘以120 /*LCD12864液晶测忙子程序(读状态)*/void Busy() uchar busy;do E = 0; /0为关闭使能端,1为打开使能端 RS = 0; /1为指令,0为数据 RW = 1; /1为读,0为写 Delay_1ms(20); /延时20乘以120时间 E = 1; /0为关闭使能端,1为打开使能端 busy=P1; /读取P2状态 Delay_1ms(20); /延时20乘以120时间 E = 0; /0为关闭使能端,1为打开使能端 while(busy&0x80); /判断BUSY位是否工作:1为内部在工作,0为正常状态/*LCD12864液晶数据写入子程序*/void Write_Data(uchar k) Busy(); /测忙 E =1;/0为关闭使能端,1为打开使能端 RS=1;/1为指令,0为数据 RW=0;/1为读,0为写 DATA=k;/输入数据K到DATA Delay_1ms(20);/延时20乘以120时间 E =0; /0为关闭使能端,1为打开使能端 Delay_1ms(20); /延时20乘以120时间/*LCD12864液晶命令写入子程序*/void Write_Cmd(uchar cmd) Busy(); /测忙 E=1;/0为关闭使能端,1为打开使能端 RS=0; /1为指令,0为数据 RW=0;/1为读,0为写 DATA=cmd; /输入命令cmd到DATA Delay_1ms(20);/延时20乘以120时间 E=0;/0为关闭使能端,1为打开使能端 Delay_1ms(20);/延时20乘以120时间/*LCD12864液晶数据显示子程序*/void Disp(uchar y,uchar x,uchar i,uchar *z) uchar Address; if(y=1)Address=0x80+x; /Y判断第几行,X判断第几列,0x80为液晶行初始地址 if(y=2)Address=0x90+x; if(y=3)Address=0x88+x; if(y=4)Address=0x98+x;Write_Cmd(Address); /写入地址命令到LCD12864while(i) /写入显示数据的大小 Write_Data(*(z+); /写入显示数据到LCD12864 i-; /*LCD12864液晶初始化子程序*/void Ini_Lcd(void) PSB=1; Delay_1ms(20); Write_Cmd(0x30); /基本指令集 Delay_1ms(20); Write_Cmd(0x02); / 地址归位 Delay_1ms(20); Write_Cmd(0x0c); /整体显示打开,游标关闭 Delay_1ms(20); Write_Cmd(0x06); /游标右移 Delay_1ms(20); Write_Cmd(0x80); /设定显示的起始地址 Delay_1ms(20); Write_Cmd(0x01); /清除显示
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号