| 
				打卡等级:以坛为家III打卡总天数:657最近打卡:2025-10-31 08:27:32   荣誉版主 
 
	积分4469 
 | 
 
 发表于 2024-5-31 13:47:52
|
显示全部楼层 
| 
 不是这句.  这是宏定义, 原文是这样的吧?
 
 #define OLED_CMD   0                                                //写命令
 #define OLED_DATA 1                                                //写数据
 
 宏定义的作用是用比较好理解和记忆的用词来代替一些(不太好记忆的、枯燥的、意义不明确的)变量或数值.
 比如有了上述定义后,
 凡是用"OLED_CMD"的地方,  就代表是用数值0;
 凡是用"OLED_DATA"的地方,就代表是用数值1;
 
 关于写字节数的函数OLED_WR_Byte(); 是 oled.c文件中的那个语句..
 原文是这样的:  (网上流传的)
 //========================================================================
 // 函数名称: OLED_WR_Byte
 // 函数功能: OLED地址/数据写入函数
 // 入口参数: @dat:数据    @cmd:命令
 // 函数返回: 无
 // 当前版本: VER1.0
 // 修改日期: 2023 - 6 - 7
 // 当前作者: ZCF
 // 其他备注:
 //========================================================================
 void OLED_WR_Byte(u8 dat,u8 cmd)
 {
 u8 udat[1] ;
 udat[0] = dat;
 if( cmd==1 )
 IIC_Write_NByte(0X78,0x40,udat,1);
 else
 IIC_Write_NByte(0X78,0x00,udat,1);
 }
 
 你看它的位置就是写在延时函数之后, 其它函数之前的, 这样其它函数就可直接调用... 而不一定必须要在头文件中申明的.
 
 这函数的第一个参数dat就是表示所要写入的字节数字,
 第二个参数cmd就是表示所写的是命令呢还是一个数值,是一个标识字。
 当写作"OLED_CMD"时,   其实就是0, 代表第一参数写的是"命令",
 
 当写作"OLED_DATA"时, 其实就是1, 代表第一参数写的是"数值",
 
 
 有的地方写 "OLED_CMD"    就是告诉OLED显示屏, 第一参数dat这是指令, 要执行某个动作了...
 
 有的地方写 "OLED_DATA", 就是告诉OLED显示屏, 第一参数dat这是数据, 要写入是数据了...
 比如后边OLED_BuffShow()函数, 就用到了"OLED_DATA"。
 
 
 
 
 // 入口参数: @dat:数据    @cmd:命令
 
 这样的写法,可能会使初学者不太好理解.....
 
 
 | 
 |