十一届蓝桥杯单片机组省赛内容及例程(附代码)
在准备蓝桥杯单片机比赛,做了第一次省赛的题目,代码供大家参考,欢迎大家指出不足。
题目
例程
主函数
test.c
#include "stc15f2k60s2.h"
#include "iic.h"
#define uchar unsigned char
void show_moshi1();
void show_moshi2();
void show_moshi3();
void Write_24C02(uchar addr,uchar dat);
uchar Read_24C02(uchar addr);
uchar code SMG[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//带小数点
uchar code SMG_dot[]={
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//提示符字母
uchar code alphabet[]={
0xc1,0x8c,0xc8};
//PCF8591参数
uchar tmp;
int res;
//设置参数
int vpp=0;
//键盘值
int key_value;
//uchar key_stat=1;
//界面
uchar menu=1;
//计数值
int count=0;
int count_res=0;
//计数高低
bit high=0;
bit low=0;
uchar num=0;
//定时
uchar ms_50;
//LED模式
uchar led_moshi=0xff;
void delayms(unsigned int t){
uchar i;
while(t--) for(i=0;i<123;i++);
}
void HC138(uchar n){
switch(n){
case 4:
P2=(P2&0x1f)|0x80;
break;
case 5:
P2=(P2&0x1f)|0xa0;
break;
case 6:
P2=(P2&0x1f)|0xc0;
break;
case 7:
P2=(P2&0x1f)|0xe0;
break;
}
}
void show(uchar value,uchar pos){
//函数非内置SMG
HC138(6);
P0=0x01<<pos;
HC138(7);
P0=value;
}
void init(){
//关闭蜂鸣器
HC138(5);
P0=0x00;
HC138(4);
P0=0xff;
}
//==============PCF8591========================
void Read_PCF8591(){
double jingdu=500.0/255;
uchar n=5;
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte