音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

困繞了我一周:初學(xué)LCD,關(guān)于at_指令于LCD的控制。關(guān)系到能否漲薪呀?

作者:feng993032 欄目:技術(shù)交流
困繞了我一周:初學(xué)LCD,關(guān)于at_指令于LCD的控制。關(guān)系到能否漲薪呀?
這段時(shí)間在學(xué)LCD控制?戳撕芏嗟难菔境绦,也查了很多的資料,也問了一些人。但始終對(duì)程序中關(guān)于_at_指令和總線不懂。
比如:
KS0070(44780) 16x2 字符液晶屏驅(qū)動(dòng)演示程序總線方式 曉奇
=============================================================================
連接線圖: LCM-------51 LCM-------51 LCM--------51
DB0-----P0.0 DB4-----P0.4 RW-------P2.0
DB1-----P0.1 DB5-----P0.5 RS-------P2.1
DB2-----P0.2 DB6-----P0.6 E-------P2.7=>74LS00+wr+rd
DB3-----P0.3 DB7-----P0.7 VLCD接1K2電阻到GND

[注]:AT89C51的晶振頻率為12MHZ

// ================= LCM1602A端口地址定義 =======================
CHAR xdata Lcd1602CmdPort _at_ 0x7cff; //E=1 RS=0 RW=0
CHAR xdata Lcd1602WdataPort _at_ 0x7eff; //E =1 RS=1 RW=0
CHAR xdata Lcd1602StatusPort _at_ 0x7dff; //E=1 RS=0 RW=1

。。。。。。。。。。。。。。。。。。。。。。。。。。。。

以上端口定義時(shí) 如 Lcd1602CmdPort _at_ 0x7cff 即P2=0x7c p0=0xff 是這樣嗎?

如果是 P2=0x7c p0=0xff 這樣定義 那就相當(dāng)于p2=01111100 即p20=0 p21=0 p27=0 (E=0 RS=0 RW=0)這與注釋//E=1 RS=0 RW=0 不相符呀?

如果有 Lcd1602CmdPort = 0x38; 請(qǐng)問單片機(jī)如何執(zhí)行?即每步 p0=? p2=?
謝謝。

=========================================
我發(fā)現(xiàn)很多人和我一樣,初學(xué)LCD都不懂這個(gè)問題。請(qǐng)說明一下。
1、Lcd1602CmdPort _at_ 0x7cff  這句話到底意味著什么
   我知道是分配一個(gè)外部地址。但是為什么是0x7cff,而不是其它,這是如何根據(jù)接線方式計(jì)算出的。就是說這句話到底做了什么事。

2、Lcd1602CmdPort = 0x38   這句話單片機(jī)做了什么事?單片機(jī)如何執(zhí)行?


關(guān)于這2個(gè)問題困繞了我一個(gè)多星期了,還是不明白。請(qǐng)各位大大指教。




* - 本貼最后修改時(shí)間:2006-6-28 14:16:43 修改者:feng993032

2樓: >>參與討論
imwangyi
編譯后看看生成的lst文件一般可以看到的
應(yīng)該類似:
  mov dptr,#7cffH
  mov a,#38h
  movx @dptr,a

3樓: >>參與討論
feng993032
我知道你所說的。
我知道你所說的。把#38H賦值給 7cff單元。
問題是:把#38H賦值給7CFF單元時(shí),當(dāng)時(shí)。各個(gè)引腳的狀態(tài)。

各位大大還是先幫我解決下第1個(gè)問題。即,單片機(jī)如何根據(jù)LCD接線來確定變量的地址(Lcd1602CmdPort _at_ 0x7cff),7cff它是怎么算出來的。

有關(guān)的程序,還有很多。比如
CA12864 (KS0107 KS0108) 演示程序 Keil C51

連線表:  RS=P2.0         R/W=P2.1       CS1=P2.7        CS2=P2.6       
SysClock=12MHZ  
DB0-DB7=P0.0-P0.7      E=/(WR*RD)      /Reset=InBoard  
      
