痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 11893|回復: 63

求助: STC89C52 12T 與STC15F204EA 1T 對 LCM1602

  [複製鏈接]
發表於 2013-3-18 01:22:11 | 顯示全部樓層 |閱讀模式
各位先進:
  又來麻煩大家了!! 前一陣子一時手癢買的 1T的MCU STC 15F204EA 這個MCU從未用過, 1T的MCU也從未用過,我把 1602的程式用在 89S52 或是 STC89C52 可以用的,可是用在 1T的MCU 發現會有跳字..現象,把頻率降成一半 11.0592/2=5.5296 跳字的現象改善"些"!! 我已經摸索了幾天,程式加了一些 _NOP_() 可是我看別人的程式 超簡單 好像也沒有時序的問題...


這是我的程式在 89S52 可以正常顯示
  void LCD_Write_Com(char com) //命令寫入 4bit
{
while(LCD_Check_Busy()); //忙则等待 1=while loop still;
RS_CLR; //指令功能
RW_CLR; //寫入
EN_SET; //下降緣 由HI變成LO
DataPort= com; // 指令設定
_nop_();
EN_CLR;//
com<<=4;
EN_SET; //下降緣 由HI變成LO
_nop_();
DataPort= com; // 指令設定
EN_CLR;//
}

這是網路上的程式給 LCM12864的
void LcdCommand(unsigned char Com)//并行68写指令
{
  RS=0;        _RD=1;_WR=0;
  P2 =Com; _RD=0;
}
void LcdDataWrite(unsigned char Data)//并行68写数据
{
RS=1;_RD=1;_WR=0;
  P2 = Data;        _RD=0;
}

請先進 提示一下 12T 與 1T MCU時間上的差別應該注意哪些?
  
發表於 2013-3-18 12:49:18 | 顯示全部樓層
本帖最後由 legion 於 2013-3-18 12:50 PM 編輯

1T的MCU在動作時,大概速度是12T的MCU6-7倍左右
而且這是指在相同的工作頻率下
因此若外接週邊本身速度夠快時倒是不用改太多
若週邊速度跑不上時,則要作相當的DELAY動作
相對的輸出在""有效""時序上要作DELAY,
別人的程式沒加什麼delay動作的原因也有很多
是不是用1T的MCU也要先確認,使用的LCM不同速度也不同
說不定只是使用6T或4T的MCU,那麼基本上也不用加DELAY的
15F204EA應該是只有4K的程式記憶體
相同於89C51的空間,程式一變大就有點麻煩了,
不過一般的動作應該是足夠的
發表於 2013-3-18 13:48:42 | 顯示全部樓層
Power On時送給LCM初始化指令之間的延遲也要配合延長.......
一般傳送字元或指令時也要注意LCM對指令的反應時間,兩指令之間的間隔時間也要配合修正。
發表於 2013-3-18 14:34:04 | 顯示全部樓層
阿乾兄:

其實STC給的ISP程式,有很多小工具可以利用的啦!
以下上圖給你看,很多以前要算得很煩的東西,直接就給你程式碼了,
但是,工具好用,程式原理還是得要靠自己理解的啦(給我這個新手參考)!

還有因為他是大陸的工具,
所以,請參考我這一篇:解決程式語言編碼的問題,pApploc
將程式使用簡體模式來運行,以下上圖:

ISP主程式畫面:
STCISP_011.png

波特率計算器,也就是算BAUD RATE的:
STCISP_02.PNG

演示區是一片亂碼,沒關係,只要關閉程式,使用正常的ENGLISH模式再開一遍就行了!
STCISP_021.PNG

定時器計算器,也就是算timer的:
STCISP_03.PNG
STCISP_031.PNG

軟件延時計算器,也就是算delay時間的:
STCISP_04.PNG
STCISP_041.PNG

以上為三大計算器,都可以按不同的MCU來計算產生程式碼,不論你要ASM還是要C都有。

