声明:1、我发布程序旨在希望大家蓝桥杯单片机比赛可以取得好成绩

           2、在看我程序之前希望大家先去B站观看完小蜜蜂老师的蓝桥杯单片机视频讲解

小蜜蜂视频链接:【小蜜蜂笔记】蓝桥杯大赛-单片机设计与开发基础技能与进阶强化教程_哔哩哔哩_bilibili

本程序资源包采用第十三届蓝桥杯资源包

博客包含第八届第十三届蓝桥杯单片机真题所有程序

main.c 

#include <reg52.h>
#include <iic.h>
sfr P4 = 0xc0;sbit R1 = P3^0;
sbit R2 = P3^1;
sbit R3 = P3^2;
sbit R4 = P3^3;sbit C1 = P3^4;
sbit C2 = P3^5;
sbit C3 = P4^2;
sbit C4 = P4^4;sbit L1 = P0^0;
sbit L2 = P0^1;
sbit L3 = P0^2;//变量区
unsigned char flag_2 = 0;
unsigned char flag_3 = 0;
unsigned char count_LED = 0;
unsigned int count1 = 0;
unsigned char flag_LED = 0;
unsigned char state_1 = 1;//界面切换
unsigned char count = 0;//计数
signed int number;//电压参数
unsigned int Rb3 = 0;
unsigned char SMG_val[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//锁存器的选择
void SelectHC573(unsigned char channel)
{switch(channel){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 Select_SMG(unsigned char pos,val)
{SelectHC573(7);P0 = 0xff;SelectHC573(6);P0 = 0x01 << pos;SelectHC573(7);P0 = val;
}
//数码管的选择(带点)
void SelectDot_SMG(unsigned char pos,val)
{SelectHC573(7);P0 = 0xff;SelectHC573(6);P0 = 0x01 << pos;SelectHC573(7);P0 = val & 0x7f;
}
//关闭所有
void CloseAll()
{SelectHC573(6);P0 = 0xff;SelectHC573(7);P0 = 0xff;
}
//定时器0初始化
void InitTimer0()
{TMOD = 0x01;TH0 = (65536 - 10000) / 256;TL0 = (65536 - 10000) % 256;EA = 1;ET0 = 1;
}
//定时器0服务函数
void ServiceT0() interrupt 1
{TH0 = (65536 - 10000) / 256;TL0 = (65536 - 10000) % 256;count1 ++;if(count1 == 500){flag_LED = 1;}
}
//延迟函数
void Delay(unsigned int t)
{while(t --);
}
//Rb2
void Display_Rb3()
{Select_SMG(0,0xc1);Delay(100);SelectDot_SMG(5,SMG_val[Rb3 / 100]);Delay(100);Select_SMG(6,SMG_val[Rb3 / 10 % 10]);Delay(100);Select_SMG(7,SMG_val[Rb3 % 10]);Delay(100);CloseAll();
}
//电压参数
void Display_Count()
{Select_SMG(0,0x8c);Delay(100);Select_SMG(6,SMG_val[count / 10]);Delay(100);Select_SMG(7,SMG_val[count % 10]);Delay(100);CloseAll();
}
//计数
void Display_CS()
{Select_SMG(0,0xc8);Delay(100);SelectDot_SMG(5,SMG_val[number / 100]);Delay(100);Select_SMG(6,SMG_val[number / 10 % 10]);Delay(100);Select_SMG(7,SMG_val[number % 10]);Delay(100);CloseAll();
}
void Display();
//按键
void KEY_BTN()
{R4 = 0; R2 = R3 = R1 = 1; //S12C1 = C2 = C3 = C4 = 1;if(C2 == 0){Delay(100);if(C2 == 0){if(state_1 == 1){state_1 = 2;count_LED = 0;}else if(state_1 == 2){state_1 = 3;IIC_AT24C02_Write(0x00,number / 10);count_LED = 0;}else if(state_1 == 3){state_1 = 1;count_LED = 0;}}while(C2 == 0){Display();}}R3 = 0; R2 = R4 = R1 = 1; //S13C1 = C2 = C3 = C4 = 1;if(C2 == 0){Delay(100);if(C2 == 0){if(state_1 == 3){count = 0;count_LED = 0;}else {count_LED ++;}}while(C2 == 0){Display();}}R4 = 0; R2 = R3 = R1 = 1; //S16C1 = C2 = C3 = C4 = 1;if(C1 == 0){Delay(100);if(C1 == 0){if(state_1 == 2){number += 50;count_LED = 0;if(number > 500){number = 0;}}else {count_LED ++;}}while(C1 == 0){Display();}}R3 = 0; R2 = R4 = R1 = 1; //S17C1 = C2 = C3 = C4 = 1;if(C1 == 0){Delay(100);if(C1 == 0){if(state_1 == 2){number -= 50;count_LED = 0;if(number < 0){number = 500;}}else {count_LED ++;}}while(C1 == 0){Display();}}
}
//界面
void Display()
{switch(state_1){case 1 : Display_Rb3();break;case 2 : Display_CS();break;case 3 : Display_Count();break;}
}
//LED
void LED_running()
{SelectHC573(4);if(Rb3 < number){TR0 = 1;}else if(Rb3 >= number){TR0 = 0;count1 = 0;flag_LED = 0;}if(flag_LED == 1){L1 = 0;}else if(flag_LED == 0){L1 = 1;}if(count % 2 == 0){L2 = 1;}else {L2 = 0;}if(count_LED >= 3){L3 = 0;}else {L3 = 1;}
}
//计数条件
void Count_TJ()
{if(Rb3 > number){flag_2 = 1;}if(Rb3 < number){if(flag_2 == 1){flag_3 = 1;}}if(flag_3 == 1){count ++;flag_2 = 0;flag_3 = 0;if(count > 99){count = 0;}}
}
//系统初始化
void InitSystem()
{SelectHC573(5);P0 = 0x00;SelectHC573(4);P0 = 0xff;
}
//主函数
void main()
{if(IIC_AT24C02_Read(0x00) < 0 || IIC_AT24C02_Read(0x00) > 50){number = 0;}else {number = IIC_AT24C02_Read(0x00) * 10;}InitTimer0();InitSystem();while(1){Rb3 = Rb3_IIC() * 1.961;KEY_BTN();Display();LED_running();Count_TJ();}
}

IIC.c

#include "iic.h"#define DELAY_TIME 5//I2C总线内部延时函数
void IIC_Delay(unsigned char i)
{do{_nop_();}while(i--);
}//I2C总线启动信号
void IIC_Start(void)
{SDA = 1;SCL = 1;IIC_Delay(DELAY_TIME);SDA = 0;IIC_Delay(DELAY_TIME);SCL = 0;
}//I2C总线停止信号
void IIC_Stop(void)
{SDA = 0;SCL = 1;IIC_Delay(DELAY_TIME);SDA = 1;IIC_Delay(DELAY_TIME);
}//发送应答或非应答信号
void IIC_SendAck(bit ackbit)
{SCL = 0;SDA = ackbit;                    IIC_Delay(DELAY_TIME);SCL = 1;IIC_Delay(DELAY_TIME);SCL = 0; 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;
}//I2C总线发送一个字节数据
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;
}//I2C总线接收一个字节数据
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;
}
//RB3
unsigned char Rb3_IIC()
{unsigned char dat;IIC_Start();IIC_SendByte(0x90);IIC_WaitAck();IIC_SendByte(0x03);IIC_WaitAck();IIC_Start();IIC_SendByte(0x91);IIC_WaitAck();dat = IIC_RecByte();IIC_WaitAck();IIC_Stop();return dat;
}
//AT24C02写
void IIC_AT24C02_Write(unsigned char addr,dat)
{IIC_Start();IIC_SendByte(0xa0);IIC_WaitAck();IIC_SendByte(addr);IIC_WaitAck();IIC_SendByte(dat);IIC_WaitAck();IIC_Stop();
}
//AT24C02读
unsigned char IIC_AT24C02_Read(unsigned char addr)
{unsigned char dat;IIC_Start();IIC_SendByte(0xa0);IIC_WaitAck();IIC_SendByte(addr);IIC_WaitAck();IIC_Start();IIC_SendByte(0xa1);IIC_WaitAck();dat = IIC_RecByte();IIC_WaitAck();IIC_Stop();return dat;
}

IIC.h

#ifndef _IIC_H
#define _IIC_H#include "reg52.h"
#include "intrins.h"sbit SDA = P2^1;
sbit SCL = P2^0;//void IIC_Start(void);
//void IIC_Stop(void);
//bit IIC_WaitAck(void);
//void IIC_SendAck(bit ackbit);
//void IIC_SendByte(unsigned char byt);
//unsigned char IIC_RecByte(void);
#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1unsigned char Rb3_IIC();
void IIC_AT24C02_Write(unsigned char addr,dat);
unsigned char IIC_AT24C02_Read(unsigned char addr);#endif

第十一届蓝桥杯单片机完整程序相关推荐

  1. 第十一届 蓝桥杯 单片机设计与开发项目 决赛

    第十一届 蓝桥杯 单片机设计与开发项目 决赛 题目 源码 赛题总结 1.界面切换 2.参数生效 3.LED显示 题目 源码 #include <STC15F2K60S2.H> #inclu ...

  2. 第十一届蓝桥杯 单片机设计与开发省赛试题

    第十一届蓝桥杯 单片机设计与开发 省赛 在昨天举办了第一波11届蓝桥杯比赛,第2波大概在10月份左右,看了看比赛题目,这次题目对于我来说,程序设计题简单,客观题全靠蒙! 本次比赛涉及: 1.数码管显示 ...

  3. 第九届蓝桥杯单片机完整程序

    声明:1.我发布程序旨在希望大家蓝桥杯单片机比赛可以取得好成绩            2.在看我程序之前希望大家先去B站观看完小蜜蜂老师的蓝桥杯单片机视频讲解 小蜜蜂视频链接:[小蜜蜂笔记]蓝桥杯大赛 ...

  4. 第十三届蓝桥杯单片机完整程序

    声明:1.我发布程序旨在希望大家蓝桥杯单片机比赛可以取得好成绩            2.在看我程序之前希望大家先去B站观看完小蜜蜂老师的蓝桥杯单片机视频讲解 小蜜蜂视频链接:[小蜜蜂笔记]蓝桥杯大赛 ...

  5. 第十二届蓝桥杯单片机完整程序

    声明:1.我发布程序旨在希望大家蓝桥杯单片机比赛可以取得好成绩            2.在看我程序之前希望大家先去B站观看完小蜜蜂老师的蓝桥杯单片机视频讲解 小蜜蜂视频链接:[小蜜蜂笔记]蓝桥杯大赛 ...

  6. 第八届蓝桥杯单片机完整程序

    声明:1.我发布程序旨在希望大家蓝桥杯单片机比赛可以取得好成绩            2.在看我程序之前希望大家先去B站观看完小蜜蜂老师的蓝桥杯单片机视频讲解 小蜜蜂视频链接:[小蜜蜂笔记]蓝桥杯大赛 ...

  7. 第十一届 蓝桥杯 单片机设计与开发项目 省赛 程序设计试题及源码

    一.试题 1. 基本要求 1.1 使用大赛组委会提供的国信长天单片机竞赛实训平台,完成本试题的程序设计 与调试. 1.2 选手在程序设计与调试过程中,可参考组委会提供的"资源数据包" ...

  8. 第十一届蓝桥杯单片机省赛题目解析

    最近也是刚把第十一届的题目写完,我们一起来看看2020年的省赛题目吧. 题目 这次题目照样还是LED.数码管.按键三大模块 ,还有模拟电压输入(ADC).AT24C02(EEPROM),都是常见的外设 ...

  9. 第十一届蓝桥杯单片机组省赛模拟试题——智能门锁

    试题可以直接在官网下载(试题链接),十分神奇地考了矩阵键盘. 按键功能: 矩阵键盘扫描方法很多,这里采用逐行扫描的方法:每次将某一行(R1.R2.R3.R4)置低电平,然后去读每一列(C1.C2.C3 ...

最新文章

  1. 深度学习框架:GPU
  2. tomcat更换服务器后无法显示验证码
  3. MAXIEYE创始人周圣砚:以规模化迎接智能驾驶科技平权时代 | MEET2022
  4. 像素游戏的动态光影效果
  5. Android内核和Linux内核的区别
  6. 对现有的所能找到个DDOS代码(攻击模块)做出一次分析----TCP篇
  7. Query Ajax 实例 ($.ajax、$.post、$.get)
  8. opc怎么在计算机上测试,OPC测试
  9. 哪些事情瞬间暴露了你的贫穷?
  10. Debian完全卸载清理MySQL服务器
  11. 同一个页面多个ajax提交,速度缓慢
  12. oracle 10g在线重定义新特性——关联对象自动重命名(二)
  13. 深入了解STL中set与hash_set,hash表基础
  14. aliplayer隐藏工具条
  15. badbody下_BadboyInstaller下载-录制脚本工具Badboy下载2.2.5 官方最新版-西西软件下载...
  16. Unity3D学习路线与学习经验分享
  17. 删除U盘上的EFI分区
  18. MD5码加密(盐值加密)
  19. 详解操作符第二章(隐式类型转换)(详细讲解为何诸如(++i)+(++i)+(++i)是烂代码)
  20. python K-means聚类分析聚类数的选择-肘部法则和轮廓系数

热门文章

  1. Excel 2010 VBA 入门 051 获取和设置计算机中的当前日期
  2. Discuz WinCache + yac
  3. 参考雉辉军的PID调试手册
  4. 2023我的创作纪念日
  5. mangle nat filter
  6. WeGeek Talk | 凹凸实验室
  7. EasyDarwin+ffmpeg进行PC(摄像头+麦克风)流媒体直播服务
  8. word插入代码美化在线站点
  9. uniapp关于iphone底部安全区域
  10. 360player免费全景图播放器更新-附开发教程-20200101