基于stc15f2k60s2芯片单片机编程(蓝桥杯十一届国赛题)

本文详细介绍了如何使用STC15F2K60S2单片机进行编程,涉及的主要文件包括main.c、juzhen.c、ds1302.c等,涵盖了矩阵运算、DS1302实时时钟和1-Wire协议的实现,结合IIC通信协议,提供了一套完整的蓝桥杯十一届国赛解决方案。
摘要由CSDN通过智能技术生成

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

main.c

#include <stc15f2k60s2.h>
#include <juzhen.h>
#include "ds1302.h"
#include "onewire.h"
#include "iic.h"
unsigned char display[]={
   0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char smg[]={
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int wendu;//温度的值
unsigned int guang;//光敏的值
unsigned char shi=17,wen=25,deng=4;//参数变量
unsigned char led[]={
   0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED亮的位置
unsigned char l1=0xff,l2=0xff,l3=0xff,l4=0xff,l5=0xff,l6=0xff,l7=0xff,l8=0xff;

bit an;//亮暗状态
void panduan();//判断时间跟温度
void liang_led();//亮LED
void Timer0Init();
void Delay750ms();	
void xianshi();

void main()
{
   
	DS_init();
	Timer0Init();EA=1;ET0=1;
	P2=P2&0X1F|0XA0;P0=0X00;P2&=0X1f;
	P2=P2&0X1F|0X80;P0=0XFF;P2&=0X1F;
	wendu=readtemp();Delay750ms();	
	while(1)
	{
   		
		DS_get();
		wendu=readtemp();
		guang=AD_read(0x41);
			if(guang>0x32)//亮状态
			{
   
				an=0;
			}
			else
			{
   
				an=1;
			}	
		panduan();
		liang_led();
		anjian();
		P2=P2&0X1F|0X80;P0=0xff&l8&l7&l6&l5&l4&l3&l1&l2;P2&=0X1F;
		xianshi();
		if(shi>23)shi=0;
		if(wen>99)wen=0;if(wen<=0)wen=0;
		if(deng>8)deng=4;if(deng<=4)deng=4;
	}
}

void panduan()
{
   
	if(((TIME[2]/16>=shi/10)&(TIME[2]%16>=shi%10)&(TIME[3]==0X01))|(((TIME[2]%16)<=0x08)&(TIME[3]==0X02)))
	{
   //时间在今天设定值以后,或第二天八点之前
		l1=0xfe;
	}
	else
	{
   
		l1=0xff;
	}
	if(wendu<wen*100)
	{
   
		l2=0xfd;
	}
	else
	{
   
		l2=0xff;
	}
	
}

void liang_led()
{
   
	if(an==1)//光敏变暗时
	{
   
		if(deng==4){
   l4=0xf7;l5=l6=l7=l8=0xff;}
		if(deng==5){
   l5=0xef;l4=l6=l7=l8=0xff;}
		if(deng==6){
   l6=0xdf;l5=l4=l7=l8=0xff;}
		if(deng==7){
   l7=0xbf;l5=l6=l4=l8=0xff;}
		if(deng==8){
   l8=0x7f;l5=l6=l7=l4=0xff;}
		
	}
	if(an==0)
	{
   
		l8=l4=l5=l6=l7=0xff;
	}

}



void xianshi()
{
   
	if(shu==0)//数据界面
	{
   
		qie_c=0;
		if(qie_s==0)//时钟数据
		{
   
			
			display[0]=smg
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值