日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言对字库的查找程序,把已经调好的GT20L16S1Y字库芯片C语言驱动代码分享给大家。...

發(fā)布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言对字库的查找程序,把已经调好的GT20L16S1Y字库芯片C语言驱动代码分享给大家。... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#include??"stm8s.h"

#include "GT20L16S1Y.h"

#include "delay.h"

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

*??函數(shù)名稱:SPI0_clear

*??函數(shù)功能:清除SPI總線狀態(tài)

*??入口參數(shù):無

*??出口參數(shù):無

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

void SPI0_clear(void)

{

SPI0_CS_ON();? ? //拉高

SPI0_SCLK_ON();??//拉高

SPI0_MOSI_ON();??//拉高

}

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

*??函數(shù)名稱:SPI0_readByte

*??函數(shù)功能:SPI0讀取一個字節(jié)數(shù)據(jù)

*??入口參數(shù):無

*??出口參數(shù):unsigned char

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

unsigned char SPI0_readByte(void)

{

unsigned char??i;

unsigned char??dat;

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

{

dat <<= 1;

SPI0_SCLK_OFF();? ?? ?? ? //下降沿,MISO字庫芯片移出一個bit

if(GPIO_ReadInputPin(GPIOB,GPIO_PIN_1)!= 0)

{

dat |= 0x01;

}

else

{

dat |= 0x00;

}

delay(1);

SPI0_SCLK_ON();

delay(1);

}

return dat;

}

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

*??函數(shù)名稱:SPI0_writeByte

*??函數(shù)功能:SPI0寫出一個字節(jié)數(shù)據(jù)

*??入口參數(shù):unsigned char

*??出口參數(shù):無

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

void SPI0_writeByte(unsigned char dat)

{

unsigned char i;

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

{

SPI0_SCLK_OFF();

if(dat & 0x80)

{

SPI0_MOSI_ON();

}

else

{

SPI0_MOSI_OFF();

}

dat <<= 1;

delay(1);

SPI0_SCLK_ON();? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//上升沿,MOSI字庫芯片移入一個bit

delay(1);

}

}

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

*??函數(shù)名稱:WORDLIB_read_ASCII_8x16

*??函數(shù)功能:讀取字庫芯片中一個ASCII字符的8x16點陣編碼

*??入口參數(shù):ASCIICode,ASCII碼;buffer,點陣編碼的緩沖區(qū);

buffer必須大于等于16個字節(jié)。

*??出口參數(shù):無

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

void WORDLIB_read_ASCII_8x16(unsigned int ASCIICode,unsigned char *buffer)

{

unsigned long BaseAddr? ?? ???= 0x3b7c0;? ???//8x16點陣的起始地址,見手冊《GT23L32S4W用戶手冊》

unsigned long WordAddr? ?? ???= 0;? ?? ?? ?? ???//ASCII字符點陣在芯片中的字節(jié)地址

unsigned long ASCIICodeTemp? ?=0;

const unsigned int BUFSIZE? ? = 16;? ?? ???//緩沖區(qū)的大小

unsigned char??i;

ASCIICodeTemp=ASCIICode&0xff;

//計算地址,見手冊《GT20L16S1Y用戶手冊》

if((ASCIICodeTemp >= 0x20) && (ASCIICodeTemp <= 0x7E))

{

WordAddr? ?? ???= (ASCIICodeTemp - 0x20) * BUFSIZE + BaseAddr;

}

SPI0_clear();? ?? ?? ???//清除SPI總線

delay(1);

//開始快速讀取點陣數(shù)據(jù):Read Data Bytes At Higher Speed

SPI0_CS_OFF();

delay(1);

SPI0_writeByte(0x0b);??//發(fā)送命令字:0x0B

SPI0_writeByte((WordAddr >> 16) & 0xff);? ? //從高到低,依次發(fā)送三個字節(jié)的地址

SPI0_writeByte((WordAddr >> 8) & 0xff);

SPI0_writeByte(WordAddr & 0xff);

SPI0_writeByte(0xff);? ?? ?? ???//最后發(fā)送一個字節(jié)的假數(shù)據(jù) Dummy Byte

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

{

*(buffer + i)? ?? ???= SPI0_readByte();? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //讀取字庫芯片發(fā)送過來的點陣編碼

}

SPI0_CS_ON();? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//CS置高,結(jié)束本次操作

delay(1);

SPI0_clear();? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //清除SPI總線

delay(1);

}

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