CHAR xdata LcmWriteCmdPort1   _at_ 0x8000;      //CS1=1 RW=0 RS=0
CHAR xdata LcmWriteCmdPort2   _at_ 0x4000;      //CS2=1 RW=0 RS=0
CHAR xdata LcmWriteDataPort1  _at_ 0x8100;      //CS1=1 RW=0 RS=1
CHAR xdata LcmWriteDataPort2  _at_ 0x4100;      //CS2=1 RW=0 RS=1
CHAR xdata LcmReadStatusPort1 _at_ 0x8200;      //CS1=1 RW=1 RS=0
CHAR xdata LcmReadStatusPort2 _at_ 0x4200;      //CS2=1 RW=1 RS=0


這6個(gè)數(shù)據(jù)是怎樣計(jì)算出來的??




4樓: >>參與討論
xwj
就是二進(jìn)制轉(zhuǎn)換成了十六進(jìn)制,你用計(jì)算器換算成二進(jìn)制就知道了
 
5樓: >>參與討論
feng993032
RE四樓:我明白你的意思。
我知道這6個(gè)變量是對(duì)應(yīng)   P2.7~P2.0 P0.7~P0.0 這16個(gè)IO口。
我想知道的是如何根據(jù)LCD與單片機(jī)的接線方式來確定這6個(gè)變量的地址的。

請(qǐng)各位一定要幫忙啊。

6樓: >>參與討論
xwj
暈~~~~,LZ你也稍微動(dòng)那么一下腦筋啊
連線表:  RS=P2.0         R/W=P2.1       CS1=P2.7        CS2=P2.6       
SysClock=12MHZ  

如這個(gè)端口:
CHAR xdata LcmWriteCmdPort1   _at_ 0x8000;      //CS1=1 RW=0 RS=0
把//CS1=1 RW=0 RS=0代進(jìn)連線表:  RS=P2.0         R/W=P2.1       CS1=P2.7        
那是不是P2應(yīng)該為二進(jìn)制1000 0000?換算成十六進(jìn)制不就是0x80?

P2是高位,低8位地址沒連線可以為任意值,,因此LcmWriteCmdPort1   的地址就是0x80xx,x為任意值


長(zhǎng)了腦袋就是用來思考的,不要不想事啊


7樓: >>參與討論
feng993032
嘿嘿,其實(shí)在我提問之前,已經(jīng)是將懂未懂的狀態(tài)。
我只是要確認(rèn)一下。先謝謝你了  xwj。

第1個(gè)問題,已解決,F(xiàn)在剩下第2問題了。

該程序里有這么句話。

/*檢查Busy                 */
/***************************/
void Busy1(void)
{
     _nop_();
     while(LcmReadStatusPort1 & 0x80);      //Status Read Bit7 = BUSY
     _nop_();
});

根據(jù)KS0108的資料。我只知道:當(dāng)RS=0,R/W=1時(shí),D7(P0.7)=1時(shí),LCD為BUSY狀態(tài)。

我的疑惑是:讀取或?qū)懭隠cmReadStatusPort1(等6個(gè)變量)時(shí)。RS,R/W,CS1/CS2。有無(wú)變化,是否一直不變。

總的來說,就是不明白LCD掛在單片機(jī)的總線上的工作方式,只要是P2口。
P0口,我已明白是地址/數(shù)據(jù)復(fù)用。

請(qǐng)高人解釋一下。再次感謝  xwj 的解答。


8樓: >>參與討論
xwj
基本只是,自己去看書--總線時(shí)序
 
9樓: >>參與討論
hexiaoxiao
無(wú)變化因?yàn)椴僮鲾?shù)據(jù)是使用的是低位字節(jié).P0口
至于怎么工作,就看你自己想讓LCD怎么工作哦!寫命令,你就用Lcd1602CmdPort)為寫命令方式.寫顯示數(shù)據(jù)用(Lcd1602WdataPort)為寫數(shù)據(jù)方式,
我不喜歡用這種方式來編程.可能是我以前習(xí)慣用匯編的原因吧

