找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2126|回復: 4
打印 上一主題 下一主題
收起左側

大神幫我...12864時序

[復制鏈接]
跳轉到指定樓層
樓主
ID:85313 發(fā)表于 2015-8-3 10:35 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
help  為什么我那樣的程序錯了。。。

QQ截圖20150803103355.png (38.77 KB, 下載次數(shù): 113)

QQ截圖20150803103355.png

QQ截圖20150803103409.png (41.61 KB, 下載次數(shù): 99)

QQ截圖20150803103409.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:86389 發(fā)表于 2015-8-3 10:48 | 只看該作者
我用AVR硬件SPI,給你參考一下‘。我用過幾款串行LCD,雖然控制器不一樣,但指令都是一樣的,只是延時稍有不同,改一下就能移植過來,而且都能正常顯示。
//數(shù)據(jù)線定義:
// SI==========MOSI  // 十四腳
// A0==========PB0 //第四腳
// CS==========PB2//第二腳
// RES=========PB1 //第三腳
// SCL=========SCK //十三腳
/////////////////////////////////////////

///////////////////////////////
//發(fā)送一個字節(jié)到ST7565P并等待發(fā)送完畢
//入口:要發(fā)送的字節(jié)
//返回值:無
////////////////////////////////
void SPIByte(unsigned char byte)   
{
     SPDR = byte;     //寫數(shù)據(jù)
     while(!(SPSR & (1<<SPIF)));  //等待發(fā)送完成
}
////////////////////////////////////////////////
//將一個字節(jié)發(fā)送的ST7565P的函數(shù)
//入口參數(shù): select ,data
//select:根據(jù)此值確定發(fā)送給ST7565P的是數(shù)據(jù)還是命令
//data: 要發(fā)送給ST7565的一個字節(jié)
//返回值:無
////////////////////////////////////////////////
void LCD_SPISend(unsigned char select,unsigned char data)
{
     PORTB &= ~(1<<2);          // CS=0 芯片使能信號
     if(select == COMMAND)    //傳輸?shù)氖敲?
      {      
          PORTB &= ~(1<<0);     // 根據(jù)ST7565P的數(shù)據(jù)手冊,傳輸命令時A0應該是為低電平
          SPIByte(data);   
          PORTB |= 1<<0;            // A0=1   
      }
     else
     {
          SPIByte(data);
      }
     PORTB |= 1<<2;      //CS= 恢復不使能
}
////////////////////////////////////////////
//寫坐標函數(shù)
//入口參數(shù):x y
//y:  頁面地址,此液晶將顯示區(qū)域分為9個頁面,y的值域0~8
//x:  列地址,值域:0~127
//返回值:無
////////////////////////////////////////////
void LCD_XYSet(unsigned char x,unsigned char y)
{
     LCD_SPISend(COMMAND,0xB0|y);           //y的值為0~8
     LCD_SPISend(COMMAND,0x10|(x>>4));
     LCD_SPISend(COMMAND,0x00|(x&0x0F));
}

void LCD_Init(void)
{   
     SPCR = 0x5C;  
     SPSR |= 1<<SPI2X;
//SPI的功能設置解釋:使能SPI;采用主機模式;SPI的傳輸模式為模式3;時鐘頻率為系統(tǒng)時鐘的兩分頻
        _delay_us(1);
     SPIByte(0xFF);         //可發(fā)可不發(fā),無意義
     PORTB &= ~(1<<1);               //將復位腳拉低   
        _delay_ms(5);              //延時5ms,等待電源穩(wěn)定
     PORTB |= 1<<1;                  //將復位腳拉高
     _delay_ms(5);
     LCD_SPISend(COMMAND,0xAE);         //將液晶屏的顯示關掉
     LCD_SPISend(COMMAND,0xA3);         //設置偏壓比
     LCD_SPISend(COMMAND,0xA0);         //設置SEG 輸出方向
     LCD_SPISend(COMMAND,0xC8);         //設置公共端輸出掃描方向
         
     LCD_SPISend(COMMAND,0x25);         //調(diào)整 (1 + Rb/Ra) ratio 值,調(diào)整此值影響很大
     LCD_SPISend(COMMAND,0x81);         //開始設置α的命令
     LCD_SPISend(COMMAND,0x0c);         //設置α的值,值越大對比度越強,調(diào)整此值影響不太,是

//微調(diào)的
     _delay_ms(5);
     LCD_SPISend(COMMAND,0x2F);         //開啟相關電壓
     _delay_ms(5);               
     LCD_SPISend(COMMAND,0xAF);         //顯示開
     LCD_SPISend(COMMAND,0xF8);         
     LCD_SPISend(COMMAND,0x01);         //設置升壓比
        _delay_ms(10);                      //延時
}
////////////////////////////////////////
//清屏函數(shù)
//入口:無
//返回值:無
///////////////////////////////////////
void Clear_Display(void)
{
     unsigned char i;
     unsigned char j;
     for(i=0;i<8;i++)
     {
        LCD_XYSet(0,i);
        for(j=0;j<128;j++)
        {
           LCD_SPISend(DATA,0);    //傳輸數(shù)據(jù)
        }
     }

}
回復

使用道具 舉報

板凳
ID:85313 發(fā)表于 2015-8-3 10:59 | 只看該作者
zhou961291176 發(fā)表于 2015-8-3 10:48
我用AVR硬件SPI,給你參考一下‘。我用過幾款串行LCD,雖然控制器不一樣,但指令都是一樣的,只是延時稍有 ...

雖然看不懂,不過謝謝了~
回復

使用道具 舉報

地板
ID:87598 發(fā)表于 2015-8-5 14:01 | 只看該作者
E需要脈衝信號
回復

使用道具 舉報

5#
ID:86938 發(fā)表于 2015-8-6 16:29 | 只看該作者
雖然控制器不一樣,但指令都是一樣的,只是延時稍有 ...
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表