*??函數(shù)名稱:WORDLIB_read_GB_16x16

*??函數(shù)功能:讀取字庫芯片中一個國標(biāo)漢字的16x16點陣編碼

*??入口參數(shù):GBCode,漢字內(nèi)碼;buffer,點陣編碼的緩沖區(qū);

buffer必須大于等于32個字節(jié)。

*??出口參數(shù):無

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

void WORDLIB_read_GB_16x16(unsigned int GBCode, unsigned char??*buffer)

{

unsigned long BaseAddr? ?? ???= 0;? ?? ? //16x16點陣的起始地址,見手冊《GT20L16S1Y用戶手冊》

unsigned long GBCode_MSB? ?? ???= 0;? ?//漢字內(nèi)碼的高八位

unsigned long GBCode_LSB? ?? ???= 0;? ?? ?? ?//漢字內(nèi)碼的低八位

unsigned long WordAddr? ?? ???= 0;? ?? ?? ?? ?? ?? ?? ? //漢字或者ASCII字符點陣在芯片中的字節(jié)地址

const unsigned char BUFSIZE? ?? ???= 32;? ?? ?? ?? ???//緩沖區(qū)的大小

unsigned char? ?i;

GBCode_MSB? ?? ???= (GBCode >> 8) & 0xFF;? ?//漢字內(nèi)碼的高八位

GBCode_LSB? ?? ???= GBCode & 0xFF;? ?? ?? ?//漢字內(nèi)碼的低八位

//計算地址,見手冊《GT20L16S1Y用戶手冊》

if(GBCode_MSB == 0xA9&& GBCode_LSB >= 0xA1)

{

WordAddr? ?? ???= (282+(GBCode_LSB-0xA1))*32+ BaseAddr;

}

else if(GBCode_MSB >= 0xA1&&GBCode_MSB <= 0xA3&& GBCode_LSB >= 0xA1)

{

WordAddr? ?? ???= (GBCode_MSB-0xA1)*94+(GBCode_LSB-0xA1)*32+ BaseAddr;

}

else if(GBCode_MSB >= 0xB0&&GBCode_MSB <= 0xF7&& GBCode_LSB >= 0xA1)

{

WordAddr? ?? ???= ((GBCode_MSB-0xB0)*94+(GBCode_LSB-0xA1)+846)*32+ BaseAddr;

}

SPI0_clear();? ?? ?? ???//清除SPI總線

delay(1);

//開始快速讀取點陣數(shù)據(jù):Read Data Bytes At Higher Speed

SPI0_CS_OFF();

delay(1);

SPI0_writeByte(0x0B);? ?? ?? ?? ?? ?? ?? ? //發(fā)送命令字:0x0B

SPI0_writeByte((WordAddr >> 16) & 0xff);? ? //從高到低,依次發(fā)送三個字節(jié)的地址

SPI0_writeByte((WordAddr >> 8) & 0xff);

SPI0_writeByte(WordAddr & 0xff);

SPI0_writeByte(0xff);? ?? ?? ?? ?? ?//最后發(fā)送一個字節(jié)的假數(shù)據(jù) Dummy Byte

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

{

*(buffer + i)? ?? ???= SPI0_readByte();? ? //讀取字庫芯片發(fā)送過來的點陣編碼

}

SPI0_CS_ON();? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//CS置高,結(jié)束本次操作

delay(1);

SPI0_clear();? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //清除SPI總線

delay(1);

}

總結(jié)

以上是生活随笔為你收集整理的c语言对字库的查找程序,把已经调好的GT20L16S1Y字库芯片C语言驱动代码分享给大家。...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。