原子哥 OLED显示实验笔记

本人小白 有什么错误多多指教

OLED 8080 并行接口信号线说明

片选信号就是选用一个或某一个集成电路芯片时使用的信号。

有很多芯片挂在同一总线上(像电脑里很多外设都是挂在总线上),但我们有时候需要对其中特定的某个芯片进行数据、地址或命令的独立传输,此时,我们需要有一个信号来告诉挂在总线上的芯片们,这些数据、地址是传给哪个芯片的。这样,其他芯片就会对这些信号没有反应,而目标芯片就知道这些数据是传给自己的从而做出反应。这个信号就叫做片选信号CS

向OLED写数据用WR 向OLED读数据用RD  不管输出还是输出数据口就是8为的D0:D7  RET复位 

向OLED读写数据的时候 数据有可能是命令也可能是数据 通过DC来区分

OLED8080并口读写过程

 DC为高为数据 DC为低则命令 然后拉低片选

写数据时RD为高 WR先低电平再高电平 在WR从低变化到高的上升沿写入数据 

写完数据后再拉高片选

//向SSD1306写入一个字节。
//dat:要写入的数据/命令
//cmd:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat,u8 cmd)
{
	DATAOUT(dat);	    
 	OLED_RS=cmd;
	OLED_CS=0;	 //片选信号拉低 
	OLED_WR=0;	 //WR为0
	OLED_WR=1;   //WR为1
	OLED_CS=1;	 //片选信号拉高
	OLED_RS=1;	 //RS为高电平
} 

OLED程序显示原理

 一共有128*64个bit  将其分为8页 每页就是128*8bit 一个字节是8bit 那么每页就是128个字节

 即定义了一个128*8的二维数组 每一次修改就修改这个缓存 修改完之后再一次性写入到OLED的GRAM OLED就更新显示

 

序号0的命令是设置对比度的包含两个字节 第一个就是发送0X81确定它是一个命令 然后紧跟一个八位的数据设置它的对比度

序号1命令 显示开关 开/关OLED

序号2命令 电荷泵的设置

序号3命令 设置页地址 在写入时要设置写入哪个页地址 高5位是固定的 低三位用来设置需要写的页地址数(一共就八页) 如果写页0 那么命令就是10110 000

假如写页码4 那么这一页有128列 8行 页地址确定了那么写那一列呢 命令4负责先试试页地址起始列的低四位 命令5负责页地址起始列的高四位

更新缓存函数

将要输入的字符一次性输入到OLED的GREAM寄存器之中的过程

 首先0~8页 一页一页的更新 每一页为128列 8行 

设置低四位列地址和高四位列地址

随后128列 一列一列将信息导入进去

void OLED_Refresh_Gram(void)
{
	u8 i,n;		    
	for(i=0;i<8;i++)  
	{  
		OLED_WR_Byte (0xb0+i,OLED_CMD);    //设置页地址(0~7)
		OLED_WR_Byte (0x00,OLED_CMD);      //设置显示位置—列低地址
		OLED_WR_Byte (0x10,OLED_CMD);      //设置显示位置—列高地址   
		for(n=0;n<128;n++)OLED_WR_Byte(OLED_GRAM[n][i],OLED_DATA); 
	}   
}

OLED画点函数

void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
	u8 pos,bx,temp=0;
	if(x>127||y>63)return;//超出范围了.
	pos=7-y/8;
	bx=y%8;
	temp=1<<(7-bx);
	if(t)OLED_GRAM[x][pos]|=temp;
	else OLED_GRAM[x][pos]&=~temp;	    
}

这个函数的前两个是坐标,第三个参数表示点亮与否,x:表示从0-127的列坐标,y:表示从0-63的行坐标 t=0为点亮

将其看为一个大的xy直角坐标系 列为横坐标 x的范围为0~127 行纵坐标有8页每页8行 y的范围为0~64,从高到低对应行数从小到大

如果X=100 Y=29 T=0那么就是在(100,29)这个坐标点亮   

(7-29/8)得到的整数pos表示此坐标在第几页,(7-bx)得到的在第几行,temp表示将1左移(7-bx)行 等于将第(7-bx)行点亮

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值