日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/1/8 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯单片机决赛(国赛)第十一届题目加代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 前言

馬上就要決賽了,總是感覺準備的不是很充足,聽說拿到省一的小伙伴有的都保研了,可憐那,學校不好,都沒有保研名額。
下面進入正題

二、題目

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要求不知道實現沒有因為時間關系。本程序是狀態機按鍵寫的可以看看哦,挺好用。

總結

以上是生活随笔為你收集整理的蓝桥杯单片机决赛(国赛)第十一届题目加代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。