以下為二大程式碼區,也一樣都有分型號來產生。

頭文件,也就是head file,這個C51編程很需要:
STCISP_05.PNG

範例程序,也就是STC公司自己放出來的範例程式:
STCISP_06.PNG

以上介紹!

還是要再說一遍,雖然工具很方便好用,
但是程式的原理還是要自己了解一遍才行,
我一直對自己這樣說,才不會學一半!

阿乾兄,就直接拿來用吧!
真的是加速開發的好工具!

附上網路上看到的頭文件:
STCMCU全系列头文件.rar (45.36 KB, 下載次數: 23)
 樓主| 發表於 2013-3-18 19:12:41 | 顯示全部樓層
legion 發表於 2013-3-18 12:49 PM static/image/common/back.gif
1T的MCU在動作時,大概速度是12T的MCU6-7倍左右
而且這是指在相同的工作頻率下
因此若外接週邊本身速度夠快 ...

legion大:
   我手上的LCM種類約有不下10種,我把89S52的程式拿來測試這些LCM
都能夠顯示正常,這次改用1T的MCU試過2種LCM
都不行,改了許多次程式的DELAY,(我是用 _NOP_() 加了幾個當作 DELAY),我要先把這個問題解決!! 這樣可以水平展開到 I2C  DS1302 ...
 樓主| 發表於 2013-3-18 19:17:28 | 顯示全部樓層
ysc 發表於 2013-3-18 01:48 PM static/image/common/back.gif
Power On時送給LCM初始化指令之間的延遲也要配合延長.......
一般傳送字元或指令時也要注意LCM對指令的反應 ...

YSC大:
   這我有試過!但是還沒成功!!
 樓主| 發表於 2013-3-18 19:41:11 | 顯示全部樓層
fatzeros 發表於 2013-3-18 02:34 PM static/image/common/back.gif
阿乾兄:

其實STC給的ISP程式,有很多小工具可以利用的啦!

fatzeros 大:
   寄來的東西已收到!!非常感謝!! 這個開發工具我有看到!! 也試用了一下,努力中..
發表於 2013-3-18 20:02:01 | 顯示全部樓層
antlu 發表於 2013-3-18 07:12 PM static/image/common/back.gif
legion大:
   我手上的LCM種類約有不下10種,我把89S52的程式拿來測試這些LCM
都能夠顯示正常,這次改用1T ...

其實在KEIL-C的環境下應該很好處理的
使用keil本身的simulator模擬,
在ctrl-F5後在單步執行下,你就能看到右下方有個time計數的t1
每執行一步就能看到執行的Cycle和執行的時間值
查看一下同一工作頻率下,89s52在LCM的執行時間週期
再回頭查一下使用1T的執行動作週期,應該就能看到差了多少
至於NOP是1個CLK而己,對1T和12T的MCU而言,差距是有限的
而且EN,RS,RD,WR本身在資料有效是有指定至少要多少時間的
在I2C和DS1302時都會碰到的,
即然都在KEILC的環境下了,使用KEILC本身的模擬執行就能看清楚問題在那了

發表於 2013-3-18 20:02:49 | 顯示全部樓層
antlu 發表於 2013-3-18 07:41 PM static/image/common/back.gif
fatzeros 大:
   寄來的東西已收到!!非常感謝!! 這個開發工具我有看到!! 也試用了一下,努力中.. ...

要記得,去抓cp2102的driver喔!
 樓主| 發表於 2013-3-18 21:13:32 | 顯示全部樓層
fatzeros 發表於 2013-3-18 08:02 PM static/image/common/back.gif
要記得,去抓cp2102的driver喔!

FATZEROS大:
    感謝!!我會去抓的!!
 樓主| 發表於 2013-3-18 22:21:06 | 顯示全部樓層
legion 發表於 2013-3-18 08:02 PM static/image/common/back.gif
其實在KEIL-C的環境下應該很好處理的
使用keil本身的simulator模擬,
在ctrl-F5後在單步執行下,你就能看到 ...

