娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月04日(星期二)

正在發生

2020年03月04日 | STM8L驅動I2C類型的12864

發布者:明石軒 來源: eefocus關鍵字:STM8L  驅動I2C 手機看文章 掃描二維碼
隨時隨地手機看文章

原理

之前沒有操作過12864這種類型的屏,但是,操作過其他類型的,原理都是相通的。12864是擁有128x64像素點這類屏幕的稱號吧。屏幕有64行,128列;每個漢字是16x16,所以一個這樣的屏,最多可以顯示4x8的漢字或者8x16的字符。


我使用的是不帶字庫的I2C接口的屏幕,主芯片是ST7656。這樣的屏,只能寫,不能讀。先配置屏幕,然后通過字模制作軟件制作出待顯示內容的像素數字,最后,通過數據線傳送給屏幕顯示。了解了原理后,接下來就根據主芯片的數據手冊進行配置屏幕就好了。


硬件連線

CS:片選

RST: 復位

RS:數據或命令選擇

SDA:I2C數據線

SCL:I2C時鐘

I2C采用的是軟件模擬的


底層寫操作

#define IO_ST7565_CS_0  GPIO_WriteBit(GPIOB, GPIO_Pin_5, RESET)

#define IO_ST7565_CS_1  GPIO_WriteBit(GPIOB, GPIO_Pin_5, SET)


#define IO_ST7565_SDA_0 GPIO_WriteBit(GPIOB, GPIO_Pin_1, RESET)  

#define IO_ST7565_SDA_1 GPIO_WriteBit(GPIOB, GPIO_Pin_1, SET)   


#define IO_ST7565_SCK_0 GPIO_WriteBit(GPIOB, GPIO_Pin_2, RESET)  

#define IO_ST7565_SCK_1 GPIO_WriteBit(GPIOB, GPIO_Pin_2, SET)   


#define IO_ST7565_RST_0 GPIO_WriteBit(GPIOB, GPIO_Pin_4, RESET)

#define IO_ST7565_RST_1 GPIO_WriteBit(GPIOB, GPIO_Pin_4, SET)


#define IO_ST7565_RS_0 GPIO_WriteBit(GPIOB, GPIO_Pin_3, RESET)

#define IO_ST7565_RS_1 GPIO_WriteBit(GPIOB, GPIO_Pin_3, SET)


static void io_delay(uint16_t nCount)

{

    while (nCount--);

}


/* rs == 1 data rs==0  cmd */

void ST7565_Write(uint8_t dat,uint8_t rs)  

{

uint8_t i;

    

IO_ST7565_SCK_0;

IO_ST7565_CS_0;

    

if(!rs)

{

IO_ST7565_RS_0; //Command

}else{

IO_ST7565_RS_1;

}

    

io_delay(5);

for(i = 0; i < 8; i++)

if( dat & 0x80){

IO_ST7565_SDA_1;

}else{

IO_ST7565_SDA_0;

}

dat <<= 1;

IO_ST7565_SCK_1;

io_delay(5);

IO_ST7565_SCK_0;

io_delay(5);

}

    

io_delay(5);

IO_ST7565_CS_1;

IO_ST7565_RS_1;

io_delay(5);

}


/* write cmd */

void writec(uint8_t com)

ST7565_Write(com,0);

}


/* write data */

void writed(uint8_t dat)

{  

ST7565_Write(dat,1);

}


初始化

void LcmClear(uint8_t FillData)

{

uint8_t i,j;

for(i=0;i<8;i++)

{

writec(0xB0|i); //Set Page Address

writec(0x10); //Set Column Address = 0

writec(0x00); //Colum from S1 -> S128 auto add

for(j=0;j<132;j++)

{

writed( FillData );

}

}

}


void LcmInit(void)

