會員 | 阿~那我懂了!!!那我還是先把~重點擺在~怎麼改成LCD好了! 那如果是這樣子的話!我該怎麼改呢? 我就針對MIAN:那段來改嗎? 我想就先針對LCD而言!先改完程式∼等燒錄完畢的時候!先直接用麵包版接∼看可不可以實行!如果LCD可行的話∼再來慢慢的作.....超音波的更改!! |
回覆 |
會員 | 我大致上幫你整理一下, 我只列出需要改的部分, 其他的你自己放進來. 不過你這個程式看起來好像有一些打錯字的地方, 你可能要檢查看看 START: MOV 30H,#0 ;清除顯示及技術暫存器 MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 MOV 34H,#0 MOV 35H,#0 MOV SCAN,#0 MOV COUNT,#0 MOV TMOD,#21H;TIMER0=MODE1,TIMER1=MODE2 MOV TH0,#>(65536-16666);1/120秒中斷一次 MOV TH1,#118 call display_init call display_clear MOV IE,#82H ;中斷致能,TIMOR0中斷致能 SETB TR0 ;======================================================== MIAN: JIB TX,$ ;等待發射 CLR TX CLR LED_OUT ;發射時點亮LED CLR TRO ;TOMER0停止計數 MOV IE,#0 ;中斷禁能 CALL TX_CLK ;發射超音波 CALL MIN_RING ;最低測距延遲 MOV IE,#88H ;中斷致能,TIMER1中斷致能 MOV TH1,#118H MOV REG_1,#MIN_NUM ;最機距離加到各位距離計數器 MOV REG_10,#0 ;十位數距離計數器歸零 MOV REG_100,#0 ;百位數距離計數器歸零 SETB TR1 ;TIMER1開始計數 JNB OK,$ ;等待測距完成 CLR TR1 ;TIMER1停止計數 CALL REG2DSP ;轉換顯示值 ; ; 將數值顯示到 LCD ; mov a, #0 mov b, #0 call gotoxy mov a, DSP_100 orl a, #30h call putch mov a, DSP_10 orl a, #30h call putch mov a, DSP_1 orl a, #30h call putch MOV IE,#82H ;中斷致能,TIMER0中斷致能 MOV SCAN,#0 ;顯示掃描歸零 MOV COUNT,#0 ;發射計數器歸零 SETB TR0 ;TIMER0在開始計數 SETB LED_OUT ;熄滅LED JMP MAIN ;跳至MAIN重新步驟 ;================================================= T0_INT: MOV TH0,#>(65536-16666);1/120秒中斷一次 MOV TL0,#>(65536-16666) INC CONUT MOV A,COUNT CJNE A,#60,T0_01 SETB TX T0_END RETI LCD 副程式就放在最後面 |
回覆 |
會員 | 引用:
但有時天會不如你願.....因為我常常發生這樣的事.... 我想程式你還是看過一遍,比較好,是不是都是控制那幾隻I/O Port的 還有89C2051和8051的振盪器的頻率規格是不是一樣.... 反正一切看清楚,想清楚...自然事事順利... 祝你成功.... | |
回覆 |
會員 | 引用:
如果就依照您所說低~這樣改!!! 是這樣嗎!?!?? →修改版← 我是拿全部所有的程式來改低∼! | |
回覆 |
會員 | 對! 不過 LCD 副程式還需配合你的電路修改才能用. 再來就是程式碼整理一下排列要整齊以及拼錯字要改正. |
回覆 |
會員 | 引用:
您說~還需要配合我的電路修改~ 您只的是~~~ 89c51改成8051的部分呢!?還是腳位的部分!? 來勞請您指點指點~ 謝謝~ | |
回覆 |
會員 | 就是 LCD Module 跟 8051 腳位怎麼接? 你應該先把電路畫好貼上來就知道了. |
回覆 |
會員 | 引用:
我會先用軟體畫好~然後再把他PO上來!!! 不過我現在有一個問題阿! 就是~89C51的這顆震盪器!!也就是我程式上的這顆~他是24M的! 但是8051只可以到12M~ 整整大了兩倍!!! 那如果是針對這部分!?我可以怎樣更改ㄋ???? | |
回覆 |
會員 | 24M 跟 12M 對程式編寫的差異就是指令執行的速度及TIMER的時間單位. 影響的有用程式來當 Delay 及 TIMER0, TIMER1 的設定. 對你的程式有影響的有 TX_CLK, MIN_RING, TH0, TH1 這幾個地方. 8x51 系列在 IC 編號上都有一個速度編號. 如 89C51-25. 後面的 25 就是最快能使用 25 MHz. 你真的要用 "8051" 嗎? 目前市面上很少人用 "8051", 因為你買到的 "8051" 大部分都不能再燒程式了. 如果要用外部 ROM 的話大部分都是用 8031. 而你的電路看起來應該會用有內部 ROM 或 Flash 的型號. 那應該是 INTEL 8751, ATMEL AT89C51, WINBOND W78E51B 這三種比較可能. 後兩種都是 Flash, 可以用IC燒錄器就清除, 8751 是開窗的必須用紫外線照射十幾分鐘才能清除. 一般人口頭上說的 8051 指的是用 8051 系列的指令及硬體架構. 而上面幾種全部都是 8051 系列的 CPU, 只是程式碼儲存的種類不同而已. 對寫程式來說可以說是一模一樣. 你原本的電路用的是 AT89C2051, 你為何不選用 AT89C51 就好了!? 還有你用甚麼 IC 燒錄器, 萬用型還是 51 專用的? |
回覆 |
會員 | 嗯恩恩恩∼我打算用89c51來作了!! 今天準備要繪圖的時候∼ 發現∼我使用的tina軟體∼ 沒有lcd這個零件可以拖∼呃....................... 您的lcd副程式 還必須外接一顆8255的對不對!? 那這樣子不是就更麻煩了? |
回覆 |
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。