音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

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

請各位人兄指點一二。

作者:win2000_li 欄目:ARM技術(shù)
請各位人兄指點一二!
程序如下,但是不能正常運行。
哪位做過類似的東東,請指點小弟一二。
并且BUSY端好像不正常,請指點一下。
E --- P0.2
CS1\CS2 --- P0.3\P0.4
R/W ---P0.5
RS/DI ---- P0.6
DB0~DB7 ----P10~P17
我現(xiàn)在連關(guān)顯示都不能行,請各位人兄幫一下。



#include "config.h"
#define    DB0         1<<10
#define    DB1         1<<11
#define    DB2         1<<12
#define    DB3         1<<13
#define    DB4         1<<14
#define    DB5         1<<15
#define    DB6         1<<16
#define       DB7           1<<17

#define    DI          1<<6          
#define    RW          1<<5
#define    E           1<<2
#define    CS1         1<<4
#define    CS2         1<<3
//#define    BUSY        1<<17
#define    LED8        1<<23


/****************************************/
void LCD_WritePort(uint8 data);
void LCD_WriteByte(uint8 dat);
void SendCommandToLCD(uint8 command);
void SetLine(uint8 LINE);
void SetColumn(uint8 column);
void SetStartLine(uint8 startLINE);
void SetOnOff(uint8 onoff);
void SelectScreen(uint8 screen);
void ClearScreen(uint8 screen);

/****************************************/

uint8 CBYTE[]={
0x00,0x12,0x1E,0x02,/*"1",0*/

0x00,0x12,0x1E,0x02,/*"1",1*/

0x00,0x12,0x1E,0x02,/*"1",2*/

0x00,0x12,0x1E,0x02,/*"1",3*/

0x00,0x12,0x1E,0x02,/*"1",4*/

0x00,0x12,0x1E,0x02,/*"1",5*/

0x00,0x12,0x1E,0x02,/*"1",6*/

0x00,0x12,0x1E,0x02,/*"1",7*/

0x00,0x12,0x1E,0x02,/*"1",8*/

0x00,0x12,0x1E,0x02,/*"1",9*/

0x00,0x12,0x1E,0x02,/*"1",10*/

0x00,0x12,0x1E,0x02,/*"1",11*/

0x00,0x12,0x1E,0x02,/*"1",12*/

0x00,0x12,0x1E,0x02,/*"1",13*/
};

/**********************DelayNs Program****************************/
void  DelayNs(uint32  dly)      /*延時*/
{  
    uint8  i;
    for(; dly>0; dly--)
           for(i=0; i<50; i++);
}


/*************************把數(shù)據(jù)傳相應(yīng)端口***********************/
//data:顯示數(shù)據(jù)
//就是把數(shù)據(jù)與命令傳給DB0~DB7
void LCD_WritePort(uint8 data)
{
    uint32 temp0=0x00000000,temp1=0x00000000;  //定義兩個臨時變量
    if (data&0x01)temp1|=DB0;   //取第一位數(shù)1或0
    else temp0|=DB0;
    if (data&0x02)temp1|=DB1;   //取第二位數(shù)1或0
    else temp0|=DB1;
    if (data&0x04)temp1|=DB2;   //取第三位數(shù)1或0
    else temp0|=DB2;
    if (data&0x08)temp1|=DB3;   //取第四位數(shù)1或0
    else temp0|=DB3;
    if (data&0x10)temp1|=DB4;   //取第五位數(shù)1或0
    else temp0|=DB4;
    if (data&0x20)temp1|=DB5;   //取第六位數(shù)1或0
    else temp0|=DB5;
    if (data&0x40)temp1|=DB6;   //取第七位數(shù)1或0
    else temp0|=DB6;
    if (data&0x80)temp1|=DB7;   //取第八位數(shù)1或0
    else temp0|=DB7;
    IOSET=temp1;                //把相應(yīng)位置1或0
    IOCLR=temp0;
}

/**********檢查忙信號與RST************/
/*void LCD_CheckBusy()
{
  uint8 i = 0;
  IO0CLR = DI;
  IO0SET= RW;
  IO0DIR = 0x00000000;
  while(IO0PIN&DB7)
  {i++;}
  IO0DIR = 0xffffffff;
}*/


/****************寫顯示數(shù)據(jù)******************/
//dat:顯示數(shù)據(jù)
void LCD_WriteByte(uint8 dat)
{  
    //LCD_CheckBusy();
    IO0SET = DI;
    IO0CLR = RW; //DI=1,RW=0寫顯示數(shù)據(jù)
    LCD_WritePort(dat);
    IO0SET = E;
    DelayNs(10);
    IO0CLR = E;
}

/***************向LCD發(fā)送命令**************/
//command :命令
void SendCommandToLCD(uint8 command)
{
    //LCD_CheckBusy();
    IO0CLR = DI;
    LCD_WritePort(command);
    IO0SET = E;
    DelayNs(5);
    IO0CLR = E;
}

//設(shè)定行地址(頁)--X 0-7
void SetLine(uint8 LINE)
{
    LINE=LINE & 0x07; // 0<=LINE<=7
    LINE=LINE|0xb8; //1011 1xxx
    SendCommandToLCD(LINE);
}

//設(shè)定列地址--Y 0-63
void SetColumn(uint8 column)
{
    column=column &0x3f; // 0=<column<=63
    column=column | 0x40; //01xx xxxx
    SendCommandToLCD(column);
}

//設(shè)定顯示開始行--XX
void SetStartLine(uint8 startLINE) //0--63
{
    startLINE=startLINE & 0x07;
    startLINE=startLINE|0xc0; //1100 0000
    SendCommandToLCD(startLINE);
}

//開關(guān)顯示
void SetOnOff(uint8 onoff)
{
    onoff=0x3e | onoff; //0011 111x
    SendCommandToLCD(onoff);
}

/******************選擇屏幕******************/
//screen: 0-全屏,1-左屏,2-右屏
void SelectScreen(uint8 screen)
{
    SWITCH(screen)
    {
     case 0: IO0SET = CS1;//全屏
              DelayNs(5);
             IO0SET = CS2;
              DelayNs(5);
              break;
     case 1: IO0SET = CS1;//左屏
              DelayNs(5);    
              IO0CLR = CS2;
 
2樓: >>參與討論
zlgarm
請檢查總線配置
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教
請問zlg:廣州新賽格的周立功有沒有LPC2148零售?
2131板調(diào)試時的問題
EasyARM2200開發(fā)板用EasyJTAG連接好像比較困難啊
誰能共享一下uclinux下的lcd驅(qū)動
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號