3本人参加15届蓝桥杯单片机组,目前仍然在学习,关于第12届省赛这是我写的解答代码,欢迎大家评论区指正。
学习于小蜜蜂老师
1.主函数(main.c)
#include "reg52.h"
#include "onewire.h"
#include "smgh.h"
#include "iic.h"
sfr P4=0xC0;
sbit R1=P3^0;
sbit R2=P3^1;
sbit R3=P3^2;
sbit R4=P3^3;
sbit C1=P4^4;
sbit C2=P4^2;
sbit C3=P3^5;
sbit C4=P3^4;
float get_DS18B20=0;
unsigned int smg_DS18B20=0;
unsigned char mode=1;
unsigned char x_mode=1;
unsigned char hot=25;
unsigned int smg_v=0;
void DA_Write(unsigned char dat)
{
IIC_Start();
IIC_SendByte(0x90); //PCF8591的写设备地址
IIC_WaitAck();
IIC_SendByte(0x41); //输出DAC,转换AIN3
IIC_WaitAck();
IIC_SendByte(dat); //设置DAC电压输出参数
IIC_WaitAck(); //产生非应答信号
IIC_Stop();
}
void Display()
{
switch(mode)
{
case 1:
smg_DS18B20=get_DS18B20*100;
DisplaySMG_Bit(0,0xc6);
DisplaySMG_Bit(4,SMGNoDot_CA[smg_DS18B20/1000]);
DisplaySMG_Bit(5,SMGDot_CA[smg_DS18B20/100%10]);
DisplaySMG_Bit(6,SMGNoDot_CA[smg_DS18B20/10%10]);
DisplaySMG_Bit(7,SMGNoDot_CA[smg_DS18B20%10]);
select573(4,0xfd);
break;
case 2:
smg_DS18B20=get_DS18B20*10;
DisplaySMG_Bit(0,0x8c);
DisplaySMG_Bit(6,SMGNoDot_CA[hot/10]);
DisplaySMG_Bit(7,SMGNoDot_CA[hot%10]);
select573(4,0xfb);
break;
case 3:
smg_DS18B20=get_DS18B20*100;
switch(x_mode)
{
case 1:
if(smg_DS18B20<hot*100)
{
DA_Write(0);
DisplaySMG_Bit(0,0x88);
DisplaySMG_Bit(5,SMGDot_CA[0]);
DisplaySMG_Bit(6,SMGNoDot_CA[0]);
DisplaySMG_Bit(7,SMGNoDot_CA[0]);
}
else i

最低0.47元/天 解锁文章
1279

被折叠的 条评论
为什么被折叠?



