最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網
技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe

請教:Atmega128總線方式驅動SED1330 320×240液晶 初始化問題?

作者:geniusboy 欄目:單片機
請教:ATMEGA128總線方式驅動SED1330 320×240液晶 初始化問題?
大家好,
      我是一個新手,最近在做一個液晶顯示的項目,用的ATMEGA128,總線方式,液晶模塊是SED1330控制帶32K RAM。我寫的程序在下面,希望大家能看看,幫我解答一下,搞了幾天了就是顯示不出來。
  主要想問一問:
(1)128的初初始化問題?(因為不太會看時序圖,看1330時序要求WR寬度最小220ns,所以為了保險起見,我讓128在RD WR后面插入了兩個等待周期,不知道這樣對不對,我把時序圖也傳上來)
(2)我用的是128內部8M晶振,熔絲位設置位SUT:10  CKSEL:0100 CKOPT:1  不知道是否正確?
(3)關于地址總線的使用?不知道我定義是否正確?
(4)SED1330初始化的問題?不知道我初始化參數是否正確?
(5)程序中的錯誤
  先謝謝大家了!

// Target : M128
// CRYSTAL: 8.0000Mhz

#include <iom128v.h>
#include <macros.h>
#include <stdio.h>

// 直接訪問方式地址定義  PA0~7接DB0~7
// PC0~CS  PC1~A0
//CS=0 A0=0 寫數據口
#define LcmWdataPort (*(volatile unsigned CHAR *)0xFC00)  

//CS=0 A0=1 寫命令口     
#define LcmCmdPort  (*(volatile unsigned CHAR *)0xFE00)  

//CS=0 A0=1 讀數據口   
#define LcmRdataPort LcmCmdPort      

//CS=0 A0=0 讀忙狀態(tài)標志口
#define LcmStatusPort LcmWdataPort     

void port_init(void)    // I/O端口初始化函數{
{  
DDRG = 0xFF;;  //PG3設定為輸出(液晶RESET復位端)
PORTG = 0xFF;  //PG3輸出高電平1(液晶低電平復位)  
PORTA = 0xff;
}

void init_devices(void)     //調用初始化函數以及外部存儲器初始化
{
//stop errant interrupts until set up
CLI(); //disable all interrupts  
XMCRA = 0x0A;   // 外部存儲器地址不分區(qū),在RD、WR后插入2個等待周期
XMCRB = 0x00;   //不使能總線保持功能,不釋放地址線
port_init();     //I/O口初始化
MCUCR = 0x80;   //使能外部存儲器,并與XMCRA配合設定了插入2個等待周期
SEI(); //re-enable interrupts
//all peripherals are now initialised
}

// 變量類型標識的宏定義
#define UCHAR unsigned CHAR
#define Uint unsigned int
// 時序要求:/WR=0;/RD=1  
#define SystemSet   0x40        
// P1-P8參數                        
UCHAR ParaSysTable[8]= {0x30,0x87,0x07,0x27,0x42,0xF0,0x30,0x00};   
                       
/* P1=0x30 : 頂天無邊界,單屏結構驅動,內部CGROM+CGRAM1(8×8點陣)
   P2=0x87 : B形驅動波形,字符體寬度8列
   P3=0x07 : C形驅動波形,字符體高度8行
   P4=0x27 : C/R 有效顯示窗口參數 320/8 = 40 = 0x27
   P5=0x42 : 驅動頻率時間常數 TC/R >= C/R+4 Fosc >= 9*TC/R*L/F*FR  FR=70Hz
   P6=0xF0 : L/F 掃描的行數 240行 = 0xF0
   P7,P8   : 設定分配給每一行的顯示存儲空間0x30=48字節(jié)   */   


/*******************顯示域設置。后續(xù)10字節(jié)參數串ParaScrTableA[]****************/
// 時序要求:/WR=0;/RD=1
#define Scroll      0x44            

#define BasePart1   0x00
#define BasePart2   0x40
#define BasePart3   0x80
#define BasePart4   0x00

UCHAR ParaScrTableA[10]={0x00,BasePart1,0xF0,0x00,BasePart2,0xF0,0x00,BasePart3,0x00,BasePart4 };

/*****************************休閑模式設置。后續(xù)參數:無*********************************/
#define SleepIn 0x53

/*****************************顯示狀態(tài)設置。后續(xù)參數1字節(jié).*****************************/
#define DispOn  0x59
#define DispOff 0x58
//設定光標閃爍,4個顯示區(qū)均顯示但不閃爍。
#define DispOnP1 0x56   


/***************************顯示合成方式設置。后續(xù)參數1字節(jié)。**************************/
#define Ovlay  0x5b
//設定1、3顯示區(qū)為文本顯示,2顯示區(qū)為圖形。L1、L2、L3簡單或合成
#define OvlayP1 0x00   