10樓: >>參與討論
xwj
錯(cuò),有變化,因?yàn)閤data 實(shí)際調(diào)用的是MOVX,P2要送地址
 
11樓: >>參與討論
feng993032
RE:xwj
“錯(cuò),有變化,因?yàn)閤data 實(shí)際調(diào)用的是MOVX,P2要送地址”
“自己去看書--總線時(shí)序”

我過許多人,基本上給我的都是上面2個(gè)答案,F(xiàn)在又是這個(gè)情況。哎~~~

還要麻煩下 XWJ 。

我不明白的是P2的地址要送給誰(shuí)?因?yàn)長(zhǎng)CD不是外部RAM。對(duì)單片機(jī)來說 0X8000
或其它16位地址,沒意義啊。

PS:書我看了,但是不明白P2口和P0口的高,低位16位地址與LCD聯(lián)系的。

請(qǐng)指教。

12樓: >>參與討論
xwj
暈。。。還要怎么說???自己去看書啊,把總線時(shí)序看懂再說!
叫你看書就去看書!
不要不懂腦筋瞎問啊!

沒見過這么不長(zhǎng)進(jìn)的了,在你看懂時(shí)序前不再回答你的問題,否則真的是害了你

13樓: >>參與討論
z_no1
先把51的外部存儲(chǔ)器的讀寫波形搞懂吧,
玩51不明白這個(gè)就不是個(gè)硬件工程師。軟件的最基本的單位是匯編指令,硬件則是高低電平和時(shí)序。

14樓: >>參與討論
hexiaoxiao
不好意思,我看錯(cuò)了
<<我的疑惑是:讀取或?qū)懭隠cmReadStatusPort1(等6個(gè)變量)時(shí)。RS,R/W,CS1/CS2。有無(wú)變化,是否一直不變。>>,
應(yīng)該是有變化的.因?yàn)?個(gè)變量代表LCM不同的工作方式.所以P2口做為L(zhǎng)CM的控制選址它是有變化的.
只要是單片機(jī)控制的外圍器件都應(yīng)該有個(gè)地址.不是僅僅RAM有.
比如(E-------P2.7=>74LS00+wr+rd)就是LCM的選通地址線.要使LCM工作,就必須用P2.7=1;或者P2,P0=0X8000.



15樓: >>參與討論
feng993032
看了一天的書。
好象懂了,又好象沒懂。其實(shí),這個(gè)問題我去年就碰到了,一直沒解決。
經(jīng)過這一周的問人,看書。好想明白了點(diǎn)。

我的理解是:當(dāng)單片機(jī)讀或?qū)懲獠康刂窌r(shí)。P2,P0口送出地址,然后從P0口送出或接收數(shù)據(jù)。當(dāng)P2口送出地址時(shí),口線有變化,具體什么變化,我還沒搞清楚。LCD與單片機(jī)的總線連接方式,就是利用了這種P2的口線變化。

其實(shí)如果不用這種總線方式的話,當(dāng)讀LCD狀態(tài)或?qū)慙CD數(shù)據(jù)/命令時(shí),直接操作
RS,R/W,CS1/CS2等就可以了,這樣更直接,更容易理解。(當(dāng)然是對(duì)我來說)

再次感謝各位的幫助。

16樓: >>參與討論
computer00
P0,P2口上的變化當(dāng)然就是輸出給地的地址了
然后由RD或者WR信號(hào)將指定地址的數(shù)據(jù)讀出或者寫入。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
常規(guī)電子器件封裝手冊(cè)那有的買?
弱弱問個(gè)問題-何謂電阻網(wǎng)絡(luò)或者說網(wǎng)絡(luò)電阻
請(qǐng)教一個(gè)問題
請(qǐng)教各位高手后綴為.caj的文件用什么軟件可以打開?
請(qǐng)推薦一款電壓轉(zhuǎn)換芯片,可以從5V->3.3V
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)