生活随笔
收集整理的這篇文章主要介紹了
发一个自己写的2440驱动1602的资料(电路+代码)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
上個(gè)星期把MINI2440板上的富余數(shù)據(jù)線引了出來,看著以前丟下的1602突然有了想用ARM9驅(qū)動它的沖動,于是就開始干了。 代碼是從以前剛學(xué)C51的時(shí)候改的,呵呵,看見以前寫的代碼真覺得很爛,現(xiàn)在已經(jīng)整理好了。 雖說有點(diǎn)牛刀殺雞的味道,但驅(qū)動起來真的費(fèi)了不少勁。如果有褲子穿就好了 ^_^ 驅(qū)動方式:2440+HC595+LCD1602 電路圖: 電路圖?(原文件名:1602.jpg)? 全家福 全家福?(原文件名:moto_0009.jpg)? LCD1602.H??頭文件內(nèi)容 #ifndef??__LCD1602_H__ #define??__LCD1602_H__ #include "./include/gpio.h" #include "./include/def.h" #include "./include/timer.h" //------- 驅(qū)動方式 -----------// #define? ? IO_WAY? ? ? ? ? ? ? ?? ?0? ? ? ? ? ? ? ???//模擬IO #define? ? SPI_WAY? ? ? ? ? ? ? ?? ?1? ? ? ? ? ? ? ???//SPI #define? ? LCDCTL_WAY? ? SPI_WAY? ? ? ?? ?? ?? ?//使用SPI驅(qū)動 //------- 控制端口與控制引腳 ------// #define? ? LCD1602_CTL_PORT? ? rGPFCON? ? ? ? ? ? ? ? ? ? ? ? //GPF 端口 #define? ? LCD1602_RS??GPFPin0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //RS引腳 #define? ? LCD1602_RW??GPFPin2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //RW引腳 #define? ? LCD1602_E? ?GPFPin4? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //EN引腳 //------- 數(shù)據(jù)端口與數(shù)據(jù)引腳 ------//? ? ? ? (使用74HC595) #define? ? LCD1602_DATA_PORT? ? rGPGCON? ? ? ? ? ? ? ? ? ? ? ? //GPG 端口 #define? ? HC595_ST? ? GPGPin5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //??SPI1MISO 引腳 #define? ? HC595_SH? ? GPGPin7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //??SPI1CLK 引腳 #define? ? HC595_Ds? ? GPGPin6? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //??SPI1MOSI 引腳 #define? ? SPI1Baud? ? ? ?? ? 300000? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 設(shè)置波特率為300 khz? ? ? ?? ?(PCLK=50666666) //-------- 自制字符 --------- #define? ? SELF_SYMBOL? ? ? ? ? ? ? ?? ?1? ? ? ? ? ? ? ? ? ? ? ? //??使能自制字符顯示 #if SELF_SYMBOL extern const U8 CGTAB[8][8]; #endif //----- 延時(shí)函數(shù) ----------// #define? ?delay_ms(x)? ?TimerDelay(1000*x) #define? ?delay_us(x)? ?TimerDelay(1*x) //--------- 主函數(shù) ----------// void LCD1602_init(void);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //1602初始化(帶清屏) void LCD1602_Clear(void);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //1602清屏 void LCD1602_putchar(U8 number);? ? ? ? ? ? ? ? ? ? ? ? //顯示字符 void LCD1602_putcharXY(U8 number,U8 x,U8 y);? ?? ?? ?? ?//在指定位置顯示字符 void LCD1602_putstring(U8 *p);? ? ? ? ? ? ? ? ? ? ? ? //顯示字符串 void LCD1602_putstringXY(U8 *p,U8 x,U8 y);? ?? ?? ?? ???//在指定位置顯示字符串 #if SELF_SYMBOL void LCD1602WriteRAM(U8 *Data,U8 tab_N); #endif //--------- 子函數(shù) ----------// void LCD1602Pin_init(void); #if LCDCTL_WAY==SPI_WAY void SPI1SendData(U8 Data); #else void??HC595SendData(U8 data); #endif void LCD1602WriteCMD(U8 CMD); void LCD1602WriteDATA(U8 W_DATA); void LCD1602SetPoint(U8 x,U8 y); #endif? ? ? ? // __LCD1602_H__ 代碼與原理圖ourdev_513387.rar(文件大小:298K)?(原文件名:Up.rar) | |
| 收藏0 |
總結(jié)
以上是生活随笔為你收集整理的发一个自己写的2440驱动1602的资料(电路+代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。