我真的不知道该怎么写啊,下面是我在网上下的程序,哪位给写一下光标的移位程序,不胜感激!<br />//12864(ST7920)串口C51程序<br /><br />//12864F(7920)的串行模式C51范例<br />#include <reg51.h><br />#include <intrins.h><br />sbit E_CLK =P3^0;//clock input 同步时钟输入端<br />sbit RW_SID=P3^1;//data input/output 串行数据输入、输出端<br />//sbit RS_CS =P3^5;//chip select 片选端<br />//sbit PSB =P3^6;//serial mode select 串口模式<br />sbit RST =P1^2;<br />void delay(unsigned int n)<br />{<br /> unsigned int i;<br /> for(i=0; i<n; i++) {;}<br />}<br /> //串行发送一字节数据<br />void SendByte(unsigned char dat)<br />{<br /> unsigned char i;<br /> for(i=0;i<8;i++)<br /> {<br /> E_CLK=0;<br /> if(dat&0x80)RW_SID=1;else RW_SID=0;<br /> E_CLK=1;<br /> dat=dat<<1;<br /> }<br />}<br />//串行接收一字节数据<br />unsigned char ReceieveByte(void)<br />{<br /> unsigned char i,d1,d2;<br /> for(i=0;i<8;i++)<br /> {<br /> E_CLK=0;delay(100);<br /> E_CLK=1;<br /> if(RW_SID)d1++;<br /> d1=d1<<1;<br /> }<br /> for(i=0;i<8;i++)<br /> {<br /> E_CLK=0;delay(100);<br /> E_CLK=1;<br /> if(RW_SID)d2++;<br /> d2=d2<<1;<br /> }<br /> return (d1&0xF0+d2&0x0F);<br />}<br />//读取标志位BF<br />bit ReadBF(bit bf)<br />{<br /> unsigned char dat;<br /> SendByte(0xFA);//11111,01,0 RW=1,RS=0<br /> dat=ReceieveByte();<br /> if(dat>0x7F)bf=1;else bf=0;<br /> return bf;<br /> }<br />//写控制命令<br />void SendCMD(unsigned char dat)<br />{<br />// while(ReadBF){;}<br />// RS_CS=1;<br /> SendByte(0xF8);//11111,00,0 RW=0,RS=0 同步标志<br /> SendByte(dat&0xF0);//高四位<br /> SendByte((dat&0x0F)<<4);//低四位<br />// RS_CS=0;<br />}<br />//写显示数据或单字节字符<br />void SendDat(unsigned char dat)<br />{<br />// while(ReadBF){;}<br />// RS_CS=1;<br /> SendByte(0xFA);//11111,01,0 RW=0,RS=1<br /> SendByte(dat&0xF0);//高四位<br /> SendByte((dat&0x0F)<<4);//低四位<br />// RS_CS=0;<br />}<br />/* 写汉字到LCD 指定的位置<br /> x_add显示RAM的地址<br /> dat1/dat2显示汉字编码<br />*/<br />void display(unsigned char x_add,unsigned char dat1,unsigned char dat2)<br />{<br /> SendCMD(x_add);//1xxx,xxxx 设定DDRAM 7位地址xxx,xxxx到地址计数器AC<br /> SendDat(dat1);<br /> SendDat(dat2);<br />}<br />//初始化 LCM<br />void initlcm(void)<br />{<br /> RST=0;<br />// RS_CS=0;<br />// PSB=0;//serial mode<br /> delay(100);<br /> RST=1;<br /> SendCMD(0x30);//功能设置,一次送8位数据,基本指令集<br /> SendCMD(0x0C);//0000,1100 整体显示,游标off,游标位置off<br /> SendCMD(0x01);//0000,0001 清DDRAM<br /> SendCMD(0x02);//0000,0010 DDRAM地址归位<br /> SendCMD(0x80);//1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC<br />// SendCMD(0x04);//点设定,显示字符/光标从左到右移位,DDRAM地址加 一<br />// SendCMD(0x0F);//显示设定,开显示,显示光标,当前显示位反白闪动<br />}<br /><br />void main(void)<br />{<br /> initlcm();<br /> for(;;)<br /> {<br /> }<br />}
|