51单片机_OLED写入指令

void Oled_Write_Cmd(char Data_cmd)
{
	IIC_start();
	IIC_Send_Byte(0x78);        //写入从机地址
	IIC_ACK();
	IIC_Send_Byte(0x00);        //写指令
	IIC_ACK();
	IIC_Send_Byte(Data_cmd);
	IIC_ACK();
	IIC_stop();
} 

void Oled_Write_Data(char Data_Data)
{
	IIC_start();
	IIC_Send_Byte(0x78);
	IIC_ACK();
	IIC_Send_Byte(0x40);
	IIC_ACK();
	IIC_Send_Byte(Data_Data);
	IIC_ACK();
	IIC_stop();
}

要用51单片机和DS18B20温度传感器来控制OLED显示屏,可以按照以下步骤进行: 1.连接DS18B20温度传感器和OLED显示屏到51单片机上。连接方式可以参考相应的连接图。 2.编写程序来读取DS18B20温度传感器的温度值,并将其显示到OLED显示屏上。你可以使用51单片机的C语言编程来实现这个过程。 3.为了显示温度值,你需要使用OLED显示屏的库。你可以使用现成的库,也可以自己编写。如果你使用现成的库,则需要将其引入到你的程序中,并按照库的使用方法来调用相应的函数。 4.最后,将程序下载到51单片机中,并将其连接到DS18B20温度传感器和OLED显示屏上。打开电源,你就可以看到OLED显示屏上显示的温度值了。 下面是一个简单的示例程序来读取DS18B20温度传感器的温度值,并将其显示到OLED显示屏上: ``` #include <reg51.h> // 51单片机头文件 #include "oled.h" // OLED显示屏库头文件 sbit DQ=P3^7; // DS18B20温度传感器引脚 void delay_us(unsigned int us) // 延时函数,单位微秒 { while(us--); } void delay_ms(unsigned int ms) // 延时函数,单位毫秒 { while(ms--) { delay_us(1000); } } void ds18b20_init() // DS18B20温度传感器初始化函数 { DQ=1; // 把DQ拉高 delay_us(2); // 延时2微秒 DQ=0; // 把DQ拉低 delay_us(500); // 延时500微秒 DQ=1; // 把DQ拉高 delay_us(60); // 延时60微秒 } void ds18b20_write(unsigned char dat) // DS18B20温度传感器写数据函数 { unsigned char i; for(i=0;i<8;i++) { DQ=0; // 把DQ拉低 delay_us(2); // 延时2微秒 DQ=dat&0x01; // 把最低位写入DQ delay_us(60); // 延时60微秒 DQ=1; // 把DQ拉高 dat>>=1; // 准备写入下一位数据 } } unsigned char ds18b20_read() // DS18B20温度传感器读数据函数 { unsigned char i,dat=0; for(i=0;i<8;i++) { DQ=0; // 把DQ拉低 delay_us(2); // 延时2微秒 DQ=1; // 把DQ拉高 delay_us(2); // 延时2微秒 dat>>=1; // 准备读取下一位数据 if(DQ) // 如果读到1 { dat|=0x80; // 把最高位设为1 } delay_us(60); // 延时60微秒 } return dat; } void main() { unsigned char th,tl; // 存储温度值的高字节和低字节 unsigned int temp; // 存储温度值的整数部分 unsigned char dec; // 存储温度值的小数部分 oled_init(); // OLED显示屏初始化 while(1) { ds18b20_init(); // DS18B20温度传感器初始化 ds18b20_write(0xcc); // 跳过ROM操作指令 ds18b20_write(0x44); // 温度转换指令 delay_ms(750); // 等待温度转换完成 ds18b20_init(); // DS18B20温度传感器初始化 ds18b20_write(0xcc); // 跳过ROM操作指令 ds18b20_write(0xbe); // 读温度值指令 tl=ds18b20_read(); // 读取温度值的低字节 th=ds18b20_read(); // 读取温度值的高字节 temp=(th<<8)|tl; // 计算温度值的整数部分 dec=temp%16*625/100; // 计算温度值的小数部分 temp=temp/16; // 计算温度值的整数部分 oled_clear(); // 清屏 oled_puts("Temp:"); // 显示温度值的标签 oled_putc(temp/100+'0'); // 显示温度值的百位数字 oled_putc(temp%100/10+'0'); // 显示温度值的十位数字 oled_putc('.'); // 显示小数点 oled_putc(dec/10+'0'); // 显示温度值的小数部分的十位数字 oled_putc(dec%10+'0'); // 显示温度值的小数部分的个位数字 delay_ms(1000); // 延时1000毫秒 } } ``` 注意:以上代码只是一个示例程序,需要根据具体的硬件连接和库的使用方法进行修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值