
各模块详细分析
1. main.c
- 作用:程序的入口文件,负责系统的初始化和主循环的运行。在初始化阶段,调用
Init_System函数对系统进行初始化,包括关闭无关外设、点亮特定 LED、读取一次温度数据等操作。在主循环中,不断调用DisplaySMG_Info函数显示信息、Running_Mode函数执行工作模式逻辑、DS18B20_Read函数读取温度数据、Scan_Keys函数扫描按键。
- 与其他模块的配合:
- 调用
Init_System函数进行系统初始化,该函数在main.c文件中定义。
- 调用
DisplaySMG_Info函数显示信息,该函数在Nixie.c文件中定义。
- 调用
Running_Mode函数执行工作模式逻辑,该函数在PCF8591.c文件中定义。
- 调用
DS18B20_Read函数读取温度数据,该函数在DS18B20.c文件中定义。
- 调用
Scan_Keys函数扫描按键,该函数在Keys.c文件中定义。
void main()
{
Init_System();
while(1)
{
DisplaySMG_Info();
Running_Mode();
DS18B20_Read();
Scan_Keys();
}
}
2. HC573.c 和 HC573.h
- 作用:这两个文件主要实现了对 74HC573 锁存器的控制。
Select_HC573函数根据传入的通道号和数据,通过设置 P2 口的状态来选择不同的锁存器通道,并将数据写入 P0 口。
- 与其他模块的配合:
- 在
Nixie.c文件中,DisplaySMG_ALL和DisplaySMG_Bit函数调用Select_HC573函数来控制数码管的显示。
- 在
main.c文件的Init_System函数中,调用Select_HC573函数来初始化 LED 和其他外设。
void Select_HC573(unsigned char channel,unsigned char dat)
{
P2=(P2&0x1f)|0x00;
P0=dat;
switch(channel)
{
case 4:
P2=(P2&0x1f)|0x80;
break;
case 5:
P2=(P2&0x1f)|0xa0;
break;
case 6:
P2=(P2&0x1f)|0xc0;
break;
case 7:
P2=(P2&0x1f)|0xe0;
break;
case 0:
P2=(P2&0x1f)|0x00;
break;
}
P2=(P2&0x1f)|0x00;
}