#include <reg51.h>
//#include <intrins.h>
#define uchar unsigned char
#define pd p2
typedef bit bool ;
sbit rs = p3^0 ;
sbit rw = p3^1 ;
sbit ep = p3^7 ;
void delay(uchar) ;
void lcd_wcmd(uchar) ;
bool lcd_bz() ;
void lcd_pos(uchar) ;
void lcd_wdat(uchar) ;
void display(uchar,uchar *) ;
uchar data dis1[] ;
uchar data dis2[] ;
void longdelay(uchar s) //长延时
{
while(s--)
{
delay(60) ;
}
}
void delay(uchar ms)
{ // 延时子程序
uchar i ;
while(ms--)
{
for(i = 0 ; i< 250 ; i++) ;
}
}
bool lcd_bz()
{ // 测试lcd忙碌状态
bool result ;
rs = 0 ;
rw = 1 ;
ep = 1 ;
result = (bool)(pd & 0x80) ;
ep = 0 ;
return result ;
}
void lcd_wcmd(uchar cmd)
{ // 写入指令数据到lcd
while(lcd_bz()) ;
rs = 0 ;
rw = 0 ;
ep = 0 ;
pd = cmd ;
ep = 1 ;
ep = 0 ;
}
void lcd_pos(uchar pos)
{ //设定显示位置
lcd_wcmd(pos | 0x80) ;
}
void lcd_wdat(uchar dat)
{ //写入字符显示数据到lcd
while(lcd_bz()) ;
rs = 1 ;
rw = 0 ;
ep = 0 ;
pd = dat ;
ep = 1 ;
ep = 0 ;
}
void lcd_init()
{ //lcd初始化设定
lcd_wcmd(0x38) ; //function set
delay(1) ;
lcd_wcmd(0x38) ; //function set
delay(1) ;
lcd_wcmd(0x08) ; //display on/off
delay(1) ;
lcd_wcmd(0x01) ; //清除lcd的显示内容
delay(1) ;
lcd_wcmd(0x06) ; //entry mode set
delay(1) ;
lcd_wcmd(0x0c) ; //entry mode set
delay(1) ;
}
/*---------------
函数名称:display()
功能 :在lcd上显示数组的数据
说明 :先写显示地址,后写显示数据
调用 :lcd_wcmd(), lcd_pos()
入口参数:pos 写入的位置,q指向要写入的数据所在的数组
返回值 :无
----------------*/
void display(uchar pos, uchar *q)
{
uchar i ;
//lcd_wcmd(0x01) ; //clear
delay(10) ;
lcd_pos(pos) ;
for(i=0 ;i<16 ;i++)
{
lcd_wdat(*q) ;
q++ ;
longdelay(2) ;
}
}
main()
{
lcd_init() ; // 初始化lcd
delay(10) ;
while(1){
uchar data dis1[] = {" i love you "} ;
uchar data dis2[] = {" i love you too "} ;
display(0x00,dis1) ;
display(0x40,dis2) ;
uchar data dis1[] = {" 0123456789 "};
uchar data dis2[] = {"abcdefghijklmnop"} ;
display(0x14,dis1) ;
display(0x54,dis2) ;
lcd_wcmd(0x07) ; //entry mode set
delay(1) ;
}
}
如题~~我把数组定义在data区了~~为何我不能重定义其值呢?编译时的错误如附件的图所示~~123~124~行即为
uchar data dis1[] = {" 0123456789 "} ;
uchar data dis2[] = {"abcdefghijklmnop"} ;
这两行`~请高手指点一下~~我应该如何重定义数组的值呢?
另外~如何设置使keil中显示行号呢?以便在出错时方便的找到出错的行~~
先谢过了`~