legion 大:
  你提到的 使用keil本身的simulator模擬,在ctrl-F5後在單步執行下.... 這些資料我完全陌生,可否提供一下相關的中文資料或是相關書籍. 感謝!!
發表於 2013-3-19 09:38:43 | 顯示全部樓層
antlu 發表於 2013-3-18 10:21 PM static/image/common/back.gif
legion 大:
  你提到的 使用keil本身的simulator模擬,在ctrl-F5後在單步執行下.... 這些資料我完全陌生, ...

antlu大
這個有點奇怪,該不會你還沒用過KEILC本身的一些附加功能吧
在程式編譯後,你是直接用ISP下載嗎,沒有先在KEILC的IDE環境下作程式模擬執行嗎
KEILC本身如果接上ICE,也可以直接作硬體單步執行作DEBUG,
沒有ICE也可以作軟體模擬單步作DEBUG,除了輸出PORT狀態外,也有可以指定輸出的圖形顯示
執行到一個地步時,可以看到類似邏輯分析儀的各點較為完整的波形狀態,
嗯,,,,這個要講的話,要花點時間,但這些功能在時序上有要求時就還蠻好用的
KEILC本身的IDE,上面的選項都不是很複雜,而且也很好直接解讀
以前自己有自己翻譯一個V8.5的中文版在用,因為大陸版的看的有點辛苦
後來更新版本後也都是在用英文版也不是太大的問題
多玩幾次應該是很容易上手的,試看看吧
 樓主| 發表於 2013-3-19 19:27:18 | 顯示全部樓層
legion 發表於 2013-3-19 09:38 AM static/image/common/back.gif
antlu大
這個有點奇怪,該不會你還沒用過KEILC本身的一些附加功能吧
在程式編譯後,你是直接用ISP下載嗎,沒 ...

legion大:
    我是還沒用過 KEILC的附加功能!!  我程式編譯之後就直接 ISP下載!! 並沒有先在 KEILC 的 IDE 環境下做程式模擬執行... 我目前用的是附贈的軟體,我不知道有哪些功能!!  
   可否提供一下這方面的相關中文網站,感恩!!
發表於 2013-3-19 20:08:57 | 顯示全部樓層
antlu 發表於 2013-3-19 07:27 PM static/image/common/back.gif
legion大:
    我是還沒用過 KEILC的附加功能!!  我程式編譯之後就直接 ISP下載!! 並沒有先在 KEILC 的 I ...

antlu大
中文網站啊,這個就不知道有沒有了,因為大部份有用到的摸索個幾次應該就能上手吧
大陸那邊應該有簡體中文版之類的,不過因為有些文詞實在看不太下去
所以v8.5時自己有改個中文主程式,以台灣原始電子的用法來編
後來習慣了,也就沒有再改中文版來用,大概就那幾項而己
而上列的模擬功能,剛才抓了幾張圖給你看一下,可以自己試看看對照位置作參考
keilc不是編譯方便的好不好用,而己實際上有模擬器的功能才是最重要的吧
keilc基本設定.jpg
keilc頻率設定.jpg
keilc的模擬器選擇.jpg
keilc連結硬體ice選擇.jpg
keilc的各種附加功能選項.jpg
keilc的邏輯分析儀輸出.jpg
 樓主| 發表於 2013-3-19 21:17:23 | 顯示全部樓層
legion 發表於 2013-3-19 08:08 PM static/image/common/back.gif
antlu大
中文網站啊,這個就不知道有沒有了,因為大部份有用到的摸索個幾次應該就能上手吧
大陸那邊應該有 ...

LEGION大:
  這些功能在我的 畫面中都沒有!! 我想下載新的版本應該會有!!

KEIL.JPG
發表於 2013-3-19 22:17:07 | 顯示全部樓層
antlu 發表於 2013-3-19 09:17 PM static/image/common/back.gif
LEGION大:
  這些功能在我的 畫面中都沒有!! 我想下載新的版本應該會有!!

