这两天闲来无事,买了个OLED12864玩玩,商家提供了一个驱动,但不好用,自己改编了一下,重写了80%以上的代码,好用多了,发给大家参考一下.先发图
显示不同大小的汉字,12x12行楷和24x24新魏
ASCII字串和10位以内的任意数字
汉字和ASCII,汉字为16x16楷体,ASCII为6x8小号字
原驱动中的位图,不过我是用我的通用字块写入程序写入的
/****************************************************************
函数功能: 通用NxM规格的字块或图块显示函数
说 明: 用于显示一个0~7行0~128列的字块或图块
比如6x8 8x16 24x24 32x32等等,
也可显示一个64x128的全屏图像
入口参数: x 起始列位置,0~128
y 超始位位置,0~7
M 字体点阵行规格1~64, 6,8,16,24等等
N 字体点阵列规格1~128,8,16,24,128等等
*po 要显示的字块或图块对应代码库中的首地址
出口参数: 无
*****************************************************************/
void OLED_NxM_char(unsigned char x, y,N,M,unsigned char *p)
{
unsigned char i,j,page;
page= (M+5) / 8; //计算行规格占用的行(页)数,点阵规格与显示规格不一样
for(j=0;j<page;j++) //行循环,例如8x16字块占2行,循环2次.6x8占1行,循环1次
{
OLED_Set_Pos(x , y+j); //换行
for(i=0;i<N;i++) //列循环,每字每行要写的列数
{
OLED_WrDat(p[i+N*j]); //计算每行每列数据地址,写入显存
}
}
}
每个函数都有很详细的注解,很适合入门者
第一次发贴,请多包涵
附源程序:
OLCD12864.zip
(100.64 KB, 下载次数: 320)
附件发了吗??
|