uint8_t DIS_Play_dat[][32]= { {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",0*/ {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",1*/ {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",2*/ {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",3*/ {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",4*/ {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",5*/ {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",6*/ {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",7*/ {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",8*/ {0x00,0xFD,0x00,0x80,0x01,0x80,0xFF,0x80,0x01,0x80,0x00,0x70,0x11,0x88,0x11,0x88,0xFF,0x00,0x1F,0x06,0x80,0x01,0x80,0x06,0x1F,0x00,0x81,0x42,0x3C,0x3C,0x42,0x81},/*"?????",9*/ }; //¶ÔÏÔʾ×Ö·ûÖ¸¶¨ÑÕÉ« //Num£ºÐèÒªÏÔʾÄÚÈÝ //color£ºÑÕÉ« void DIS_Num(uint8_t Num,uint32_t color) { uint8_t sec=0,k=0,n; for(sec=0;sec<32;sec++) { k=DIS_Play_dat[Num][sec]; for(n=0;n<8;n++) { if(k>>7) { SPI_Send24Bit(color); } else { SPI_Send24Bit(0x000000); } k=k<<1; } } }
时间: 2023-09-27 14:12:48 浏览: 97
这段代码是用于在显示屏上显示数字的函数,使用了一个二维数组 `DIS_Play_dat` 存储数字的显示信息。`Num` 参数指定要显示的数字,`color` 参数指定显示的颜色。该函数使用 SPI 接口将颜色信息发送到显示屏上。具体来说,它通过循环遍历 `DIS_Play_dat` 数组中对应数字的每一行数据,并将每个像素的颜色信息逐个发送到显示屏上,以达到显示数字的效果。
相关问题
uint8_t status_read_data = 0x00;和uint16_t status_read_data = 0x00;的区别
`uint8_t` 和 `uint16_t` 是两种不同类型的无符号整数,分别代表8位和16位。它们之间的区别在于存储空间、取值范围和精度:
1. 存储空间:`uint8_t` 占用1字节(8位),而 `uint16_t` 占用2字节(16位)。这意味着 `uint16_t` 比 `uint8_t` 可以存储更多的信息。
2. 取值范围:对于8位的 `uint8_t`,最大值是 0xFF,等于二进制的11111111;而对于16位的 `uint16_t`,最大值是 0xFFFF,等于二进制的1111111111111111。因此,`uint16_t` 的数值范围大约是 `uint8_t` 的两倍。
3. 精度:由于 `uint16_t` 的位数更多,所以在处理需要高精度的数据时,如表示更大数值或更精确的小数值,通常会选用 `uint16_t`。
在示例代码中:
```c
uint8_t status_read_data = 0x00; // 用于存储单个字节的数据,例如一个标志位或者状态码
uint16_t status_read_data = 0x00; // 如果需要存储更大的数值,比如某个读取操作的结果,或者更复杂的组合数据
```
如果仅仅是一个简单的状态读取结果,0x00对两者都足够,但如果后续需要进行数值运算或扩展,选择合适的类型至关重要。
const uint8 ModbusFunc_ReadCoilStatus = 0x01; const uint8 ModbusFunc_ReadInputStatus = 0x02; const uint8 ModbusFunc_ReadHoldReg = 0x03; const uint8 ModbusFunc_ReadInputReg = 0x04; const uint8 ModbusFunc_ForceSigCoil = 0x05; const uint8 ModbusFunc_PresetSigReg = 0x06; const uint8 ModbusFunc_ReadExcptStatus = 0x07; const uint8 ModbusFunc_FetchEventCount = 0x0B; const uint8 ModbusFunc_FetchEventLog = 0x0C; const uint8 ModbusFunc_ForceMtlCoil = 0x0F; const uint8 ModbusFunc_PresetMtlReg = 0x10; const uint8 ModbusFunc_ReportSlaveId = 0x11; const uint8 ModbusFunc_ReadGeneralRef = 0x14; const uint8 ModbusFunc_WriteGeneralRef = 0x15; const uint8 ModbusFunc_MaskWrite4XReg = 0x16; const uint8 ModbusFunc_ReadWrite4XReg = 0x17; const uint8 ModbusFunc_ReadFifoQueue = 0x18;
这段代码定义了一系列常量,用于表示 Modbus 协议中不同功能码的含义。
这些常量的命名方式为 `ModbusFunc_XXX`,其中 `XXX` 表示相应的功能名称。
以下是每个常量及其对应的功能码:
- `ModbusFunc_ReadCoilStatus`:读线圈状态,功能码为 `0x01`。
- `ModbusFunc_ReadInputStatus`:读输入状态,功能码为 `0x02`。
- `ModbusFunc_ReadHoldReg`:读保持寄存器,功能码为 `0x03`。
- `ModbusFunc_ReadInputReg`:读输入寄存器,功能码为 `0x04`。
- `ModbusFunc_ForceSigCoil`:写单个线圈,功能码为 `0x05`。
- `ModbusFunc_PresetSigReg`:写单个保持寄存器,功能码为 `0x06`。
- `ModbusFunc_ReadExcptStatus`:读异常状态,功能码为 `0x07`。
- `ModbusFunc_FetchEventCount`:读事件计数,功能码为 `0x0B`。
- `ModbusFunc_FetchEventLog`:读事件日志,功能码为 `0x0C`。
- `ModbusFunc_ForceMtlCoil`:写多个线圈,功能码为 `0x0F`。
- `ModbusFunc_PresetMtlReg`:写多个保持寄存器,功能码为 `0x10`。
- `ModbusFunc_ReportSlaveId`:报告从设备 ID,功能码为 `0x11`。
- `ModbusFunc_ReadGeneralRef`:读通用参考,功能码为 `0x14`。
- `ModbusFunc_WriteGeneralRef`:写通用参考,功能码为 `0x15`。
- `ModbusFunc_MaskWrite4XReg`:屏蔽写多个寄存器,功能码为 `0x16`。
- `ModbusFunc_ReadWrite4XReg`:读写多个寄存器,功能码为 `0x17`。
- `ModbusFunc_ReadFifoQueue`:读 FIFO 队列,功能码为 `0x18`。
这些常量可以用于识别和处理 Modbus 协议中不同类型的功能。根据实际需求,可以使用相应的常量来指定所需的功能。
阅读全文