{

IO_ST7565_CS_1;

IO_ST7565_RST_0;

delay_ms(10); //hard reset for 10ms

IO_ST7565_RST_1;

delay_ms(10); 


writec(0xAE); //Display OFF

writec(0xA2); //1/64 Duty 1/9 Bias

writec(0xA0); //ADC select S0->S131(玻璃設計用S1-S128)

writec(0xC0); //com1 --> com64

writec(0x24); //對某些模塊沒用,用的外部Rb/Ra

writec(0x81); //Sets V0

writec(48);   //內部電位器調節對比度

writec(0x2F); //voltage follower ON regulator ON booster ON

writec(0xA6); //Normal Display (not reverse dispplay)

writec(0xA4); //Entire Display Disable

writec(0x40); //Set Display Start Line = com0

writec(0xB0); //Set Page Address = 0

writec(0x10); //Set Column Address 4 higher bits = 0

writec(0x00); //Set Column Address 4 lower bits = 1 , from IC SEG1 -> SEG128

LcmClear(0);

writec(0xAF); //Display ON

}


上面的這些命令代表什么含義,輸入的命令值具體代表什么,都可以在ST7656的官方數據手冊中找到答案。


應用

使用字模軟件制作字模:


uint8_t hzk[] = {

    /*--  文字:  請 0 --*/

    /*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/

    0x00,0x00,0xFE,0x04,0x08,0x00,0xFF,0xA8,0xA8,0xA8,0xAA,0xA9,0xFE,0x00,0x00,0x00,

    0x02,0x42,0x33,0x00,0x00,0x22,0x2A,0x2A,0x2A,0xFE,0x2A,0x2A,0x2A,0x22,0x02,0x00,

}


uint8_t num[] = {

    /*--  文字:  0  --*/

    /*--  宋體12;  此字體下對應的點陣為:寬x高=8x16   --*/

    0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,

}


/* page: 0 - 7; col: 0 - 128 */

void show_char(uint8_t page, uint8_t col, uint8_t *data)

{

    uint8_t i;


    /* set page address */

    writec(0xB0 | page);

    /* set column address */

    writec(0x10 | col >> 4);

    writec(col & 0xf);


    for(i = 8; i < 16; i++) {

writed(data[i]);

}

page++;

/* set page address */

    writec(0xB0 | page);

    /* set column address */

    writec((0x10 | (col >> 4)));

    writec(col & 0xf);

    

for(i = 0; i < 8; i++)

{

writed(data[i]);

}

}


/* page: 0/2/4/6; col: 0 - 128 */

void show_chinese(uint8_t page, uint8_t col, uint8_t *data)

{

    uint8_t i;


    /* set page address */

    writec(0xB0 | page);

    /* set column address */

    writec(0x10 | col >> 4);

    writec(col & 0xf);


    for(i = 0; i < 16; i++) {

writed(data[i]);

}

page++;

/* set page address */

    writec(0xB0 | page);

    /* set column address */

    writec((0x10 | (col >> 4)));

    writec(col & 0xf);

    

for(i = 16; i < 32; i++)

{

writed(data[i]);

}

}


show_chinese(4, 0x20, hzk);

show_char(2, 0x30, num);


資料

字模軟件: https://download.csdn.net/download/donglicaiju76152/10805852

ST7656數據手冊: https://download.csdn.net/download/donglicaiju76152/10805849

關鍵字:STM8L  驅動I2C 引用地址:STM8L驅動I2C類型的12864

上一篇:STM8開發記錄二:UART RX空閑中斷和DMA操作
下一篇:STM8用SPI交換1Byte數據

推薦閱讀

近日,胡潤研究院發布《2018胡潤全球富豪榜》(Hurun Global Rich List 2018)。全球2694位十億美金富豪上榜,增加437人,達歷史新高。亞馬遜CEO貝索斯以7750億元人民幣財富成為首富,巴菲特以6450億元人民幣財富位列第二,比爾·蓋茨以5700億元人民幣財富位列第三。?其中,馬化騰以2950億元正式成為全球華人首富,位列全球富豪榜第15位,其次是許家...
據外媒報道,車輛啟動按鈕可讓駕駛員無需攜帶車輛鑰匙,是深受消費者歡迎的一項功能。但是,該技術的一個缺陷是,因為如今的汽車,特別是混合動力車的發動機非常安靜,以至于有些駕駛員將車停在了與房子建在一起的車庫中,但是忘記關閉啟動按鈕。隨后,車輛發動機會繼續運轉,一氧化碳通過汽車通氣管道會進入房屋,在美國每年都有數十人因此窒息而死。當地...
1 引言隨著微電子技術與大規模集成電路的發展,單片機的串行通信應用正在不斷的走向深入,由于它具有功能強、體積小、功耗低、價格便宜、工作可靠、使用方便等特點,廣泛使用與我們生活的各個領域。單片機往往是作為一個核心部件來使用,再根據具體硬件結構,以及針對各種具體的要求使用相應的外部擴展,來實現具體的實際要求。本文通過對一個基于單片機...
大多數電子系統都含有模擬電路、微處理器、DSPs、ASICs和/或FPGAs,要求多個供電電壓。為保證這些系統運行,必需相應地控制瞬態特點,如開機和關機定時、傾斜速率及不同供電電壓的幅度。確定電壓和電流大小、監視、排序和跟蹤功能對表征電源的瞬態性能至關重要。開機和關機瞬態事件被確定為輸入電壓步進函數,其源自繼電器或開關閉合。從各種電源中實現干...

