[STC89C52RC]基于IIC协议的OLED显示字符

本文详细介绍了如何使用IIC协议通过STC89C52RC单片机驱动OLED显示屏,包括起始和终止信号、应答信号的产生,以及页模式、水平模式、垂直模式的选择,还有行数和列数的配置、清屏操作以及利用字模软件进行字符显示和图片显示的方法。
摘要由CSDN通过智能技术生成
IIC 协议
1.1 IIC 协议概述
IIC 全称 Inter-Integrated Circuit ( 集成电路总线 )
        是由PHILIPS 公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双工同步通信方式,速度约为10kb/s,IIC是一个多主从的串行总线(任意时刻只能有一个主机等特性),又叫I2C,属于半双工同步传输类型的总线; 它仅使用两条线就能完成多机通讯,一条SCL时钟线,另外一条双向数据线SDA。 SDA和SCK在空闲的时候要处于高电平状态,所以需要通过电阻上拉
        IIC总线标准模式下速度可以达到100Kb/s,快速模式下可以达到400Kb/s。IIC总线工作是按一定的协议来运行的。IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPI,IIC是支持多从机的,也就是一个IIC控制器下可以挂多个IIC从设备,这些不同的IIC从设备有不同的器件地址,这样IIC主控制器就可以通过IIC设备的器件地址访问指定的IIC设备了,一个IIC总线连接多个IIC设备如下图:

 

上图中SDA和SCL这两根线必须要接一个上接电阻,一般是4.7K。其余的IIC从器件都挂接到SDA和SCL这两根线上,这样就可以通过SDA和SCL这两根线来访问多个IIC设备。
通常我们为了方便把IIC设备分为主设备和从设备,基本上谁控制时钟线(即控制SCL的电平高低变换)谁就是主设备。

简单性和有效性。 由于接口直接在组件之上,因此IIC 总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降 低了互联成本。总线的长度可高达25 英尺,并且能够 10Kbps 的最大传输速率支持 40 个组件 多主控(multimastering) 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
构成
IIC 串行总线一般有两根信号线,一根是双向的数据线 SDA ,另一根是时钟线 SCL ,其时钟信号是由主控 器件产生。所有接到IIC 总线设备上的串行数据 SDA 都接到总线的 SDA 上,各设备的时钟线 SCL 接到总线 的SCL 上。对于并联在一条总线上的每个 IC 都有唯一的地址。
IIC 总线在传输数据的过程中一共有三种类型信号,分别为:开始信号、结束信号和应答信号。
起始位,停止位,数据位,速度
这些信号中,起始信号是必需的,结束信号和应答信号

起始信号

 分析虚线区间可得:要发送起始信号,首先SCL为高电平,SDA也为高电平,延时>4.7us,SDA被拉低,再延时>4.7us

void IIC_Start()
{
	SCL = 0;//防止雪花屏
	SDA = 1;
	SCL = 1;
	_nop_();
	SDA = 0;
	_nop_();
}

   终止信号

分析虚线区域可得 :要发送终止信号,SCL为高电平,SDA为低电平,延时>4.7us后,SDA被拉高,延时>4.7us

void IIC_Stop()
{
	SCL = 0;//防止雪花屏
	SDA = 0;
	SCL = 1;
	_nop_();
	SDA = 1;
	_nop_();
}

 应答信号

发送器每发送一个字节(8个 bit ),就在时钟脉冲 9 期间释放(SDA置1)数据线,由接收器反馈一个应答信号。 应答信号为低电平时,规定为有效应答位(ACK ,简称应答位),表示接收器已经成功地接收了该字节应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

 检查应答信号:首先再时钟脉冲9释放数据线即将SDA置1,SCL为低电平,延时几位秒拉高SCL,延时>4us,检测若SDA为低电平则为应答模式,SDA为高电平则为非应答模式

char IIC_ACK()
{
	char flag;
	SDA = 1;//就在时钟脉冲9期间释放数据线
    SCL = 0;
	_nop_();//约5us
	SCL = 1;
	_nop_();
	flag = SDA;//检测到底是0应答模式还是1非应答模式
	_nop_();
	SCL = 0;
	_nop_();
	return flag;
}

IIC发送数据分析