其實我之前介紹的mcu 8051 ide也有類似的功能,
但是還要學sdcc有點麻煩!
發表於 2013-3-19 22:26:18 | 顯示全部樓層
antlu 發表於 2013-3-19 09:17 PM static/image/common/back.gif
LEGION大:
  這些功能在我的 畫面中都沒有!! 我想下載新的版本應該會有!!

這個該怎麼說呢,
你仔細看一下,你使用的是v2.xx版,c51是v7.06
上面使用的中文IDE是V3.XX版,C51是V8.XX
現在新的版本是V4.XX版,C51是V9.XX
V3當然會比V2來的多功能,若沒特殊需求功能時
V4系列就感覺和V3的差異不大
一個不錯的IDE結果只拿來作編譯而己,這反而是奇怪了點
不過東西因人而異,有時順手就好,新版用不順手反而奇怪
早期都是用PE2去編輯,編好再組譯,怕麻煩還要寫個BAT來用
只要是順手反而比什麼都來的好用
 樓主| 發表於 2013-3-19 23:03:43 | 顯示全部樓層
legion 發表於 2013-3-19 10:26 PM static/image/common/back.gif
這個該怎麼說呢,
你仔細看一下,你使用的是v2.xx版,c51是v7.06
上面使用的中文IDE是V3.XX版,C51是V8.XX

LEGION大:
以前一直不知道有一些先進的功能,你看看我的畫面,還是說有隱藏的畫面功能我沒"開出來"...

KEIL.JPG

我已經在另一部電腦下載 V4版,我再把畫面上傳給你看.
 樓主| 發表於 2013-3-19 23:17:22 | 顯示全部樓層
這是V4的畫面
keil.jpg
發表於 2013-3-20 01:26:11 | 顯示全部樓層
(1)在 EN_CLR 指令後,也要插入 _nop_() 指令

(2)_nop_()  指令最好能Delay >300ns (放20個垃圾指令應該會大於300ns很多了吧!)

阿乾兄你可試試看
發表於 2013-3-20 01:53:40 | 顯示全部樓層
如果會跳字,照說應該是時序的問題。
如果是11Mhz的話每一個指令也得要1/11M=90ns時間來執行。看了下常用的HD44780規格,最長時間好像也還可以啊。除非電壓用小於4.5v。

有沒有可能是初始化或指令間隔沒做好啊?初始化的指令通常要等個2ms後再做下一個,初始化完後,通常下完一個指令後,最好等個50us後才做下一個。
發表於 2013-3-20 11:47:07 | 顯示全部樓層
本帖最後由 fatzeros 於 2013-3-20 11:48 AM 編輯
antlu 發表於 2013-3-19 11:03 PM static/image/common/back.gif
LEGION大:
以前一直不知道有一些先進的功能,你看看我的畫面,還是說有隱藏的畫面功能我沒"開出來"...


如有不當情況,請儘速連絡修正,謝謝謝謝!
給:
《Keil Software –Cx51 编译器用户手册 中文完整版》(403页).pdf (1.74 MB, 下載次數: 19)

其實在一開始學單片機的時候,
為了不被限制在某套軟體下,
我都是找開源免費的東西來用,
所以,keil我也不太會,
資料給阿乾兄參考!
 樓主| 發表於 2013-3-20 14:10:13 | 顯示全部樓層
yesjarmail 發表於 2013-3-20 01:26 AM static/image/common/back.gif
(1)在 EN_CLR 指令後,也要插入 _nop_() 指令

