请教:液晶行地址和列地址问题

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

本版积分规则

42

主题

148

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部