-
2020-12-31 04:06:56
#include
#include "iic.h"
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6};
uchar yi,er,san,si,wu,liu,qi,ba;
uchar led_start=0;
uchar mode=1;//????
uchar set=0;//s6??
uint jiange=400;//????
uint LED_tt=0,set_tt=0,AD_tt=0;//0.8???
uint RB2=0;//AD??
uchar flag4=0;//s4????
uchar LED_n=0;
uchar Light=0,LED_T=0;
void allinit();
void Delay1ms(uint ms);
void display1(uchar yi,uchar er);
void display2(uchar san,uchar si);
void display3(uchar wu,uchar liu);
void display4(uchar qi,uchar ba);
void keyscan();
void Timer0Init(void);
void main()
{
allinit();
Timer0Init();
mode=EEPROM_Read(0x10);
Delay1ms(5);
jiange=EEPROM_Read(0x20)*100;
Delay1ms(5);
yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
while(1)
{
// RB2=AD_Read(0x03);
if((set==0)&&(flag4==1))
{
if(RB2<64){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=1;}
else if((RB2>=64)&&(RB2<128)){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=2;}
else if((RB2>=128)&&(RB2<192)){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=3;}
else if((RB2>=192)&&(RB2<255)){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=4;}
}
else if(set==0)
{
yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
}
keyscan();
display1(yi,er);
display2(san,si);
display3(wu,liu);
display4(qi,ba);
}
}
void keyscan()
{
if(P30==0)//s7
{
Delay1ms(5);
if(P30==0)
{
if(led_start==0)
led_start=1;
else if(led_start==1)
led_start=0;
}
while(!P30);
}
else if(P31==0)//s6
{
Delay1ms(5);
if(P31==0)
{
if(set==0)
{
set=1;set_tt=0;
if(jiange>=1000)
{
yi=10;er=mode;san=10;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
}
else
{
yi=10;er=mode;san=10;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
}
}
else if(set==1)
{
set=2;set_tt=0;
if(jiange>=1000)
{
yi=10;er=mode;san=10;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
}
else
{
yi=10;er=mode;san=10;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
}
}
else if(set==2)
{
set=0;set_tt=0;
yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
EEPROM_Write(mode,0x10);
Delay1ms(5);
EEPROM_Write(jiange/100,0x20);
Delay1ms(5);
}
}
while(!P31);
}
else if(P32==0)//s5
{
Delay1ms(5);
if(P32==0)
{
if(set==1)
{
mode+=1;
if(mode>4)
{
mode=4;
}
}
else if(set==2)
{
jiange+=100;
if(jiange>1200)
{
jiange=1200;
}
}
}
while(!P32);
}
else if(P33==0)//s4
{
Delay1ms(5);
if(P33==0)
{
flag4=1;
}
}
if((flag4==1)&&(P33==1))
{
flag4=0;
if(set==1)
{
mode-=1;
if(mode<1)
{
mode=1;
}
}
else if(set==2)
{
jiange-=100;
if(jiange<400)
{
jiange=400;
}
}
}
}
void Timer0Init(void) //1??@12.000MHz
{
AUXR |= 0x80; //?????1T??
TMOD &= 0xF0; //???????
TL0 = 0x20; //??????
TH0 = 0xD1; //??????
TF0 = 0; //??TF0??
TR0 = 1; //???0????
EA=1;
ET0=1;
}
void Timer0() interrupt 1
{
set_tt++;
LED_tt++;
AD_tt++;
if((LED_tt==1)&&(led_start==1))//?1ms??????
{
if(mode==1)
{
P2=0X00;P0=0XFF;P2=0X80;P0=~(0X01<
}
else if(mode==2)
{
P2=0X00;P0=0XFF;P2=0X80;P0=~(0X80>>LED_n);P2=0X00;
}
else if(mode==3)
{
P2=0X00;P0=0XFF;P2=0X80;
if(LED_n==0)P0=0X7E;
else if(LED_n==1)P0=0XBD;
else if(LED_n==2)P0=0XDB;
else if(LED_n==3)P0=0XE7;
P2=0X00;
}
else if(mode==4)
{
P2=0X00;P0=0XFF;P2=0X80;
if(LED_n==0)P0=0XE7;
else if(LED_n==1)P0=0XDB;
else if(LED_n==2)P0=0XBD;
else if(LED_n==3)P0=0X7E;
P2=0X00;
}
}
else if(LED_tt==Light)//PWM?? ?????20ms mode1 LED_tt=1? 2-20?? ???5%
// mode2 LED_tt=1-4? ???20%
// mode3 1-9???45% mode4 1-19 ???95%
{
P2=0X00;P0=0XFF;P2=0X80;P0=0XFF;P2=0X00;
}
else if(LED_tt==20)//?20ms???? LED_T +1
{
LED_tt=0;LED_T++;
if((LED_T*20)>=jiange)//?????????? ????
{
LED_T=0;
if(mode==1){LED_n++;if(LED_n>=8)LED_n=0;}
else if(mode==2){LED_n++;if(LED_n>=8)LED_n=0;}
else if(mode==3){LED_n++;if(LED_n>=4)LED_n=0;}
else if(mode==4){LED_n++;if(LED_n>=4)LED_n=0;}
}
}
if(AD_tt==200)//?200ms????RB2?
{
AD_tt=0;
RB2=AD_Read(0x03);
if(RB2<64)Light=2;
else if((RB2>=64)&&(RB2<128))Light=5;
else if((RB2>=128)&&(RB2<192))Light=10;
else if((RB2>=192)&&(RB2<256))Light=19;
}
if(set_tt==800)
{
if(set==1)
{
if(jiange>=1000)
{
yi=11;er=11;san=11;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
}
else
{
yi=11;er=11;san=11;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
}
}
else if(set==2)
{
if(jiange>=1000)
{
yi=10;er=mode;san=10;si=11;wu=11;liu=11;qi=11;ba=11;
}
else
{
yi=10;er=mode;san=10;si=11;wu=11;liu=11;qi=11;ba=11;
}
}
}
if(set_tt==1600)
{
set_tt=0;
if(set==1)
{
if(jiange>=1000)
{
yi=10;er=mode;san=10;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
}
else
{
yi=10;er=mode;san=10;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
}
}
else if(set==2)
{
if(jiange>=1000)
{
yi=10;er=mode;san=10;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
}
else
{
yi=10;er=mode;san=10;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
}
}
}
}
void allinit()
{
P2=0X80;
P0=0XFF;
P2=0XC0;
P0=0XFF;
P2=0XE0;
P0=0XFF;
P2=0XA0;
P0=0X00;
}
void Delay1ms(uint ms) //@12.000MHz
{
uint k;
unsigned char i, j;
for(k=ms;k>0;k--)
{
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
}
void display1(uchar yi,uchar er)
{
P2=0XC0;
P0=0X01;
P2=0XE0;
P0=tab[yi];
Delay1ms(1);
P2=0XC0;
P0=0X02;
P2=0XE0;
P0=tab[er];
Delay1ms(1);
}
void display2(uchar san,uchar si)
{
P2=0XC0;
P0=0X04;
P2=0XE0;
P0=tab[san];
Delay1ms(1);
P2=0XC0;
P0=0X08;
P2=0XE0;
P0=tab[si];
Delay1ms(1);
}
void display3(uchar wu,uchar liu)
{
P2=0XC0;
P0=0X10;
P2=0XE0;
P0=tab[wu];
Delay1ms(1);
P2=0XC0;
P0=0X20;
P2=0XE0;
P0=tab[liu];
Delay1ms(1);
}
void display4(uchar qi,uchar ba)
{
P2=0XC0;
P0=0X40;
P2=0XE0;
P0=tab[qi];
Delay1ms(1);
P2=0XC0;
P0=0X80;
P2=0XE0;
P0=tab[ba];
Delay1ms(1);
P2=0XC0;
P0=0XFF;
P2=0XE0;
P0=0XFF;//?????????????
}
更多相关内容 -
第九届蓝桥杯单片机-省赛-客观题.pdf
2019-08-19 11:24:57第九届蓝桥杯 单片机省赛 客观题 pdf格式。 -
第九届蓝桥杯单片机竞赛真题——彩灯控制例程
2020-02-06 19:23:56第九届蓝桥杯单片机竞赛真题——彩灯控制的例程 自己写的蓝桥杯单片机比赛的例程,文件里有考题的PDF和keil文件。第一次发资源,如有不足还请多多指正 -
第9届蓝桥杯单片机省赛-客观题参考答案与解析.pdf
2021-08-05 21:58:01第9届蓝桥杯单片机省赛-客观题参考答案与解析.pdf -
第九届蓝桥杯单片机项目资源数据包
2019-04-14 19:55:16第九届蓝桥杯单片机项目资源数据包,包含单片机项目和嵌入式项目。 -
第九届蓝桥杯单片机省赛题目解析
2021-09-01 14:08:54别的话也不多说,一起来看看第九届(2018)的题目吧。 题目 这次的题目依然还是用到了三大模块(数码管、LED、按键),还用到了EEPROM和模拟输入(ADC),也都是一些常见的外设,只要平常都练习过,也就不...别的话也不多说,一起来看看第九届(2018)的题目吧。
题目
这次的题目依然还是用到了三大模块(数码管、LED、按键),还用到了EEPROM和模拟输入(ADC),也都是一些常见的外设,只要平常都练习过,也就不难,最重要的还是编程逻辑。
1 数码管显示
数码管有两个界面需要显示一个是设置状态的界面,还有一个是亮度等级界面。设置状态界面由运行模式和流转间隔组成。
2 LED显示
这次的LED是重点,不仅有四种运行模式还有四个亮度等级。四种运行模式就设置数组,然后循环运行。四个亮度等级就是把ADC 0到255分成四份,在哪个等级,LED就相应的亮多久,这样就会有视觉上的亮度等级,具体看代码。
3 按键模块
使用的是独立按键,s7是LED的启动和停止,s6定义一个变量mode1,为0时数码管关闭(此时按s4显示亮度等级),为1时显示运行模式1以及流转间隔,为2时运行模式1闪烁按s5或s4进行加减,为3时流转间隔闪烁按s5或s4进行加减。
4 EEPROM
就是改写底层驱动代码部分(IIC),在运行完加减后把流转间隔保存到其中去,在延时5ms。
5 ADC
就是改写底层驱动代码部分(IIC)。
IIC.c
#include"IIC.h" #define DELAY_TIME 5 #define SlaveAddrW 0xA0 #define SlaveAddrR 0xA1 sbit SDA = P2^1; sbit SCL = P2^0; void IIC_Delay(unsigned char i) { do{_nop_();} while(i--); } void IIC_Start(void) { SDA = 1; SCL = 1; IIC_Delay(DELAY_TIME); SDA = 0; IIC_Delay(DELAY_TIME); SCL = 0; } void IIC_Stop(void) { SDA = 0; SCL = 1; IIC_Delay(DELAY_TIME); SDA = 1; IIC_Delay(DELAY_TIME); } bit IIC_WaitAck(void) { bit ackbit; SCL = 1; IIC_Delay(DELAY_TIME); ackbit = SDA; SCL = 0; IIC_Delay(DELAY_TIME); return ackbit; } void IIC_SendByte(unsigned char byt) { unsigned char i; for(i=0; i<8; i++) { SCL = 0; IIC_Delay(DELAY_TIME); if(byt & 0x80) SDA = 1; else SDA = 0; IIC_Delay(DELAY_TIME); SCL = 1; byt <<= 1; IIC_Delay(DELAY_TIME); } SCL = 0; } unsigned char IIC_RecByte(void) { unsigned char i, da; for(i=0; i<8; i++) { SCL = 1; IIC_Delay(DELAY_TIME); da <<= 1; if(SDA) da |= 1; SCL = 0; IIC_Delay(DELAY_TIME); } return da; } unsigned char Read_AD() { unsigned char temp; IIC_Start(); IIC_SendByte(0x90); IIC_WaitAck(); IIC_SendByte(0x03); IIC_WaitAck(); IIC_Stop(); IIC_Start(); IIC_SendByte(0x91); IIC_WaitAck(); temp=IIC_RecByte(); IIC_Stop(); return temp; } void write_eeprom(unsigned char add,unsigned char da) { IIC_Start(); IIC_SendByte(0xa0); IIC_WaitAck(); IIC_SendByte(add); IIC_WaitAck(); IIC_SendByte(da); IIC_WaitAck(); IIC_Stop(); } unsigned char Read_eeprom(unsigned char add) { unsigned char da; IIC_Start(); IIC_SendByte(0xa0); IIC_WaitAck(); IIC_SendByte(add); IIC_WaitAck(); IIC_Stop(); IIC_Start(); IIC_SendByte(0xa1); IIC_WaitAck(); da=IIC_RecByte(); IIC_Stop(); return da; }
IIC.h
#ifndef _IIC_H_ #define _IIC_H_ #include<stc15f2k60s2.h> #include<intrins.h> void IIC_Delay(unsigned char i); void IIC_Start(void); void IIC_Stop(void); bit IIC_WaitAck(void); void IIC_SendByte(unsigned char byt); unsigned char IIC_RecByte(void); unsigned char Read_AD(); void write_eeprom(unsigned char add,unsigned char da); unsigned char Read_eeprom(unsigned char add); #endif
init.h
#include"init.h" #include"jm.h" #define u8 unsigned char #define u16 unsigned int #define state_0 0 #define state_1 1 #define state_2 2 static u8 segadder=0,key_state; extern u8 mode1,a; u8 seg[]={11,11,11,11,11,11,11,11}; u8 tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; u8 key_press,key_num,value; void close_init() //关闭无关外设 { P2=(P2&0x1f)|0x80;P0=0xff;P2&=0x1f; P2=(P2&0x1f)|0xa0;P04=0;P06=0;P2&=0x1f; P2=(P2&0x1f)|0xc0;P0=0x00;P2&=0x1f; P2=(P2&0x1f)|0xe0;P0=0xff;P2&=0x1f; } void display() // 数码管显示函数 { P2=(P2&0x1f)|0xe0;P0=0xff;P2&=0x1f; P2=(P2&0x1f)|0xc0;P0=1<<segadder;P2&=0x1f; P2=(P2&0x1f)|0xe0;P0=tab[seg[segadder]];P2&=0x1f; if(++segadder==8) segadder=0; } u8 read_key() //独立按键 { key_press=P3&0x0f; switch(key_state) { case state_0: if(key_press!=0x0f) key_state=state_1; break; case state_1: if(key_press!=0x0f) { if((key_press&0x08)==0) { if(mode1==0&&a==1) { jm3(); a=0; } key_num=4; } if((key_press&0x04)==0) key_num=5; if((key_press&0x02)==0) key_num=6; if((key_press&0x01)==0) key_num=7; key_state=state_2; } else key_state=state_0; break; case state_2: if(key_press==0x0f) { if(mode1==0&&a==0)a=1; key_state=state_0; } break; } value=key_num; key_num=0; return value; } void Timer0Init(void) { AUXR |= 0x80; TMOD &= 0xF0; TL0 = 0xCD; TH0 = 0xD4; TF0 = 0; TR0 = 1; EA = 1; ET0 = 1; }
init.h
#ifndef _INIT_H_ #define _INIT_H_ #include<stc15f2k60s2.h> void close_init(); void display(); unsigned char read_key(); void Timer0Init(void); #endif
jm.h
#include"jm.h" #include"IIC.h" #define u8 unsigned char #define u16 unsigned int extern bit sp,mode_flag,val_flag; // extern表示此变量是在别处定义的,要在此处引用 extern u8 seg[],mode1,RB2_value; extern u8 val1,val2,val3,val4,val_count; u8 mode12[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //模式1,2的数组 u8 mode34[]={0x7e,0xbd,0xdb,0xe7}; //模式3,4的数组 u8 mode=1,i=0,j=7,x=0,y=3,mode2=1; void Delay5ms() { unsigned char i, j; i = 54; j = 199; do { while (--j); } while (--i); } void jm3() //亮度等级显示函数 { seg[0]=11; seg[1]=11; seg[2]=11; seg[3]=11; seg[4]=11; seg[5]=11; seg[6]=10; seg[7]=RB2_value; } void jm4() //s4的功能 { if(mode1==2) { if(--mode==0)mode=4; } if(mode1==3) { if(mode==1)val1-=10; if(val1<=40)val1=40; write_eeprom(0x10,val1); Delay5ms(); if(mode==2)val2-=10; if(val2<=40)val2=40; write_eeprom(0x20,val2); Delay5ms(); if(mode==3)val3-=10; if(val3<=40)val3=40; write_eeprom(0x40,val3); Delay5ms(); if(mode==4)val4-=10; if(val4<=40)val4=40; write_eeprom(0x80,val4); Delay5ms(); } } void jm5() //s5的功能 { if(mode1==2) { if(++mode==5)mode=1; } if(mode1==3) { if(mode==1)val1+=10; if(val1>=120)val1=120; write_eeprom(0x10,val1); Delay5ms(); if(mode==2)val2+=10; if(val2>=120)val2=120; write_eeprom(0x20,val2); Delay5ms(); if(mode==3)val3+=10; if(val3>=12)val3=120; write_eeprom(0x40,val3); Delay5ms(); if(mode==4)val4+=10; if(val4>=120)val4=120; write_eeprom(0x80,val4); Delay5ms(); } } void jm6() { if(mode1==0) //数码管关闭 { seg[0]=11; seg[1]=11; seg[2]=11; seg[3]=11; seg[4]=11; seg[5]=11; seg[6]=11; seg[7]=11; } if(mode1==1) //显示运行模式1以及流转间隔 { seg[0]=10; seg[1]=1; seg[2]=10; seg[3]=11; seg[4]=val1/100; seg[5]=val1/10%10; seg[6]=val1%10; seg[7]=0; } if(mode1==2) //运行模式1闪烁 { if(mode_flag==1) { seg[0]=10; seg[1]=mode; seg[2]=10; seg[3]=11; if(mode==1) { seg[4]=val1/100; seg[5]=val1/10%10; seg[6]=val1%10; seg[7]=0; } if(mode==2) { seg[4]=val2/100; seg[5]=val2/10%10; seg[6]=val2%10; seg[7]=0; } if(mode==3) { seg[4]=val3/100; seg[5]=val3/10%10; seg[6]=val3%10; seg[7]=0; } if(mode==4) { seg[4]=val4/100; seg[5]=val4/10%10; seg[6]=val4%10; seg[7]=0; } } else { seg[0]=11; seg[1]=11; seg[2]=11; seg[3]=11; } } if(mode1==3) //流转间隔闪烁 { if(mode_flag==1) { if(mode==1) { seg[4]=val1/100; seg[5]=val1/10%10; seg[6]=val1%10; seg[7]=0; } if(mode==2) { seg[4]=val2/100; seg[5]=val2/10%10; seg[6]=val2%10; seg[7]=0; } if(mode==3) { seg[4]=val3/100; seg[5]=val3/10%10; seg[6]=val3%10; seg[7]=0; } if(mode==4) { seg[4]=val4/100; seg[5]=val4/10%10; seg[6]=val4%10; seg[7]=0; } } else { seg[4]=11; seg[5]=11; seg[6]=11; seg[7]=11; } } } void jm7() { if(sp==1) //打开LED { if(mode2==1&&val_flag==0) { P2=(P2&0x1f)|0x80; P0=mode12[i]; P2&=0x1f; } if(mode2==1&&val_flag==1) { val_flag=0; if(++i==8) { i=0; mode2=2; val_count=0; } } if(mode2==2&&val_flag==0) { P2=(P2&0x1f)|0x80; P0=mode12[j]; P2&=0x1f; } if(mode2==2&&val_flag==1) { val_flag=0; if(--j==-1) { j=7; mode2=3; val_count=0; } } if(mode2==3&&val_flag==0) { P2=(P2&0x1f)|0x80; P0=mode34[x]; P2&=0x1f; } if(mode2==3&&val_flag==1) { val_flag=0; if(++x==4) { x=0; mode2=4; val_count=0; } } if(mode2==4&&val_flag==0) { P2=(P2&0x1f)|0x80; P0=mode34[y]; P2&=0x1f; } if(mode2==4&&val_flag==1) { val_flag=0; if(--y==-1) { y=3; mode2=1; val_count=0; } } } else { P2=(P2&0x1f)|0x80;P0=0xff;P2&=0x1f; } }
jm.h
#ifndef _JM_H_ #define _JM_H_ #include<stc15f2k60s2.h> void jm3(); void jm4(); void jm5(); void jm6(); void jm7(); void Delay5ms(); #endif
main.c
#include"init.h" #include"IIC.h" #include"jm.h" #define u8 unsigned char #define u16 unsigned int extern u8 mode2; u8 a,b,num,mode1=0,RB2=0,RB2_value=0,RB2_count=0,e_count=0; bit sp=0,mode_flag=0,val_flag=1,e_flag=0; u16 mode_count=0,val_count=0; u8 val1=40,val2=40,val3=40,val4=40; void main() { close_init(); Timer0Init(); while(1) { RB2=Read_AD(); num=read_key(); switch(num) { case 4: jm4(); break; case 5: jm5(); break; case 6: if(++mode1==4)mode1=0; a=1; break; case 7: sp^=1; b=1; break; } num=0; if(a==1)jm6(); if(b==1)jm7(); if(RB2>=0&&RB2<64)RB2_value=1; //把ADC的值分成四个等级 if(RB2>=64&&RB2<128)RB2_value=2; if(RB2>=128&&RB2<192)RB2_value=3; if(RB2>=192&&RB2<=255)RB2_value=4; if(e_flag==1) //读取EEPROM中的值 { e_flag=0; val1=Read_eeprom(0x10); val2=Read_eeprom(0x20); val3=Read_eeprom(0x40); val4=Read_eeprom(0x80); } } } void Timer0() interrupt 1 { display(); val_count++; if(mode1==2||mode1==3) { if(++mode_count==800) { mode_count=0; mode_flag^=1; } } if((val_count==val1*10)&&mode2==1) { val_count=0; val_flag=1; } if((val_count==val2*10)&&mode2==2) { val_count=0; val_flag=1; } if((val_count==val3*10)&&mode2==3) { val_count=0; val_flag=1; } if((val_count==val4*10)&&mode2==4) { val_count=0; val_flag=1; } if(++RB2_count<=RB2_value) jm7(); //亮度等级越大,LED亮的越久 else if((RB2_count>RB2_value)&&(RB2_count<=4)) { P2=(P2&0x1f)|0x80;P0=0xff;P2&=0x1f; } else if(RB2_count>4)RB2_count=0; if(++e_count==200) { e_count=0; e_flag=1; } }
最后,有什么写的不好的地方,还希望大家指正,或者有更好的意见和想法都可以讨论。
-
蓝桥杯单片机第九届省赛题程序.zip
2020-11-28 20:46:06蓝桥杯单片机第九届省赛题程序,里面有hex代码可提供下载调试,需要源码和赛题请解压里面的一个压缩包,里面包含源码和hex文件的源代码。非常的银杏,非常的好用。 -
第九届蓝桥杯单片机省赛
2022-03-24 21:14:39第九届蓝桥杯单片机程序 创好程序直接复制粘贴就行,没那么多步骤。直接复制粘贴然后运行
然后打开stc烧录到开发板上面就能用 程序哪里不懂的话问我,我闲的蛋疼!
#include <STC15F2K60S2.H>
#include <intrins.h>unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
unsigned char yi,er,san,si,wu,liu,qi,ba;
unsigned char jiemian=0; //定义界面
int moshi=1; //定义模式
unsigned char jiange=4; //定义间隔
unsigned char a=0,tiao=0,shan=0;
unsigned char b=0,app=0,shan1=0;
unsigned char shuju;
unsigned char d=0;
int c=0;
unsigned char tiaozhuan;
unsigned char pwm=0;unsigned char AD();
#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1
sbit SDA = P2^1;
sbit SCL = P2^0;
void Timer0Init(void) //5毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0x28; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA=1;
ET0=1;
}
void tm0_isr() interrupt 1
{
TL0 = 0x00; //设置定时初值
TH0 = 0x28; //设置定时初值
a++;
if(a==160)
{
a=0;
if(tiao==1)
{
if(shan==0)
{
wu=jiange/10;liu=jiange%10;
er=11;
shan=1;
}
else
if(shan==1)
{
wu=jiange/10;liu=jiange%10;
er=moshi;
shan=0;
}
}
if(tiao==2)
{
if(shan==0)
{
er=moshi;
wu=11;liu=11;
shan=1;
}
else
if(shan==1)
{
er=moshi;
wu=jiange/10;liu=jiange%10;
shan=0;
}
}
}
}
void Delayms(int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
void chushihua()
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X00;P2=0XFF;P0=0XFF;
}
void shumaguan1(unsigned char yi,unsigned char er)
{
P2=0XC0;
P0=0X01;
P2=0XFF;
P0=tab[yi];
Delayms(1);
P2=0XC0;
P0=0X02;
P2=0XFF;
P0=tab[er];
Delayms(1);
}
void shumaguan2(unsigned char san,unsigned char si)
{
P2=0XC0;
P0=0X04;
P2=0XFF;
P0=tab[san];
Delayms(1);
P2=0XC0;
P0=0X08;
P2=0XFF;
P0=tab[si];
Delayms(1);
}
void shumaguan3(unsigned char wu,unsigned char liu)
{
P2=0XC0;
P0=0X10;
P2=0XFF;
P0=tab[wu];
Delayms(1);
P2=0XC0;
P0=0X20;
P2=0XFF;
P0=tab[liu];
Delayms(1);
}
void shumaguan4(unsigned char qi,unsigned char ba)
{
P2=0XC0;
P0=0X40;
P2=0XFF;
P0=tab[qi];
Delayms(1);
P2=0XC0;
P0=0X80;
P2=0XFF;
P0=tab[ba];
Delayms(1);
}void anjian()
{
if(P30==0)
{
Delayms(5);
if(P30==0)
{
while(!P30);
}
if(d==0)
{
EA=1;
ET1=1;
d=1;
}
else
if(d==1)
{
EA=0;
ET1=0;
d=0;
b=0;
pwm=0;
}
}
if(P31==0)
{
Delayms(30);
if(P31==0)
{
while(!P31);
}
if(jiemian==0)
{
jiemian=1;
}
else
if(jiemian==1)
{
jiemian=2;
}
else
if(jiemian==2)
{
jiemian=0;
}
if(tiao==0)
{
tiao=1;
}
else
if(tiao==1)
{
tiao=2;
}
else
if(tiao==2)
{
tiao=0;
}
}
if(P32==0)
{
Delayms(35);
if(P32==0)
{
while(!P32);
}
if(jiemian==1)
{
moshi=moshi+1;
if(moshi==5)
{
moshi=1;
}
}
if(jiemian==2)
{
jiange=jiange+1;
if(jiange==13)
{
jiange=4;
}
}
}
if(P33==0)
{
Delayms(5);
if(P33==0)
{
while(!P33)
{
if(jiemian==0)
{
shuju=AD()/64+1;
yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=shuju;
shumaguan1(yi,er);
shumaguan2(san,si);
shumaguan3(wu,liu);
shumaguan4(qi,ba);
}
}
if(jiemian==1)
{
moshi=moshi-1;
if(moshi==0)
{
moshi=1;
}
}
if(jiemian==2)
{
jiange=jiange-1;
if(jiange==3)
{
jiange=4;
}
}
if(jiemian==0)
{
}
}
}
}
void IIC_Start(void)
{
SDA = 1;
SCL = 1;
somenop;
SDA = 0;
somenop;
SCL = 0;
}//总线停止条件
void IIC_Stop(void)
{
SDA = 0;
SCL = 1;
somenop;
SDA = 1;
}//等待应答
bit IIC_WaitAck(void)
{
SDA = 1;
somenop;
SCL = 1;
somenop;
if(SDA)
{
SCL = 0;
IIC_Stop();
return 0;
}
else
{
SCL = 0;
return 1;
}
}//通过I2C总线发送数据
void IIC_SendByte(unsigned char byt)
{
unsigned char i;
for(i=0;i<8;i++)
{
if(byt&0x80)
{
SDA = 1;
}
else
{
SDA = 0;
}
somenop;
SCL = 1;
byt <<= 1;
somenop;
SCL = 0;
}
}//从I2C总线上接收数据
unsigned char IIC_RecByte(void)
{
unsigned char da;
unsigned char i;
for(i=0;i<8;i++)
{
SCL = 1;
somenop;
da <<= 1;
if(SDA)
da |= 0x01;
SCL = 0;
somenop;
}
return da;
}
unsigned char AD()
{
unsigned char temp;
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(0x03);
IIC_WaitAck();
IIC_Stop();
IIC_Start();
IIC_SendByte(0x91);
IIC_WaitAck();
temp=IIC_RecByte();
IIC_Stop();
return temp;
}unsigned char EEAD(unsigned char add)
{
unsigned char temp;
IIC_Start();
IIC_SendByte(0xA0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Stop();
IIC_Start();
IIC_SendByte(0xA1);
IIC_WaitAck();
temp=IIC_RecByte();
IIC_Stop();
return temp;
}void EEDA(unsigned char add,unsigned char dat)
{
IIC_Start();
IIC_SendByte(0xA0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_SendByte(dat);
IIC_WaitAck();
IIC_Stop();
}
void Timer1Init(void) //5毫秒@11.0592MHz
{
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x00; //设置定时初值
TH1 = 0x28; //设置定时初值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时}
void tm1_isr() interrupt 3
{
TL1 = 0x00; //设置定时初值
TH1 = 0x28; //设置定时初值
b++;
pwm++;
if(b==jiange*20)
{
b=0;
if(moshi==1)
{
P2=0X80;
tiaozhuan=~((0X01)<<app);
shan1=1;
app++;
if(app==8)
{
app=0;
}}
if(moshi==2)
{P2=0X80;
tiaozhuan=~((0X80)>>app);
shan1=1;
app++;
if(app==8)
{
app=0;
}}
if(moshi==3)
{
P2=0X80;
tiaozhuan=(~((0X80)>>app))&(~((0x01)<<app));
shan1=1;
app++;
if(app==4)
{
app=0;
}}
if(moshi==4)
{
P2=0X80;
tiaozhuan=(~((0X08)>>app))&(~((0x10)<<app));
shan1=1;
app++;
if(app==4)
{
app=0;
}
}
}
if(pwm==6)
{
pwm=0;
}if(0<=pwm<=shuju)
{P2=0X80;
P0=tiaozhuan;
}
if(shuju<pwm)
{
P2=0X80;
P0=0XFF;
}}
void main()
{
chushihua();
Timer0Init();
Timer1Init();
moshi=EEAD(0X00);Delayms(2);
jiange=EEAD(0X01);Delayms(2);
while(1)
{
shuju=AD()/64+1;
anjian();
if(jiemian==0)
{
yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
}
if(jiemian==1)
{
yi=10;san=10;si=11;qi=0;ba=0;
}
if(jiemian==2)
{
yi=10;san=10;si=11;qi=0;ba=0;}
EEDA(0X00,moshi);Delayms(2);
EEDA(0X01,jiange);Delayms(2);
shumaguan1(yi,er);
shumaguan2(san,si);
shumaguan3(wu,liu);
shumaguan4(qi,ba);
}
} -
蓝桥杯单片机设计与开发组2018年第九届决赛程序题+客观题
2021-01-19 14:08:172018年第九届“蓝桥杯”单片机设计与开发组决赛 程序题+客观题 -
蓝桥杯第九届-省赛-单片机组试题.pdf
2019-08-19 11:20:08蓝桥杯第九届 单片机省赛试题 pdf格式。 -
第九届蓝桥杯单片机-彩灯控制器代码.zip
2020-02-28 21:20:21第九届蓝桥杯单片机-彩灯控制器代码 代码优化,有注解,通俗易懂。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 -
第九届 蓝桥杯 单片机 省赛 客观题 答案
2021-04-16 21:17:59(1) 当MCS-51访问片外的存储器时,其低8位地址由由(P2)口提供,8位数据由(P0)...(2) 当由MCS-51单片机构成的系统正常工作后,在RST引脚上附加一个(高)电平,并至少维持(2)个机器周期可令系统复位,复位后各IO口为(高)电平。 -
蓝桥杯单片机仿真原理图.pdsprj
2021-04-17 15:50:12蓝桥杯比赛单片机组,比赛专用开发板protues仿真图 -
第九届蓝桥杯单片机省赛试题
2019-03-16 21:27:14uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//数码管段 uchar code mode1_2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//模式1.2灯数组 uchar code mode3_4[]={0x7e,0...
个人觉得本题主要考的是定时器,本题如果直接用数码管延时扫描的话会很棘手,之前数码管显示函数我一般都是先位选后段选接着在后面延时个1毫秒,现在这题目用这种方式写好像不太行,正因为不行,我卡在这地方太久了,如果大哥大姐能用这种方法做的话希望你们能教一下我,谢谢!
好了,下面是我刚编完的程序,步数挺多的。。。:main.c
#include "STC15F2K60S2.h" #include "iic.h" #define uchar unsigned char #define uint unsigned int uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//数码管段 uchar code mode1_2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//模式1.2灯数组 uchar code mode3_4[]={0x7e,0xbd,0xdb,0xe7}; //模式3.4灯数组 uchar yi,er,san,si,wu,liu,qi,ba;//数码管的8个位 uchar jiange=4; //运行间隔.用于显示在数码管上.或赋值给jiange1~jiange4; uchar modeset=1;//设置运行间隔时的模式 uchar jiange1,jiange2,jiange3,jiange4; uchar level; //亮度等级 uchar light; //=PCF8591的3通道 uchar mode=1;//流水灯工作模式 uchar reserve;//保护现场 uchar S6count=0;//0为关数码管状态,1为数码管显示且闪模式位,2为数码管显示且闪运行间隔; bit S7=0; //S7按键按下为1表示流水灯启动工作 bit bling=0; //用于数码管0.8秒闪烁 bit AD_flag=1; //AD采集 bit PWM; //用于亮度 bit flag=0; //读EEPROM的条件之一 void delayms(uint ms);//1毫秒延时子程序 void keyscan(void);//独立按键扫描 void allinit(void);//关闭继电器蜂鸣器数码管LED灯 void Timer1Init(void); void Timer0Init(void); void S6DATAPRO();//S6按键下的一些数据处理 void main(void) { // Write_EEPROM(0x01,4);delayms(10); // Write_EEPROM(0x02,4);delayms(10); // Write_EEPROM(0x03,4);delayms(10); // Write_EEPROM(0x04,4);delayms(10); jiangge1=Read_EEPROM(0x01);delayms(10); jiangge2=Read_EEPROM(0x02);delayms(10); jiangge3=Read_EEPROM(0x03);delayms(10); jiangge4=Read_EEPROM(0x04);delayms(10); jiangge=jiangge1; allinit(); Timer1Init(); Timer0Init(); EA=1;ET0=1;ET1=1; while(1) { keyscan(); S6DATAPRO(); } } void delayms(uint ms) { uint i,j; for(i=ms;i>0;i--) for(j=845;j>0;j--); } void keyscan(void) { if(P30==0) { //delayms(5); if(P30==0) { if(S7==0){S7=1;TR0 =1;} else S7=0; } while(!P30); } else if(P31==0) { delayms(5); if(P31==0) { S6count++; flag=1; } while(!P31); } else if(P32==0) { //delayms(5); if(P32==0) { flag=1; //加按键 if(S6count==1) { modeset++; if(modeset==5)modeset=1; } else if(S6count==2) { jiangge++; if(jiangge==13)jiangge=12; } } while(!P32); } else if(P33==0) { //delayms(5); flag=1; if(P33==0 && S6count!=0)//减按键 { if(S6count==1) { modeset--; if(modeset==0)modeset=4; } else if(S6count==2) { jiangge--; if(jiangge==3)jiangge=4; } } while(P33==0 && S6count!=0); if(P33==0 && S6count==0)//显示亮度等级按键 { yi=er=san=si=wu=liu=11;qi=10;ba=level; } } } void allinit(void) { P2=0xA0;P0=0x00;//关闭凤鸣器继电器 P2=0x80;P0=0xFF;//关闭led灯 P2=0xC0;P0=0xFF;//选择所有数码管 P2=0xFF;P0=0xFF;//关闭所有数码管 } void S6DATAPRO() { if(S6count==0 && P33==1) { yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11; } else if(bling==1 && S6count==1) { yi=10;er=11;san=10;si=11;wu=jiangge/10;liu=jiangge%10;qi=0;ba=0; } else if(bling==1 && S6count==2) { yi=10;er=modeset;san=10;si=11;wu=11;liu=11;qi=11;ba=11; } else if(bling==0 && S6count!=0) { yi=10;er=modeset;san=10;si=11;wu=jiangge/10;liu=jiangge%10;qi=0;ba=0; } } void Timer0Init(void) //100微秒@11.0592MHz { AUXR |= 0x80; //定时器时钟1T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0xAE; //设置定时初值 TH0 = 0xFB; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 0; //定时器0开始计时 } void Timer1Init(void) //2毫秒@11.0592MHz { AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0x9A; //设置定时初值 TH1 = 0xA9; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 } void TIM0_isr() interrupt 1 { static uchar PWMcount=0; static uint numcount=0; static uchar number=0; PWMcount++;numcount++; reserve=P0;P0=0xff; if(PWMcount==80) { PWMcount=0; PWM=1; } if(level==1 && PWMcount==20)PWM=0; else if(level==2 && PWMcount==40)PWM=0; else if(level==3 && PWMcount==60)PWM=0; else if(level==4) PWM=1; if(mode==1 && numcount==jiangge1*1000) { numcount=0; if(S7==1)number++; if(number==8) { number=7;mode=2; } } else if(mode==2 && numcount==jiangge2*1000) { numcount=0; if(S7==1)number--; if(number==255) { number=0;mode=3; } } else if(mode==3 && numcount==jiangge3*1000) { numcount=0; if(S7==1)number++; if(number==4) { number=3;mode=4; } } else if(mode==4 && numcount==jiangge4*1000) { numcount=0; if(S7==1)number--; if(number==255) { number=0;mode=1; } } if(PWM==1) { switch(mode) { case 1: P2=0x80;P0=mode1_2[number];break; case 2: P2=0x80;P0=mode1_2[number];break; case 3: P2=0x80;P0=mode3_4[number];break; case 4: P2=0x80;P0=mode3_4[number];break; } } else if(PWM==0) { P2=0x80;P0=0xff; } P2=0xff;P0=reserve; } void TIM1_isr() interrupt 3 { static uint shan=0; static uchar ADscan=0; static uchar SEG=0; shan++;ADscan++;SEG++; if(shan==400) { shan=0;bling=!bling; } if(AD_flag==1) { light=PCF8591(0x03); if(light<25)level=1; else if(light<50)level=2; else if(light<75)level=3; else if(light<100)level=4; } if(S6count==1&& flag==1) { switch(modeset) { case 1: jiangge=Read_EEPROM(0x01);flag=0;break; case 2: jiangge=Read_EEPROM(0x02);flag=0;break; case 3: jiangge=Read_EEPROM(0x03);flag=0;break; case 4: jiangge=Read_EEPROM(0x04);flag=0;break; } } if(S6count==3) { switch(modeset) { case 1: jiangge1=jiangge;Write_EEPROM(0x01,jiangge);break; case 2: jiangge2=jiangge;Write_EEPROM(0x02,jiangge);break; case 3: jiangge3=jiangge;Write_EEPROM(0x03,jiangge);break; case 4: jiangge4=jiangge;Write_EEPROM(0x04,jiangge);break; } S6count=0; } if(1==SEG) { P2=0xC0;P0=0x01;P2=0xFF;P0=0xff;P0=tab[yi]; } else if(SEG==2){ P2=0xC0;P0=0x02;P2=0xFF;P0=0xff;P0=tab[er]; } else if(SEG==3){ P2=0xC0;P0=0x04;P2=0xFF;P0=0xff;P0=tab[san];} else if(SEG==4){ P2=0xC0;P0=0x08;P2=0xFF;P0=0xff;P0=tab[si]; } else if(SEG==5){ P2=0xC0;P0=0x10;P2=0xFF;P0=0xff;P0=tab[wu]; } else if(SEG==6){ P2=0xC0;P0=0x20;P2=0xFF;P0=0xff;P0=tab[liu];} else if(SEG==7){ P2=0xC0;P0=0x40;P2=0xFF;P0=0xff;P0=tab[qi]; } else if(SEG==8){ P2=0xC0;P0=0x80;P2=0xFF;P0=0xff;P0=tab[ba]; } else if(SEG==9){ P2=0xC0;P0=0x80;P2=0xFF;P0=0xff;P0=tab[11]; } if(SEG==9)SEG=0; }
IIC.c
#include "STC15F2K60S2.h" #include "iic.h" #include "intrins.h" #define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();} #define SlaveAddrW 0xA0 #define SlaveAddrR 0xA1 //总线引脚定义 sbit SDA = P2^1; /* 数据线 */ sbit SCL = P2^0; /* 时钟线 */ //总线启动条件 void IIC_Start(void) { SDA = 1; SCL = 1; somenop; SDA = 0; somenop; SCL = 0; } //总线停止条件 void IIC_Stop(void) { SDA = 0; SCL = 1; somenop; SDA = 1; } //等待应答 bit IIC_WaitAck(void) { SDA = 1; somenop; SCL = 1; somenop; if(SDA) { SCL = 0; IIC_Stop(); return 0; } else { SCL = 0; return 1; } } //通过I2C总线发送数据 void IIC_SendByte(unsigned char byt) { unsigned char i; for(i=0;i<8;i++) { if(byt&0x80) { SDA = 1; } else { SDA = 0; } somenop; SCL = 1; byt <<= 1; somenop; SCL = 0; } } //从I2C总线上接收数据 unsigned char IIC_RecByte(void) { unsigned char da; unsigned char i; for(i=0;i<8;i++) { SCL = 1; somenop; da <<= 1; if(SDA) da |= 0x01; SCL = 0; somenop; } return da; } void Write_EEPROM(unsigned char add,unsigned char dat) { IIC_Start(); IIC_SendByte(0xA0); IIC_WaitAck(); IIC_SendByte(add); IIC_WaitAck(); IIC_SendByte(dat); IIC_WaitAck(); IIC_Stop(); } unsigned char Read_EEPROM(unsigned char add) { unsigned char temp; IIC_Start(); IIC_SendByte(0xA0); IIC_WaitAck(); IIC_SendByte(add); IIC_WaitAck(); IIC_Stop(); IIC_Start(); IIC_SendByte(0xA1); IIC_WaitAck(); temp=IIC_RecByte(); IIC_Stop(); return temp; } unsigned char PCF8591(unsigned char add) { unsigned char temp; IIC_Start(); IIC_SendByte(0x90); IIC_WaitAck(); IIC_SendByte(add); IIC_WaitAck(); IIC_Stop(); IIC_Start(); IIC_SendByte(0x91); IIC_WaitAck(); temp=IIC_RecByte(); IIC_Stop(); return temp*0.39; }
IIC.h
#ifndef _IIC_H #define _IIC_H //函数声明 void IIC_Start(void); void IIC_Stop(void); void IIC_SendByte(unsigned char byt); bit IIC_WaitAck(void); unsigned char IIC_RecByte(void); void Write_EEPROM(unsigned char add,unsigned char dat); unsigned char Read_EEPROM(unsigned char add); unsigned char PCF8591(unsigned char add); #endif
-
第九届蓝桥杯单片机省赛----程序题
2021-04-11 20:00:29main.c程序 #include<stc15f2k60s2.h> #include "iic.h" #define uchar unsigned char /...uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//数字0~9,“-”,“关” ucha... -
蓝桥杯单片机第九届省赛-彩灯控制器官方例程完整源码
2021-03-30 21:46:56蓝桥杯单片机第九届省赛-彩灯控制器基于官方例程完整源码,基本模板用的是国信长天官方例程,逻辑框架参考例程。经过测试满足全部题目要求,没有BUG。 -
蓝桥杯单片机第九届国赛决赛_多功能测量仪表_工程代码
2022-05-20 12:05:23蓝桥杯单片机第九届国赛决赛_多功能测量仪表_工程代码,已实现题目所有要求,压缩包内是完整的工程文件,希望能够帮助到大家。 -
【蓝桥杯单片机国赛 第九届】
2022-04-06 21:07:37蓝桥杯国赛第九届 题目 做题思路 首先写上要做的模块,界面,按键细节 一页纸就能让你不用看pdf即可写出整套题 简单示范: 突然就觉得很简单了对不对,笼统看就写几个模块,外加几个界面~ 下面,我就参照我是... -
历年省赛与国赛试题及其解析 (1) 第九届蓝桥杯单片机设计与开发省赛题目fbdfsbfsb - 下载 - 搜珍网
2020-12-22 12:18:32压缩包 : b060a8ea3964df7b76dd6b19084e75.zip 列表题/题/历届决赛...第五届决赛_多功能事件记录器.pdf题/历届决赛/4第六届决赛_智能物料传送系统.pdf题/历届决赛/5.第七届决赛_电压频率采集设备.pdf题/历届省赛/题/... -
蓝桥杯单片机的9~12届的客观真题
2022-02-26 18:35:56本作品是蓝桥杯单片机的9~12届的客观真题 其讲解是引用撞上电子公众号的开源讲解,本作品不做商用。 习题和答案分开方便练习。 整理:重耳 -
蓝桥杯单片机第九届国赛
2022-03-17 19:45:37这题做了好久,主要卡在EEPOM那里了。。。 main.c #include "sys.h" #include "iic.h" #include ... } iic.c /* 程序说明: IIC总线驱动程序 软件环境: Keil uVision 4.10 硬件环境: CT107单片机综合实训平台(12MHz) 日 ... -
第9届蓝桥杯单片机初赛“彩灯控制器”程序部分.rar
2020-08-22 00:29:35本资料为蓝桥杯单片机比赛第八届蓝桥杯单片机初赛“彩灯控制器”程序设计源码,文件包含所涉及的keil5工程文件。 -
第九届蓝桥杯决赛单片机工程文件
2022-05-20 12:19:08第九届蓝桥杯决赛单片机工程文件,已实现题目所有要求,压缩包内是完整的工程文件,希望能够帮助到大家。 -
第十二届蓝桥杯单片机国赛试题与代码解析
2022-05-31 15:55:30相信大家一直都在寻找12届蓝桥杯单片机国赛试题跟答案吧,下面小编就展示12届单片机的试题跟个人代码。 此次的国赛,从模块上看,是五大基本模块:按键模块、数码管模块、LED模块、IIC模块、ds1302模块... -
蓝桥杯单片机——第十二届蓝桥杯单片机第一场省赛
2021-05-08 16:59:13蓝桥杯单片机——第十二届蓝桥杯单片机第一场省赛 目录蓝桥杯单片机——第十二届蓝桥杯单片机第一场省赛一、赛题分析二、问题总结三、代码(完整代码,功能全部实现,附有注释) 一、赛题分析 前两天实验室的学妹把... -
13届蓝桥杯单片机
2022-04-09 14:15:24可能感觉这一届还挺简单,12点多子就交卷了,等下老师还要问比赛情况,然后现在有点慌。。 main.c #include "sys.h" #include "onewire.h" #include "ds1302.h" bit FLAG_TEMP = 1; //温度刷新开关 uchar FLAG = ... -
第七届蓝桥杯单片机省赛
2022-03-24 21:27:16第七届最简单 #include #include unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6}; unsigned char yi,er,san,si,wu,liu,qi,ba; unsigned char wendu; unsigned char ... -
第六届蓝桥杯单片机省赛----程序题
2021-03-24 15:29:39main.c程序 #include<stc15f2k60s2.h> #include "ds18b20.h" #include <ds1302.h> #define uchar unsigned char //定义无...uchar code tab[]={0xc0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0Xb... -
第五届蓝桥杯单片机省赛----程序题
2021-03-24 13:54:20注:第六届模拟题即第五届蓝桥杯单片机省赛试题 功能不多,逻辑也非常简单,相信大家一看便很清楚了,直接上程序,里面包含有注释。 main.c程序 #include<stc15f2k60s2.h> #include "ds18b20.h" #define ...