一、 前言

马上就要决赛了,总是感觉准备的不是很充足,听说拿到省一的小伙伴有的都保研了,可怜那,学校不好,都没有保研名额。
下面进入正题

二、题目

pdf版链接

链接:https://pan.baidu.com/s/11JVfZjdRJzbwwZZNCLPctg
提取码:yh3g
复制这段内容后打开百度网盘手机App,操作更方便哦

三、代码

main.c

#include "main.h"uint temp;
uint light;bit lb;
bit lb_flag;//亮暗标志位
bit light_flag = 1;
bit temp_flag = 1;
bit t_flag1;//时间标志位
bit t_flag2;char h_num = 17;//参数界面默认数据
char temp_num = 25;
char led_num = 4;sbit led1 = P0^0;
sbit led2 = P0^1;
sbit led3 = P0^2;
sbit led4 = P0^3;
sbit led5 = P0^4;
sbit led6 = P0^5;
sbit led7 = P0^6;
sbit led8 = P0^7;void Timer0Init(void)     //2毫秒@11.0592MHz
{AUXR |= 0x80;     //定时器时钟1T模式TMOD &= 0xF0;       //设置定时器模式TL0 = 0x9A;       //设置定时初值TH0 = 0xA9;        //设置定时初值TF0 = 0;       //清除TF0标志TR0 = 1;      //定时器0开始计时EA = 1;ET0 = 1;
}bit key_flag;
bit s4;
uchar s5;
uchar key_val;
uchar key_scanf();void main()
{Y4; P0 = 0xff;Y5; P0 = 0x00;ds_write(16,59,50);Timer0Init();while(1){if(key_flag == 1){key_val = key_scanf();key_flag = 0;}if(light_flag==1){light = ad_read(1);light_flag = 0;if(light<250){lb = 1;}else{lb = 0;}                  }   if(temp_flag == 1){temp_flag = 0;temp = rd_temperature();}if(s4 == 0){if(s5==0){                smg_display(h/10,h%10,24,m/10,m%10,24,s/10,s%10);}if(s5==1){                  smg_display(21,20,20,20,20,temp/100,temp%100/10+10,temp%10);}if(s5 == 2){                    smg_display(22,20,light/100+10,light%100/10,light%10,20,20,lb);            }}if(s4 == 1){if(s5==0){                smg_display(23,1,20,20,20,20,h_num/10,h_num%10);}if(s5==1){                   smg_display(23,2,20,20,20,20,temp_num/10,temp_num%10);}if(s5 == 2){                   smg_display(23,3,20,20,20,20,20,led_num);                                           }}}
}void Timer0() interrupt 1
{uchar key_ms;uchar ms;uint lb_ms;smg();ds_read();key_ms++;if(key_ms == 5){key_ms = 0; key_flag = 1;light_flag = 1;}ms++;if(ms%50 == 0){light_flag = 1;}if(ms == 200){temp_flag = 1;ms = 0;}if(lb == 1){lb_ms++;if(lb_ms == 1500){lb_ms = 0;lb_flag = 1;}}else if(lb == 0){lb_ms++;if(lb_ms == 1500){lb_ms = 0;lb_flag = 0;}}if(ms%20 == 0){if(s4 == 0){P2 = 0x80;if(h_num<8){if(h<h_num){t_flag1 = 1;}}if(t_flag1 == 1){if(h != 8){led1 = 0;}else {t_flag1 = 0;led1 = 1;}}if(h_num>8){if(h<h_num){t_flag2 = 1;}}if(t_flag2 == 1){if(h != 8){led1 = 0;}else {t_flag2 = 0;led1 = 1;}}
//          if(h<h_num){led1 = 0;}
//          else {led1 = 1;}if((temp/10)<temp_num){led2 = 0;}else {led2 = 1;}}if(lb_flag == 0){led3 = 1;}else {led3 = 0;}if(lb == 1){if(s4 == 0){if(led_num == 4){led4 = 0;led5 = 1;led6 = 1;led7 = 1; led8 = 1;}else if(led_num == 5){led4 = 1;led5 = 0;led6 = 1;led7 = 1; led8 = 1;}else if(led_num == 6){led4 = 1;led5 = 1;led6 = 0;led7 = 1; led8 = 1;}else if(led_num == 7){led4 = 1;led5 = 1;led6 = 1;led7 = 0; led8 = 1;}else if(led_num == 8){led4 = 1;led5 = 1;led6 = 1;led7 = 1; led8 = 0;}}}Y0;}
}uchar key_return;
uchar key_scanf()//状态机按键
{static uchar key_state = key_state_0;uchar key_temp;uchar key1,key2;P3 = 0x0f;P42 = 0;P44 = 0;if(P30 == 0) key1 = 0x0e;if(P31 == 0) key1 = 0x0d;if(P32 == 0) key1 = 0x0b;if(P33 == 0) key1 = 0x07;if(P3 == 0x0f) key1 = 0x0f;P3 = 0xf0;P42 = 1;P44 = 1;if(P34 == 0) key2 = 0xe0;if(P35 == 0) key2 = 0xd0;if(P42 == 0) key2 = 0xb0;if(P44 == 0) key2 = 0x70;if((P34 == 1)&(P35 == 1)&(P42 == 1)&(P44 == 1))key2 = 0xf0;key_temp = key1|key2;switch(key_state){case key_state_0:if(key_temp != no_key) key_state = key_state_1;break;case key_state_1:if(key_temp != no_key){key_state = key_state_2;switch(key_temp){case 0x7b: key_return = 5;{s5++; if(s5 == 3) s5 = 0;}break;case 0x77: key_return = 4;s4=~s4;s5 = 0;break;case 0xbb: key_return = 9;if(s4 == 1){if(s5 == 0){h_num++;if(h_num == 24)h_num = 0;}if(s5 == 1){temp_num++;if(temp_num == 100)temp_num = 0;}if(s5 == 2){led_num++;if(led_num == 9) led_num = 4;}}break;case 0xb7: key_return = 8;if(s4 == 1){if(s5 == 0){h_num--;if(h_num == -1)h_num = 23;}if(s5 == 1){temp_num--;if(temp_num == -1)temp_num = 99;}if(s5 == 2){led_num--;if(led_num == 3) led_num = 8;}}break;}}else {key_state = key_state_0;}break;case key_state_2:if(key_temp == no_key){key_state = key_state_0;}break;}return key_return;
}

main.h

#ifndef _MAIN_H
#define _MAIN_H#include "common.h"
#include "smg.h"
#include "ds1302.h"
#include "onewire.h"
#include "iic.h"#define key_state_0 0
#define key_state_1 1
#define key_state_2 2#define no_key 0xffextern uchar h,m,s;#endif

代码完整版
链接:https://pan.baidu.com/s/1mxq-nX5RLpP0hFpdxpSTZA
提取码:bjgd
复制这段内容后打开百度网盘手机App,操作更方便哦

小结

在按键处理时key1和key2我给搞混了,找了好久错误,十一届决赛不难,主要是是led处理麻烦,第一个led要求不知道实现没有因为时间关系。本程序是状态机按键写的可以看看哦,挺好用。

蓝桥杯单片机决赛(国赛)第十一届题目加代码相关推荐

  1. 第十一届蓝桥杯电子类国赛总结回顾

    2020年11月14日,蓝桥杯电子类国赛终于结束了,准备了挺久的.决赛没考超声波和串口,有点意外,题目较为简单这也意味着今年的竞争会格外激烈了,祝愿自己能有个好成绩吧哈哈.已经大三了,这应该是我唯一一 ...

  2. 2021第十二届蓝桥杯Python组国赛/决赛 题解

    2021第十二届蓝桥杯Python组国赛/决赛 题解 前言 2021年第十二届蓝桥杯国赛/决赛,因为疫情原因没有像往年一样前往北京参赛,而是在自己学校的机房进行考试,形式上类似蓝桥杯省赛,但由于参加国 ...

  3. 第十一届蓝桥杯 2020年国赛真题及解析 (Java 大学B组)

    第十一届蓝桥杯 2020年国赛真题 Java 大学B组 A 美丽的 2 B 扩散 C 阶乘约数 D 本质上升序列 E 玩具蛇 F 蓝肽子序列 ​G 皮亚诺曲线距离 H 画廊 I 补给 J 质数行者 所 ...

  4. 历届蓝桥杯Scratch编程国赛 初级 中级 青少年编程比赛国赛真题解析【持续更新 已更新至27题】

    历届蓝桥杯国赛真题 第十三界.十二届.十一届等历届青少年蓝桥杯Scratch编程比赛国赛真题解析 国赛真题01-河马带球[试看] [蓝桥杯国赛真题01]Scratch河马带球 少儿编程蓝桥杯Scrat ...

  5. 第jiu届蓝桥杯单片机省赛真题_第九届蓝桥杯单片机组省赛试题.pdf

    第九届蓝桥杯单片机组省赛试题 "彩灯控制器"的程序设计与调试 (70 分) 一.基本要求 1.1 使用CT107D 单片机竞赛板,完成"彩灯控制器"功能的程序设 ...

  6. 第十二届蓝桥杯青少年组国赛C++中级组 第1题 -- 第3题(python3实现)

    12届蓝桥杯青少年组国赛C++中级组编程题 12届蓝桥杯青少年组国赛C++中级组编程题_lybc2019的博客-CSDN博客 蓝桥杯算法学习路线 | 全程制作过程公开 蓝桥杯算法学习路线 | 全程制作 ...

  7. 【2021年蓝桥杯Java-B组国赛题解】

    2021年蓝桥杯Java-B组国赛

  8. 蓝桥杯2013年国赛A组——网络寻路(DFS和中转边巧解)

    蓝桥杯2013年国赛A组--网络寻路 1.题目描述 2.输入输出 3.样例输入和输出 4.题目分析 1.首先明确,题目中的目的地有两种,一种是回到原点,一种是到达没有到达的地方 2.在路径中经过的点不 ...

  9. 十三届蓝桥杯单片机组省赛真题程序解析

    第一次参加蓝桥杯,线上比赛,记录一下 比赛刚开始了十分钟才做上客观题,做上了之后才发现看一次题警告一次,当时就蚌埠住了,随便做了做就交了,手册也没怎么查(查一下直接给了3次黄牌,就没敢查了)其实老师1 ...

  10. 第十二届蓝桥杯 2021年国赛真题 (Java 大学A组)

    蓝桥杯 2021年国赛真题(Java 大学 A 组 ) #A 纯质数 按序枚举 按位枚举 #B 完全日期 朴素解法 朴素改进 #C 最小权值 动态规划 #D 覆盖 变种八皇后 状压 DP #E 123 ...

最新文章

  1. Spring-依赖注入
  2. 【安全漏洞】CVE-2020-26567 DSR-250N 远程拒绝服务漏洞分析
  3. 从理论到实践,全方位认识HTTP/2
  4. SAE 助力「海底小纵队学英语」全面拥抱 Serverless,节省 25% 以上成本
  5. hadoop(6)——mrjob的使用(2)——交给hadoop集群
  6. 计算机网络简易测试仪,测线仪
  7. Volley学习总结
  8. java占位符填充_Java使用freemark生成word
  9. 数据库加一列,cursor:pointer
  10. SAS学习笔记之《SAS编程与数据挖掘商业案例》(2)数据获取与数据集操作
  11. Ant—使用Ant构建简单Java项目(三)
  12. Android开机速度优化(第三篇)
  13. 基于OpenCv的人脸识别系统设计
  14. MySQL查询最大值、最小值所在行
  15. Unity 正交相机和透视相机的屏幕适配
  16. 全球及中国医用外科缝合器行业市场需求潜力及投资战略研究报告2022-2028年
  17. C++类和C结构体类型的异同
  18. Hazelcast IMDG参考中文版手册-第十一章-分布式查询
  19. 关于内外网数据同步解决方案
  20. 大数据处理实践探索 ---- 笔试面试题:Spark基本调优

热门文章

  1. 最大质因子递归解法python
  2. 分子模拟的理论与实践_活动回顾 | 信息学院模拟党支部实践成果汇报会
  3. xcode 软件˙∆集~
  4. pandas爬虫爬取网页表格
  5. 手机\固定电话座机呼叫转移设置方法
  6. 编程语言入门YC创始人Paul Graham:如何开始创业
  7. 联盟链中的Hyperledger Fabric、FISCO BCOS和CITA
  8. C# 中国大陆二代身份证号生成及格式验证
  9. ethereum扫描区块,获取区块内的交易记录
  10. 监控系统选型,一文轻松解决