史海拾趣

問答坊 | AI 解惑

在quartus II 8中如何制作零件庫

在quartus II 8中如何制作零件庫…

查看全部問答∨

碰到這樣的求助,你會幫他嗎?

在一個論壇看到這樣一個求助帖子,如果各位看到這樣的求助帖子,你會幫他嗎? 原帖地址http://bbs.cepark.com/thread-12622-1-1.html 為防止刷廣告的嫌疑,我將帖子內容和回復抓圖出來,大家看一下: …

查看全部問答∨

C51 I2C傳輸問題

我用89C51訪問24C02無反應. 24C02時鐘接P1.7,數據接P1.6,A0 A1 A2接地 執行函數:I2C_Write(0xA0,0x01,0);I2C_Read(0xA1,0x01,&c);都直接返回0 24C02.H #ifndef __24C02_H__ #define __24C02_H__ #ifndef uchar #define uchar unsigned char ...…

查看全部問答∨

PB 上好像有個功能,可以直接運行開發板上的程序(如MediaPlay), 請問在PB什么菜單下?

請問,在WinCE 上如何注冊組件(DLL)?(另一個程序要調用這個組件,不注冊, 沒法調用) PB 上好像有個功能,可以直接運行開發板上的程序(如MediaPlay), 請問在PB什么菜單下?…

查看全部問答∨

【招聘】高級電子工程師/高級硬件工程師

外企 地點 上海要求:本科以上學歷 5年以上經驗數電模電 有意向的站短我啊!!!! 速度! 歡迎自薦或者推薦! [ 本帖最后由 wendy123hello 于 2012-6-20 13:48 編輯 ]…

查看全部問答∨

請教一下啊,MSP430用什么軟件編程

剛接觸MSP430,也沒什么資料。請高手發一下MSP430的編程軟件和下載軟件,謝謝啦…

查看全部問答∨

~~~請問低頻信號疊加在直流系統,信號是怎么走呢?

請問一下,如果加一個低頻交流方波信號(大概正負三、四十伏)在一個直流高壓系統,低頻信號是怎么走的呢? 還有,以DGND為參考點,A、C點的電壓是交流信號的電壓吧? 希望哪位朋友指點一下,謝謝! [ 本帖最后由 alien_duck 于 2013-12-21 09:2 ...…

查看全部問答∨

CCS編譯程序問題。

初次使用,求助如何解決這個問題?…

查看全部問答∨

MXCHIP+體驗用戶程序下載

本帖最后由 木子魚 于 2014-11-18 15:45 編輯 第一種方法: 使用Boot下載用戶程序:    (根據用戶手冊操作:在Boot菜單選擇1,之后選擇Transfer  下拉菜單的 Send Ymodem ,在彈出菜單選擇要下載的    ***.bin 文 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 柘城县| 闵行区| 紫金县| 冀州市| 河东区| 扶风县| 太仆寺旗| 黄龙县| 田林县| 宜兰县| 周口市| 云梦县| 百色市| 晋宁县| 六盘水市| 亚东县| 贵州省| 蓬安县| 巫溪县| 红安县| 铁岭县| 曲周县| 凉山| 河西区| 道孚县| 丰城市| 台安县| 垦利县| 木兰县| 麻栗坡县| 班戈县| 福鼎市| 潞城市| 且末县| 宜州市| 安溪县| 涿州市| 尉氏县| 多伦县| 五家渠市| 平远县|