久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5276|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[求助]1602無法讀取xdata中的字符

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:3003 發(fā)表于 2009-11-3 22:06 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
 

我寫了一個(gè)1602顯示溫度,時(shí)間測量水深的89S52系統(tǒng)

由于涉及很多的變量,data區(qū)大小有限,所以需要把所有用于緩存或儲存數(shù)據(jù)的數(shù)組放在xdata中,但是1602無法顯示所需要的字符,經(jīng)過調(diào)試,我發(fā)現(xiàn)盡管我的BUFFER[16]數(shù)組是放在data區(qū),但是1602無法讀取從xdata中取出的數(shù)據(jù),而由于data又不夠用,必須將數(shù)據(jù)儲存在xdata中,這樣我的1602就無法顯示了。

但是如果將message數(shù)組放在data或code中能正常顯示,可是code無法寫入……

小弟在此想請各位給點(diǎn)意見,幫忙解決一下這個(gè)問題,謝謝!


Ps;我本來想把Display也放到display.c當(dāng)中的,但是KEIL C讀取二維數(shù)組首行地址會顯示指針出錯(cuò),搞得我其他的程序都是傳遞二維數(shù)組行列地址給子程序,這個(gè)也是一個(gè)需要解決的問題。


程序如下:

#include<reg51.h>

#include<intrins.h>

#define uint unsigned int

#define uchar unsigned char

uchar code message[][16]={"It is the first",

"time i say hello","haha","I figure it out"};

 //二維數(shù)組,第一行結(jié)束會自動加/0,顯示結(jié)束!

uchar Disp_buffer[32];


void initialize_lcd();

void showstring(uchar,uchar*);

void lcd_command(uchar);

void Display();


void Delay1(uint x)                

{

 uchar i;

 while(x--)

 for(i=0;i<120;i++);

}


void Display()//將要顯示數(shù)據(jù)存入緩存區(qū)

{uchar i,j,*p,k=0;

 for(j=0;j<4;j++)

  {p=message[j];                          

   for(i=0;i<16&&*p!='\0';i++)

   {Disp_buffer=*p;

    p++;}

   while(i<16)

   Disp_buffer[i++]=' ';


  if(k++<1)

  {showstring(0x80,Disp_buffer);

   if(j==4)                                       //j為偶數(shù),則是奇數(shù)行,奇數(shù)行且為最后一行

                                                 //(這里的4就是數(shù)組的最后一行)只顯示一行

    {lcd_command(0x01);                        //清屏命令

        showstring(0x80,Disp_buffer);

        Delay1(4000);

       }      

  }  //

  else

  {k=0;showstring(0xc0,Disp_buffer);

   }

  if(j%2==1) Delay1(4000); //偶數(shù)行則顯示兩行

  }   

}


void main()

{

 initialize_lcd();

 while(1) Display();

}

 

———————————————————————————————————————————————————————————————————

  //display.c

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int


sbit RS=P2^0;

sbit RW=P2^1;

sbit EN=P2^2;


void Delay(uint x)                  

{

 uchar i;

 while(x--)

 for(i=0;i<120;i++);

}


uchar busy_check()       //檢查是否忙//

{uchar lcd_status;

 RS=0;

 RW=1;

 EN=1;

 Delay(1);

 lcd_status=P0;

 EN=0;

 return lcd_status;

}


void lcd_command(uchar cmd)             //寫LCD命令//

{

 while((busy_check()&0x80)==0x80);

 RS=0;

 RW=0;

 EN=0;

 P0=cmd; EN=1;Delay(1);EN=0;

}


void lcd_data(uchar dat)          //發(fā)送數(shù)據(jù)//

{

 while((busy_check()&0x80)==0x80);

 RS=1;

 RW=0;

 EN=0;

 P0=dat;

 EN=1;

 Delay(1);EN=0;

}


void initialize_lcd()           //LCD初始化//

{lcd_command(0x01);

 Delay(1);

 lcd_command(0x38);

 Delay(1);

 lcd_command(0x06);

 Delay(1);

 lcd_command(0x0c);

 Delay(1);

}


void showstring(uchar po,uchar str[])  //顯示字符串//

{uchar i;                                

 lcd_command(po);

 for(i=0;i<16;i++)

  {lcd_data(str);

   }

 Delay(1);

}

[此貼子已經(jīng)被作者于2009-11-3 22:08:22編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色网址免费在线观看 | 国产一区二区在线免费观看 | 欧美精品久久久久久久久久 | 国产精品色婷婷久久58 | 日韩在线一区二区三区 | 日本aaaa| 精品国产乱码久久久久久久久 | 国产成人综合在线 | 在线欧美亚洲 | 一区二区免费在线 | 国产剧情久久 | 久久网日本 | 九九一级片 | 久久日韩精品一区二区三区 | 亚洲成av人影片在线观看 | 久久国产精品视频 | 求个av网址 | 色欧美综合 | 好姑娘影视在线观看高清 | 色婷婷综合久久久中字幕精品久久 | 国产精品久久久久久久久久免费 | 久久青青| 美女久久| 亚洲免费视频在线观看 | 国产精品久久久久久久久久 | 成人久久久久 | 偷拍第一页 | 久草精品视频 | 99热这里只有精品8 激情毛片 | 国产精品亚洲一区二区三区在线 | 一区二区在线不卡 | 欧美精品一区二区在线观看 | 日本高清不卡视频 | 亚洲精品中文字幕在线观看 | 欧美在线一区二区三区 | 亚洲一一在线 | 亚洲精品久久久 | 免费看黄视频网站 | 中文字幕高清 | 一区二区三区四区av | 国产在线一区二 |