/*****************************點位移設置。后續(xù)參數1字********************************/
#define HdotScr 0x5A
//設定點位移為1
#define HdotScrP1 0x00   


/***********************光標形狀設置。后續(xù)參數2字節(jié)*********************************/
#define CsrForm  0x5D
//設定光標占8列
#define CsrFormP1 0x07   
//設定光標為塊狀,占8行
#define CsrFormP2  0x87    


/*********************Cgram首地址設置。后續(xù)參數2字節(jié)*********************************/
#define CgramAdr   0x5C
//定義外部CGROM開始地址為8000H
#define CgramAdrP1 0x00    
#define CgramAdrP2 0x80


/************************光標移動方向設置。后續(xù)參數:無****************************/
//光標右移
#define CsrDirR  0x4c    
//光標左移
#define CsrDirL  0x4d     
//光標上移
#define CsrDirU  0x4e   
//光標下移
#define CsrDirD  0x4f    


/************************光標指針設置。后續(xù)參數2字節(jié)*****************************/
#define CsrW  0x46


/************************讀取光標指針。后續(xù)參數2字節(jié)****************************/
#define CsrR  0x47

/**************************數據寫入設置。后續(xù)參數N字節(jié)************************/
#define mWrite  0x42

/**************************數據讀取設置。后續(xù)參數N字節(jié)***********************/
#define mRead  0x43

/*******************************程序參數定義***************************/
// 忙狀態(tài)標志位0b0100 0000
#define Busy  0x40    
// 相對于320 X 240 液晶屏  
#define AP  0x30        

/*____________________________微妙延時程序_,8M晶振______________________________*/  
void delay_1us()
         {  
          asm("nop");
          asm("nop");
          asm("nop");
   asm("nop");
   asm("nop");
   asm("nop");
   asm("nop");
   asm("nop");
   }
         
void delay_us(UCHAR n)
    {
    while(n--)
    { delay_1us();}
    }

/*___________________________毫秒延時程序_______________________________*/
void delay_ms(UCHAR m)
     {
      while(m--)
      {delay_us(1000);}
     }

/*___________________________判斷忙標志BF子程序________________________*/
void WaitForBusy(void)
    {
     while(LcmStatusPort & Busy);
    }

/*_________
2樓: >>參與討論
chuandaoxy
把硬件圖貼出來
 
3樓: >>參與討論
geniusboy
附上硬件原理圖
chuandaoxy我把硬件原理圖發(fā)上來了,多謝。

4樓: >>參與討論
forest_j
sed系列有個毛病,容易偏屏
上電后,顯示內容有時候會偏到一邊幾個像素.跟電源的上掉電順序有關系.

5樓: >>參與討論
geniusboy
forest_j您好
感謝forest_j您的回復。我不知道有這個問題,但是我也想過怕LCD先上電,AVR后,會出現(xiàn)問題,所以我在我的LCD初始化程序里,加了幾個語句,用128先讓LCDreset端置低電平500us讓它復位,在開始寫指令,初始化。
您能在看看可能是有別的問題嗎?我等下改一下指針地址,在燒一次看看,非常感謝!

6樓: >>參與討論
forest_j
是這樣的
先復位一下再初始化,要有一定的延遲時間.如果你的板將來出現(xiàn)偏屏問題,可以試下用單片機控制負電源的接通.
先確認一下是否正確初始化,如果硬件連接錯誤或指令不對沒有初始化,屏幕應該是上下滾動的橫條.

7樓: >>參與討論
geniusboy
回復forest_j
謝謝,我發(fā)現(xiàn)了一個錯誤,就是    
   WriteCommand(DispOn);    //寫入LCM開顯示屏幕指令
    WriteCommand(DispOnP1);   //寫入P1參數,光標閃爍,1,2,3,4區(qū)顯示
第二個語句應該是WriteData(DispOnP1);
我改了這個語句,還是沒有顯示。
此外我在復位后加了50ms延遲,不知道這個時間夠不夠。另外控制負電源接通,我會試試的,感謝您!

8樓: >>參與討論
geniusboy
補充
我現(xiàn)在照上面的程序燒進去后,上電后,屏幕只有背光亮著,其他什么都沒有顯示,也沒有滾動條紋,沒有亮條紋!希望還有哪位能幫忙分析一下,哦,forest_j我想再問一下,如何確定是否正確初始化呢了?

9樓: >>參與討論
geniusboy
自己再頂一下:)
高手們再幫幫忙啊,又一天又要過了,還是沒有進展,郁悶瘋了!

參與討論
昵稱:
討論內容:
 
 
相關帖子
c51請教
AT89S51是AVR單片機不?(菜鳥的問題,不跪求)
請問各位!!AVR哪種單片機合符以下要求!
仿真時不小心把OCDEN和JTAGEN的使能給去掉了,怎么辦?
煒煌WH-500UA
免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號