|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教下用sed1335控制液晶得問題 |
| 作者:hpqhpq 欄目:ARM技術(shù) |
最近在EASY2200上調(diào)液晶,用自帶得液晶跑得通,項目需要,換了款基于1335控制器得液晶,用得是總線方式,調(diào)了好久也沒弄通,程序如下: 程序說明:程序中有些中間調(diào)試過程,看了不少帖子,說是加延時或讀忙狀態(tài),都還是不行 其中BCFG3 = 0x1000FFEF都不行 還有個很奇怪得問題:把CS直接接地,液晶就能初始化成功,但顯示得亂七八糟得,想想可能和RAM訪問有關(guān)(程序在RAM中運行得) 還有接線得時候偷懶了一下,直接就基本上接在以前得液晶接口上得,只是調(diào)節(jié)了一下線得位置,兼容性好像還不賴 各位幫幫忙哈~~~~~ #include "config.h" TCOLOR gui_disp_buf[GUI_LCM_YMAX][GUI_LCM_XMAX/8]; // 聲明GUI顯示緩沖區(qū) /* 定義LCM地址 */ #define TG240128_COM (*((volatile unsigned SHORT *) 0x83000002)) #define TG240128_DAT (*((volatile unsigned SHORT *) 0x83000000)) #define Busy 0x40 #define Wait_For_Busy() while (LCD_ReadState()& Busy); #define delay(x) {unsigned CHAR i=x; while(i--);} /********************************************************************** * 名稱:LCD_ReadState() * 功能:讀取狀態(tài)字子程序。 * 入口參數(shù):無 * 出口參數(shù):返回值即為讀出的狀態(tài)字 * 說明:函數(shù)會設(shè)置LCD數(shù)據(jù)總線為輸入方式 ***********************************************************************/ #define LCD_ReadState() TG240128_COM /********************************************************************** * 名稱:LCD_WriteCommand() * 功能:寫命令子程序。(發(fā)送命令前,不檢查液晶模塊的狀態(tài)) * 入口參數(shù):command 要寫入LCD的命令字 * 出口參數(shù):無 * 說明:函數(shù)會設(shè)置LCD數(shù)據(jù)總線為輸出方式 ***********************************************************************/ #define LCD_WriteCommand(command) {/*Wait_For_Busy();*/TG240128_COM = (unsigned SHORT)(command);/* delay(15);*/ } /********************************************************************** * 名稱:LCD_WriteData() * 功能:寫數(shù)據(jù)子程序。(發(fā)送數(shù)據(jù)前,不檢查液晶模塊的狀態(tài)) * 入口參數(shù):dat 要寫入LCD的數(shù)據(jù) * 出口參數(shù):無 * 說明:函數(shù)會設(shè)置LCD數(shù)據(jù)總線為輸出方式 ***********************************************************************/ #define LCD_WriteData(dat) {/*Wait_For_Busy();*/TG240128_DAT = (unsigned SHORT)(dat);/*delay(100);*/} /* SED1335 命令定義 */ #define LCD_SYS_SET 0x40 /* 初始化,顯示窗口設(shè)置 參數(shù)8個 */ #define LCD_SLEEP_IN 0x53 /* 空閑操作 參數(shù)0個 */ #define LCD_DIS_ON 0x59 /* 顯示開 參數(shù)1個 */ #define LCD_DIS_OFF 0x58 /* 顯示關(guān) 參數(shù)1個 */ #define LCD_SCR_OLL 0x44 /* 設(shè)置顯示區(qū)域,卷動 參數(shù)10個 */ #define LCD_CSR_FOM 0x5D /* 設(shè)置光標形狀 參數(shù)2個 */ #define LCD_CGR_ADD 0x50 /* 設(shè)置CGRAM起始地址 參數(shù)2個 */ #define LCD_CSR_DIR 0x4C /* 設(shè)置光標移動方向 參數(shù)0個 */ #define LCD_DOT_DIR 0x5A /* 設(shè)置點單元卷動位置 參數(shù)1個 */ #define LCD_DIS_OVR 0x5B /* 設(shè)置合成顯示方式 參數(shù)1個 */ #define LCD_CSR_WR 0x46 /* 設(shè)置光標位置 參數(shù)2個 */ #define LCD_CSR_RD 0x47 /* 讀出光標位置 參數(shù)2個 */ #define LCD_MEM_WR 0x42 /* 寫入顯示緩沖區(qū) */ #define LCD_MEM_RD 0x43 /* 從顯示緩沖區(qū)讀出 */ #define GET_LOW_BYTE(DAT) ((unsigned SHORT)((DAT)&0xff)) /*取DAT的低8位*/ #define GET_HIG_BYTE(DAT) ((unsigned SHORT)((DAT)>>8)) /*取DAT的高8位*/ unsigned CHAR DCB_HEX_TAB[8] = {0x80, 0x40, 0x20, 0x10, 0x08,0x04, 0x02, 0x01}; unsigned CHAR SYS_INIT_DAT[8] = {0x30, 0x87, 0x07, 0x27, 0x42,0xef, 0x28, 0x00};//{0x30, 0x87, 0x07, 0x27, 0x2F,0xef, 0x28, 0x00}; unsigned CHAR SCROLL_DAT[10] = {0x00, 0x00, 0xf0, 0x80, 0x25, 0xF0, 0x80, 0x50,0x00,0x60};//{0x00, 0x00, 0xF0, 0xb0, 0x04, 0xf0, 0x80, 0x50,0x00,0x60}; /**************************************************************************** * 名稱:DelayNS() * 功能:長軟件延時 * 入口參數(shù):dly 延時參數(shù),值越大,延時越久 * 出口參數(shù):無 ****************************************************************************/ void DelayS(uint16 dly) { uint32 ii; for(ii=0; ii<dly; ii++); } void GUI_Initialize(void) { unsigned CHAR i; LCD_WriteCommand(LCD_SYS_SET); // DelayS(15); for(i=0 ; i < 8 ; i++) {LCD_WriteData(SYS_INIT_DAT[i]); DelayS(15); } LCD_WriteCommand(LCD_SCR_OLL); DelayS(15); // for(i=0 ; i < 10 ; i++) {LCD_WriteData(SCROLL_DAT[i]);DelayS(15);} LCD_WriteCommand(LCD_DOT_DIR);DelayS(15); // LCD_WriteData(0x00); DelayS(15); LCD_WriteCommand(LCD_DIS_OVR); DelayS(15); // LCD_WriteData(0x0C); DelayS(15); LCD_WriteCommand(LCD_DIS_ON); DelayS(15); // LCD_WriteData(0x04);DelayS(15); LCD_WriteCommand(LCD_CSR_WR); // LCD_WriteDa |
| 2樓: | >>參與討論 |
| 作者: foyyof 于 2007/3/30 8:56:00 發(fā)布:
在以前的帖子里搜索 S1D1335,有很多! ++++ * - 本貼最后修改時間:2007-3-30 8:57:04 修改者:foyyof |
|
| 3樓: | >>參與討論 |
| 作者: hpqhpq 于 2007/3/30 9:30:00 發(fā)布:
搜過,但還是沒解決~~~~ 不知道是啥問題 |
|
| 4樓: | >>參與討論 |
| 作者: hpqhpq 于 2007/3/30 10:03:00 發(fā)布:
兄弟們,幫幫忙哦,調(diào)好久了 能不能把BCFG得參數(shù)說一下,應(yīng)該是大一點好把? |
|
| 5樓: | >>參與討論 |
| 作者: netjob 于 2007/3/30 12:28:00 發(fā)布:
SED1335F很好用的! 仔細看看說明,BCFG的參數(shù)很好理解的! 樓主上面的參數(shù)不對! 是320*240嗎 ? |
|
| 6樓: | >>參與討論 |
| 作者: netjob 于 2007/3/30 12:32:00 發(fā)布:
還有,ARM的總線時序是否符合SED1335的時序? 可以設(shè)置一下外部總線的時序。以符合SED1335F的時序。 |
|
| 7樓: | >>參與討論 |
| 作者: hpqhpq 于 2007/3/30 13:38:00 發(fā)布:
是啊 是呀,就是320×240得,哪里有問題哦~ 以前在單片機上用得就是那種初始化參數(shù)哦 沒什么問題得呀 |
|
| 8樓: | >>參與討論 |
| 作者: hpqhpq 于 2007/3/30 13:55:00 發(fā)布:
樓上得蟈蟈能不能給個例子 |
|
| 9樓: | >>參與討論 |
| 作者: hpqhpq 于 2007/3/30 14:06:00 發(fā)布:
自己說一下,我已經(jīng)把總線得時序設(shè)成最寬了~ 還加了延時,還是不行 |
|
| 10樓: | >>參與討論 |
| 作者: xwj 于 2007/3/30 14:29:00 發(fā)布:
呵呵,誰在玩蟈蟈。亢米? |
|
| 11樓: | >>參與討論 |
| 作者: leishasha 于 2007/3/30 16:00:00 發(fā)布:
try 在 lcmdrv.h中有個定義,不知道改了沒 /* 定義LCM像素數(shù)宏 */ #define GUI_LCM_XMAX 128 /* 定義液晶x軸的像素數(shù) */ #define GUI_LCM_YMAX 64 /* 定義液晶y軸的像素數(shù) */ |
|
| 12樓: | >>參與討論 |
| 作者: hpqhpq 于 2007/3/30 16:22:00 發(fā)布:
改了得呀,都還是沒反應(yīng) |
|
| 13樓: | >>參與討論 |
| 作者: hpqhpq 于 2007/3/30 16:32:00 發(fā)布:
有沒有兄弟們是直接在EASYARM2200上調(diào)SED1335呢? |
|
| 14樓: | >>參與討論 |
| 作者: leishasha 于 2007/3/30 16:39:00 發(fā)布:
可能情況 你最好再看看液晶芯片的資料,也不知道你是不是用圖形方式顯示,如果ok,則是不需要把數(shù)據(jù)送到CGRAM中,而是直接送的 |
|
| 15樓: | >>參與討論 |
| 作者: hpqhpq 于 2007/3/30 17:09:00 發(fā)布:
我以前在單片機上調(diào)通過得,液晶得初始化程序應(yīng)該沒啥問題 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |