小弟有个问题.这是我的程序,行地址和列地址我想修改,但是就是改不了,而且但我改了列地址y_address的初值时,显示还会出错.这是为什么?要怎样才能修改到行地址和列地址呢<br />#include<reg52.h><br />#define uint unsigned int<br />#define uchar unsigned char<br />#define true 1<br />uchar bw[61]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br /> 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};<br />uchar *p;<br />uchar uci;<br />uchar ucd;<br />uchar ucc; //页地址加<br />uchar ucf; //列地址加<br />sbit E2=P3^7; //LCD右半屏使能端<br />sbit E1=P3^6; //LCD白箅屏使能端<br />sbit R_W=P3^5; //LCD的R/W端<br />sbit A0=P3^4; //LCD的A0端,1/0为:写数据/指令<br /><br />uchar x_address; //LCD页地址<br />uchar y_address; //LCD列地址<br /><br />void delay(uint x)<br />{<br /> uchar ucy=125; <br /> while(x--)<br /> {for(ucy;ucy>0;ucy++);<br /> }<br />}<br /><br />void WRI(uci) //写指令<br />{<br /> E1=0;<br /> E2=0;<br /> A0=0;<br /> P2=uci;<br /> E1=1;<br /> E2=1;<br /> delay(2);<br /> E1=0;<br /> E2=0;<br />}<br />void WRD(ucd) //写数据<br />{<br /> //E1=0;<br /> E2=0;<br /> A0=1;<br /> P2=ucd;<br /> //E1=1;<br /> E2=1;<br /> delay(2);<br /> //E1=0;<br /> E2=0;<br />}<br />void Display_all(uchar LCD_data)//显示或熄灭全屏<br />{<br /> //WRI(0xe2); //复位<br /> <br /> <br /> for(ucc=4;ucc>0;ucc--)<br /> {<br /> WRI(0xe2); //复位<br /> WRI(x_address); //页地址<br /> WRI(y_address); //列地址<br /> WRI(0xe0); //“读-修改-写”模式设置,列地址加一<br /> for(ucf=61;ucf>0;ucf--)//列地址加61次,满足一屏的列数<br /> { <br /> WRD(LCD_data); //写数据 <br /> }<br /> WRI(0xee); //end<br /> x_address++;<br /> <br /> }<br />}<br />void black_white()<br />{<br /> //x_address=0xb8; //页地址 初址0xb8 <br /> //y_address=0x00; //列地址 初址0x00 (设置出现问题)<br /> for(ucc=4;ucc>0;ucc--)<br /> {<br /> WRI(0xe2); //复位<br /> WRI(x_address); //页地址<br /> WRI(y_address); //列地址<br /> WRI(0xe0); //“读-修改-写”模式设置,列地址加一<br /> <br /> p=bw;<br /> for(ucf=61;ucf>0;ucf--)//列地址加61次,满足一屏的列数<br /> {<br /> WRD(*p);<br /> delay(2);//延时2ms<br /> p++;<br /> //y_address++;<br /> }<br /> WRI(0xee); //end<br /> x_address++;<br /> } <br />}<br />main()<br />{ <br /> x_address=0xb8; //页地址 初址0xb8 <br /> y_address=0x00; //列地址 初址0x00 (设置出现问题)<br /> R_W=0; //写有效<br /> WRI(0xaf); //显示模式设置 <br /> //WRI(0xcf); //START = 0 设置显示起始行(行地址设置出现问题)<br /> WRI(0xc0); <br /> WRI(0xa4); //静态驱动关<br /> WRI(0xa9); //duty=1/32 <br /> WRI(0xa0); //反向显示(正向为0a0H)与原来成镜像<br /> WRI(0xe2); //reset,从第一页开始显示,如果不是就从第三页开始显示<br /> while(1)<br /> {<br /> <br /> //Display_all(0xff);//显示全屏<br /> delay(5000);<br /> delay(5000);<br /> delay(5000);<br /> delay(5000);<br /> delay(5000);<br /> delay(5000);<br /> //<br /> //delay(200);<br /> black_white(); //显示黑和白<br /> delay(5000);<br /> delay(5000);<br /> delay(5000);<br /> delay(5000);<br /> delay(5000);<br /> //Display_all(0x00);//熄灭全屏<br /> }<br /><br /> <br />}<br /><br /><br /> |
|