### 回答1: STC89C52是一款广泛应用的8位单片机,它具有丰富的外设资源。如果要驱动四脚IICOLED显示屏,可以按照以下步骤进行操作: 首先,需要连接STC89C52IIC总线引脚到OLED的SCL和SDA引脚上。SCL引脚用于时钟信号,SDA引脚用于数据信号传输。 在编程方面,需要引入IIC驱动库,例如使用STC官方提供的IIC库函数。 其次,通过相关的代码初始化IIC总线,在STC89C52的头文件中设置相应的寄存器和引脚。 然后,在主程序中编写具体的驱动代码。首先发送OLED显示屏的启动信号,然后通过IIC总线发送指令或数据到OLED屏幕。 在发送数据之前,需要将OLED屏幕的地址发送给IIC总线,可以通过手册或者规格表查找到正确的地址。 在发送指令或数据后,可以选择停止信号或继续发送其他指令或数据。 最后,在循环中不断地更新OLED屏幕的显示内容,可以通过设置每个像素点的亮度来显示文字、图形等。 需要注意的是,具体的驱动方法和代码可能会因为OLED屏幕的型号和制造商而有所不同,所以在编写代码之前,最好查看相关的开发文档和示例代码。 总之,通过STC89C52IIC总线和相应的驱动代码,可以成功驱动四脚IICOLED显示屏,并实现各种显示效果。 ### 回答2: STC89C52是一种常用的单片机,而IIC(Inter-Integrated Circuit)是一种串行总线通信协议,经常用于连接微控制器和外部设备。而OLED则是一种有机发光二极管显示技术,具有高对比度、快速响应和低功耗等特点。 要驱动四脚IICOLED,我们首先需要连接STC89C52OLED模块。在STC89C52上,我们需要配置IIC的引脚为SCL(时钟线)和SDA(数据线),然后将其分别连接到OLED模块的对应引脚。同时,还需要给OLED模块供电。 接下来,需要编写程序来控制STC89C52通过IIC协议OLED进行通信。首先,我们需要通过IIC协议发送控制指令给OLED,包括设置OLED对应的初始化参数和显示选项等。然后,我们可以通过IIC协议发送数据给OLED,实现想要显示的内容,比如文字、图形等。 具体操作过程如下: 1. 配置STC89C52的引脚为IIC功能,并初始化IIC协议。 2. 配置OLED模块,并发送初始化参数和显示选项给OLED。 3. 根据需求,通过IIC协议OLED发送需要显示的数据。 4. 刷新屏幕,使得OLED显示更新的内容。 通过以上步骤,我们可以实现STC89C52对四脚IICOLED的驱动。随着技术的发展,OLED显示技术在各个领域得到广泛应用,比如智能手表、智能手机等。通过掌握STC89C52IIC协议的应用,我们可以开发出更多有创意和实用性的应用。 ### 回答3: STC89C52是一种51系列的单片机,它可以通过I2C(Inter-Integrated Circuit,即IIC)总线驱动OLED(Organic Light-Emitting Diode)显示屏。 首先,我们需要将STC89C52OLED之间建立有效的I2C通信连接。STC89C52的硬件I2C模块包含SCL(时钟线)和SDA(数据线)两条线路,用于与OLED进行通信。 我们需要先配置STC89C52的I2C模块。通过设置合适的寄存器值,我们可以指定I2C总线的速度、从机地址等参数。然后,我们设计算法来发送数据和命令,实现向OLED发送显示内容。 接下来,将STM89C52连接到OLED的SCL和SDA引脚。SCL与OLED的时钟引脚连接,SDA与OLED的数据引脚连接。这样,STC89C52就可以通过I2C总线与OLED进行通信了。 然后,我们需要编写相应的程序代码来控制STC89C52。通过调用正确的库函数,我们可以发送命令和数据给OLED。例如,我们可以使用库函数向OLED发送显示文本、图像等。 最后,我们需要调试和测试我们的代码。通过在STC89C52上加载程序,并观察OLED是否正确显示内容,我们可以验证驱动是否成功。如果有任何问题,则需要检查硬件连线和程序代码,并进行适当的调整。 总之,通过合理配置STC89C52的I2C模块并编写适当的代码,我们可以顺利驱动四脚I2C的OLED显示屏。这样,我们就可以在STC89C52上通过I2C总线实现图形和文本的显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值