【蓝桥杯单片机】第十二届省赛(原创解答代码)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值