第十五届蓝桥杯单片机模拟题Ⅱ_蓝桥杯第十五届蓝桥杯单片机组模拟二-程序员宅基地

技术标签: 蓝桥杯  职场和发展  单片机  

main.c

#include "Timer.h"
#include "Key.h"
#include "Init.h"
#include "Led.h"
#include "Smg.h"
#include <stdio.h>
#include "iic.h"
#include "onewire.h"

//函数声明
void Key_Proc();
void Led_Proc();
void Smg_Proc();
void DAC_Proc();

//显示刷新变量
unsigned char Key_Slow;
unsigned char Led_Slow;
unsigned int Smg_Slow;
unsigned char DAC_Slow;
//Led显示变量
unsigned char ucled;

//数码管显示变量
unsigned char string[10];
unsigned char buf[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char pos;

//Key变量
unsigned char Key_Old;


//模式转换变量
bit S4_mode=0;
bit S5_mode=0;

float DAC_para;
float T_para;
unsigned char Sun_para;

void Delay600ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 28;
	j = 92;
	k = 196;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


int main()
{
	Sys_Init();
	Timer1Init();
	EA=1;
	rd_temperature();
	Pcf8591_ADC(Res_Sun);
	Delay600ms();
	while(1)
	{
		DAC_Proc();
		Key_Proc();
		Led_Proc();
		Smg_Proc();
	}
}

void tm1_isr() interrupt 3
{
	if(++Key_Slow == 20) Key_Slow=0;
	if(++Led_Slow == 100) Led_Slow=0;
	if(++Smg_Slow == 500) Smg_Slow=0;
	if(++DAC_Slow == 150) DAC_Slow=0;
	
	
	
	Led_Disp(ucled);
	Smg_Disp(buf,pos);
	if(++pos == 8) pos=0;

}

void Key_Proc()
{
	unsigned char Key_Value,Key_Down;
	if(Key_Slow) return;
	Key_Slow=1;
	
	Key_Value=Read_KBD();
	Key_Down=Key_Value&(Key_Value^Key_Old);
	Key_Old=Key_Value;
	
	switch(Key_Down)
	{
		case 4:
			if(S5_mode == 0)
				S4_mode^=1; 
		break;
			
		case 5: S5_mode^=1; break;
	}
	
}

void Led_Proc()
{
	if(Led_Slow) return;
	Led_Slow=1;
	
	if(S4_mode == 0)
		ucled = ucled&0xfc|0x01;
	else
		ucled = ucled&0xfc|0x02;
}

void Smg_Proc()
{
	if(Smg_Slow) return;
	Smg_Slow=1;
	Pcf8591_DAC((unsigned char)DAC_para);

	if(S5_mode == 0)
	{
		if(S4_mode == 0)
			sprintf(string,"1    %3.1f",(unsigned int)rd_temperature()/16.0);
		else
			sprintf(string,"2    %3d",(unsigned int)Pcf8591_ADC(Res_Sun));
	}
	else
	{
		sprintf(string,"U     %2.1f",(unsigned int)DAC_para/51.0);
	}
	
	Smg_Trans(string,buf);
}

void DAC_Proc()
{
	if(DAC_Slow) return;
	DAC_Slow =1;
	
	if(S5_mode == 1)
	{
		if(S4_mode == 0)
		{
			T_para=rd_temperature()/16.0;

			if(T_para <= 10)
				DAC_para=51;
			else if(T_para >= 40)
				DAC_para=255;
			else
				DAC_para=6.8*T_para -17;
		}
		else
		{
			Sun_para=Pcf8591_ADC(Res_Sun);
			if(Sun_para <= 10)
				DAC_para=51;
			else if(Sun_para >= 240)
				DAC_para=255;
			else
				DAC_para=0.9*Sun_para+42.1;
		}
	}
	else
		DAC_para=0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_53243630/article/details/136518308

智能推荐

ACM题集以及各种总结大全!_acm题目-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏37次。 一.ACM入门 关于ACM 百度百科连接 杭州电子科技大学(hdu)ACM题目 连接 关于acm的帮助 连接 北京大学(poj)题目 &n._acm题目

为什么 UDP 头只有 8 个字节_udp头-程序员宅基地

文章浏览阅读2.2k次。​UDP 与 TCP 两种传输协议是 IP 协议簇的核心成员,1980 年发布的 RFC 768 定义了 UDP 协议,我们可以通过它在多个计算机连接构成的网络中传递数据。常见的 DNS 协议就可以使用 UDP 协议获取域名解析的结果,我们在这一系列前面的 为什么 DNS 使用 UDP 协议 中曾经讨论过 DNS 使用的传输协议。UDP 是能够传输数据的最简单的协议,它的协议首部(也称作协议头)只有 8 个字节,很多人,尤其是应届毕业生都能通过死机硬背暂时记住 UDP 协议头包含的内容,但是知道协议头的内容_udp头

@RequestMapping中的URL占位符详解_接口占位符怎么 写url-程序员宅基地

文章浏览阅读4.2k次。首先这是个SpringMVC里的Controller文件下的注解@RequestMapping()括号里面就是URL地址,本文专门分析一下占位符的意思和作用,首先占位符就是顾名思义就只是一个占位置的,大概是这样的:(”/{id}“),这个id没有任何意义,你甚至可以改成abc,你写出来的注释大概就是@RequestMapping(”/{id}“),让我们来看看整个方法@RequestMapping(”/{id}“)public String test5(@PathVariable String id){_接口占位符怎么 写url

HTML5&CSS3新特性_html5和css3新特性-程序员宅基地

文章浏览阅读7.9k次,点赞23次,收藏222次。一.HTML5新特性HTML5新特性针对于以前的不足,增加了一些新的标签,新的表单,新的表单属性等。1.新增语义化标签新增的带有语义化的标签二.CSS3新特性_html5和css3新特性

pytorch中torch.nn.Conv2d中的groups参数_torch depthwise conv group=-程序员宅基地

文章浏览阅读1.4k次。先来看官方的说明:groups = 1 时就是标准的卷积运算groups=2 时就是分组为2的组卷积分组后分两半进行卷积运算,6个卷积核分两组,最后将结果cat在一起groups = input_channels的情况是这样的当输入通道数等于输出通道数时,就是深度可分离卷积的depthwise conv,可查看mobilenet的论文理解该卷积令我迷惑的时输出通道数不..._torch depthwise conv group=

嵌入式软件学习,你知道如何将屏幕翻转180度吗?i.MX6ULL ---- ElfBoard 的ELF1 板卡_qt 屏幕旋转180度-程序员宅基地

文章浏览阅读94次。MatchDevicePath "/dev/input/event*" //设备节点。3.断电,连接屏幕,上电,等待系统启动完成,此时可以看到qt界面已经翻转180度。MatchProduct "goodix-ts" //设置当前触摸设备。Option "InvertY" "1" //翻转 Y 轴。Option "InvertX" "1" //翻转 X 轴。Option "Rotate" "UD" //显示旋转 180°。2.添加如下标红内容。_qt 屏幕旋转180度

随便推点

电子货架标签-----Wifi ESL-程序员宅基地

文章浏览阅读70次。医疗类的项目,要使用wifi来控制标签的使用,放在医院的床头卡上面,把医疗床头卡升级成电子屏幕,因为医院系统的限制不可以接有线网路,只能使用wifi来通信,医院原本已有wifi网络的铺设,要求一年充一次电或是换一次电池,最终选择了锂电池充电版本。使用手机APP端进行操作的方法,屏幕采用ZBD屏幕,刷新响应速度更快,据说还可以支持低温环境,也是掉电不消失的屏幕用法。_wifi esl

升余弦滤波器与根升余弦滤波器_根升余弦和升余弦区别-程序员宅基地

文章浏览阅读4w次,点赞45次,收藏183次。1 升余弦滚降滤波器有啥用? 1, 升余弦滚降滤波器本质上只是一个低通滤波器,只不过它的滚降因子(rolloff effect)会对波形的幅度产生一定影响,一般是降低了波形的幅度并且低通,2.升余弦滚降信号用来消除码间串扰,实际实现时采用的方式是由发送端的基带成行滤波器和接收端的匹配滤波器两个环节公共实现。传输系统的传递函数二者的乘 积,所以每个环节均为平方根升余弦滚降滤波器。2 根升余弦_根升余弦和升余弦区别

Java程序设计——Swing UI 布局管理器(四)-程序员宅基地

文章浏览阅读2.8k次。目录 布局管理器4.1.FlowLayout4.2.BorderLayout4.3.GridLayout4.4.CardLayout4.5.BoxLayout4.6.NULL FlowLayout(); FlowLayout(int align); //align一般取值有:CENTER、LEFT、RIGHT FlowLayout(int align, int hga_swing ui

常见问题之Golang——invalid character ‘-‘ in numeric literal错误_invalid character '-' in numeric literal-程序员宅基地

文章浏览阅读5.2k次,点赞7次,收藏3次。常见问题之Golang——invalid character '-' in numeric literal错误背景本系列文章均为学习过程中记录的笔记,欢迎和我一起来学习Go语言。全文使用环境如下:操作系统:windows10使用工具:Goland开发工具golang版本:1.17简介本文主要是对我日常在使用golang时遇到的一些问题与解决方式进行的汇总,在此提供给大家便于排查..._invalid character '-' in numeric literal

(详细教程)笔记本电脑安装Ubuntu系统_ultraso-程序员宅基地

文章浏览阅读7.7k次,点赞21次,收藏24次。(详细教程)笔记本电脑安装Ubuntu系统_ultraso

Python爬虫手机版-程序员宅基地

文章浏览阅读636次。Python爬虫是一种用于抓取网站数据的自动化程序,其中包括手机版网站。 在进行爬虫编程时,需要使用Python语言编写代码,通过编写代码来自动发送HTTP请求,抓取网站的HTML源代码,并解析源代码中的数据。要编写Python爬虫程序来抓取手机版网站的数据,需要了解如何发送HTTP请求,如何解析HTML源代码,以及如何使用Python处理数据。 常用的Python库有: requests、be..._手机python爬虫工具

推荐文章

热门文章

相关标签