声明:1、我发布程序旨在希望大家蓝桥杯单片机比赛可以取得好成绩
2、在看我程序之前希望大家先去B站观看完小蜜蜂老师的蓝桥杯单片机视频讲解
小蜜蜂视频链接:【小蜜蜂笔记】蓝桥杯大赛-单片机设计与开发基础技能与进阶强化教程_哔哩哔哩_bilibili
本程序资源包采用第十三届蓝桥杯资源包
main.c
#include <reg52.h>
#include <ds1302.h>
#include <onewire.h>
sbit L1 = P0^0;
sbit S4 = P3^3;
sbit S5 = P3^2;
sbit S6 = P3^1;
sbit S7 = P3^0;
//变量区
float temp1;
signed char hour = 0;//时
signed char min = 0;//分
signed char sec = 0;//秒
unsigned char flag_s = 0;//设置时间标志位
unsigned char flag_t = 0;//闪灭标志位
unsigned char flag_LED1 = 0;//LED闪灭标志位
unsigned char flag_LED = 0;//LED标志位
unsigned char count0 = 0;//定时器0
unsigned char count1 = 0;//0.2s
unsigned int count2 = 0;
unsigned char state = 1;//界面标志位
unsigned char Write_DS1302_Addr[3] = {0x80,0x82,0x84};
unsigned char Read_DS1302_addr[3] = {0x81,0x83,0x85};
signed char Timer[3] = {0x50,0x59,0x23};
unsigned char SMG_val[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char temp;
//锁存器的选择
void SelectHC573(unsigned char channel)
{
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;
}
}
//数码管得选择
void Select_SMG(unsigned char pos,val)
{
SelectHC573(7);
P0 = 0xff;
SelectHC573(6);
P0 = 0x01 << pos;
SelectHC573(7);
P0 = val;
}
//关闭所有
void CloseAll()
{
SelectHC573(6);
P0 = 0xff;
SelectHC573(7);
P0 = 0xff;
}
//定时器0初始化
void Init_Timer0()
{
TMOD = 0x01;
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256;
ET0 = 1;
EA = 1;
TR0 = 1;
}
//定时器服务函数
void Service_T0() interrupt 1
{
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256;
count0 ++;
if(count0 =