Microchip C18 有內置支持 LCD 液晶顯示器函數庫模塊 (xlcd.h),如不是使用標準 xlcd 函數庫內 PORTA 作為控制信號或數據傳輸,你需要修改 xlcd 文件並配置到你的項目上。在 \ mcc18\ħ 文件夾,有一個文件是xlcd.h,需要進行配置時,將該文件複製到你的工作文件夾和修改端口的設置,將需要修改項目設置為可編譯,以確保編譯器讀取你的修改文件。
LCD 函數功能:
Function | Description |
BusyXLCD | Is the LCD controller busy? |
OpenXLCD | Configure the I/O lines used for controlling the LCD and initialize the LCD |
putcXLCD | Write a byte to the LCD controller |
putsXLCD | Write a string from data memory to the LCD |
putrsXLCD | Write a string from program memory to the LCD |
ReadAddrXLCD | Read the address byte from the LCD controller |
ReadDataXLCD | Read a byte from the LCD controller |
SetCGRamAddr | Set the character generator address |
SetDDRamAddr | Set the display data address |
WriteCmdXLCD | Write a command to the LCD controller |
WriteDataXLCD | Write a byte to the LCD controller |
單修改 xlcd.h 是沒有用的,因為 xlcd.lib 並不會因此而改變。正確的作法應該將所用到的 xlcd.c 的檔案加入你的 Project 中並修改 xlcd.h 的腳位定義後重新編譯。將 xlcd 的原始程式 (C:\mcc18\src\traditional\pmc\xlcd ) 要使用的檔案考到目前的 Project 目錄後再加入到 Project 中,修改 xlcd.h 的定義後重新編譯即可。
用戶可以使用不同的頻率來作系統時鐘,不同的 LCD 塊模,延誤時間也有分別,所以 xlcd 函數庫的 LCD 延誤時間是要用戶設定。副程式包括 DelayFor18TCY (延誤18週期),DelayPORXLCD (延誤至少15毫秒 = 15ms) 和 DelayXLCD (延誤至少5毫秒 = 5ms)。
程式:
#include void DelayFor18TCY( void ) { Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); } void DelayPORXLCD (void) { Delay1KTCYx(60); // Delay of 15ms // Cycles = (TimeDelay * Fosc) / 4 // Cycles = (15ms * 16MHz) / 4 // Cycles = 60,000 return; } void DelayXLCD (void) { Delay1KTCYx(20); // Delay of 5ms // Cycles = (TimeDelay * Fosc) / 4 // Cycles = (5ms * 16MHz) / 4 // Cycles = 20,000 return; } |
- 標準 xlcd 函數庫用 PORTA 作為控制信號或數據傳輸。用戶選擇其它 PORT 時,必須調用函數。
- 如果選擇 non-blocking mode 模式,用戶必須調用函數,並用 XLCDIsBusy 檢查狀態。在 blocking mode 模式,並用delay 或 polling 作檢查標誌狀態。
- 用戶可以通過 R/ W 引腳接地,以保留多一個微控制器引腳,但是這樣用戶將無法讀取命令,如 XLCDReadData,XLCDIsBusy 等。
- xlcd 函數庫不提供功能 LCD 延誤。用戶需要設定寫入延遲功能,如DelayFor18TCY (延誤18週期),DelayPORXLCD (延誤至少15毫秒) 和 DelayXLCD (延誤至少5毫秒)。
- 基本上 C18 所附的 xlcd 函數是可以動作的,只不過它都是用 Large Mode 去 compile 的,所以每次傳指標給 xlcd 時都必須指定為 FAR 的型態才行。因為xlcd 有檢查 R/W 腳位的做為 LCD Busy 的檢查,所以你必須在修改 I/O 接腳的宣告,可以修改 xlcd.h 來完成。
2011 年 02 月 21 日 天氣報告
氣溫:14.0 度 @ 09:00
相對濕度:百分之88%
天氣:天氣寒冷及有微雨
沒有留言:
張貼留言