(2)_nop_()  指令最好能Delay >300ns (放20個垃圾指令應 ...

yesjarmail大:
  心臟沒那麼強!!不敢放入那麼多垃圾指令!!
 樓主| 發表於 2013-3-20 14:17:41 | 顯示全部樓層
fatzeros 發表於 2013-3-20 11:47 AM static/image/common/back.gif
如有不當情況,請儘速連絡修正,謝謝謝謝!
給:

fatzeros 大:
  要"拜謝"!!   微控路上有太多的朋友支持了!! 慢慢消化!! 髮滄滄視茫茫,理解能力差,只能靠時間來補了...
發表於 2013-3-20 14:46:17 | 顯示全部樓層
antlu 發表於 2013-3-20 02:17 PM static/image/common/back.gif
fatzeros 大:
  要"拜謝"!!   微控路上有太多的朋友支持了!! 慢慢消化!! 髮滄滄視茫茫,理解能力差,只能靠 ...

不用拜謝啦!
互相學習的啦!
有空的話,
也幫我留意看看有沒有可調電源的啦!
謝謝謝謝!
 樓主| 發表於 2013-3-20 19:18:26 | 顯示全部樓層
fatzeros 發表於 2013-3-20 02:46 PM static/image/common/back.gif
不用拜謝啦!
互相學習的啦!
有空的話,

FATZEROS大:
   剛剛把HP 的可調電源面板拆了下來,裡面的掃描用的是80C51 目前發現各階腳都沒斷ㄟ!! 接下來就不知道該如何了? 可調電源我再幫你"物色"&"留意"!!
發表於 2013-3-20 19:50:49 | 顯示全部樓層
本帖最後由 legion 於 2013-3-20 07:54 PM 編輯
antlu 發表於 2013-3-19 11:03 PM static/image/common/back.gif
LEGION大:
以前一直不知道有一些先進的功能,你看看我的畫面,還是說有隱藏的畫面功能我沒"開出來"...


其實我在想,antlu大你要的應該是要中文的操作環境吧
因為如此一來便能使用keilc本身提供的功能
v4倒不一定會比較好,其實v3系列的反而比較好找到中文版的
直接上v4也是可以的,像你的圖視里面就有邏輯分析的輸出
這在v3系列才有的,你用v2難怪沒看過
keil-c本身提供相當不錯的IDE環境,這是以前大概都沒有的方便
剩下的就是用時間換習慣而己,antlu大就好好加油吧,
至於大部份初學使用keilc的人,想要的應該是IDE的操作及使用方式
這個好像以前有找過,但忘了在那有看過,不過不知在那里
而這陣子還在作工中,連星期日也都沒放過,就只能多少看看了
 樓主| 發表於 2013-3-20 19:51:24 | 顯示全部樓層
robotai 發表於 2013-3-20 01:53 AM static/image/common/back.gif
如果會跳字,照說應該是時序的問題。
如果是11Mhz的話每一個指令也得要1/11M=90ns時間來執行。看了下常用的 ...

robotai 大:
  感謝告知,我試看看!!希望會成功!!
 樓主| 發表於 2013-3-20 19:56:35 | 顯示全部樓層
legion 發表於 2013-3-20 07:50 PM static/image/common/back.gif
其實我在想,antlu大你要的應該是要中文的操作環境吧
因為如此一來便能使用keilc本身提供的功能
v4倒不一 ...

legion 大:
   感謝百忙之中還抽空幫忙解決問題, 我發現 V4上面很多東西,功能強但是因為專業領域的關係,還是不容易上手,我再找一些相關的說明,可能會到書店找中文應用書籍,這樣或許會容易入門,再次感謝!!
發表於 2013-3-20 20:08:33 | 顯示全部樓層
antlu 發表於 2013-3-20 07:56 PM static/image/common/back.gif
legion 大:
   感謝百忙之中還抽空幫忙解決問題, 我發現 V4上面很多東西,功能強但是因為專業領域的關係, ...

V3或v4在功能上都有相當大的改善,
不過可惜的是這個要加上硬體的ICE時,你會發現效果會更大
尤其在硬體直接作偵錯時,那差別就更大
用完後大概你就再也不會去使用ISP下載作實驗了
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-12-23 10:07 PM , Processed in 0.109765 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.