【蓝桥杯】赛前一周模板

小蜜蜂代码风格的,模块都在,希望能够帮助你吧。

目录

AT24C02存储芯片

DS18B20温度传感器

DS1302 时钟

NE555频率测量

PCF8591 AD 

PWM波

超声波测距

串口UART

4X4矩阵按键


AT24C02存储芯片

void Write_AT24C02(unsigned char addr,unsigned char dat)
{I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(addr);I2CWaitAck();I2CSendByte(dat);I2CWaitAck();I2CStop();
}void Read_AT24C02(unsigned char addr)
{I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(addr);I2CWaitAck();I2CStart();I2CSendByte(0xa1);I2CWaitAck();tmp = I2CReceiveByte();I2CSendAck(1); I2CStop();
}

DS18B20温度传感器

void Read_ds18b20_adc()
{unsigned char LSB, MSB;unsigned int tmep = 0;init_ds18b20();Write_DS18B20(0xcc);Write_DS18B20(0x44);init_ds18b20();Write_DS18B20(0xcc);Write_DS18B20(0x44);LSB = Read_DS18B20();MSB = Read_DS18B20();tmep = (LSB << 8) | MSB;if ((temp & 0xf800) == 0x0000){temp_ds18b2 = temp * 0.0625;}
}
// 如果上电就是85 记得Delay一下

DS1302 时钟

unsigned char code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};unsigned char code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};unsigned char TIME[7] = {0x24, 0x58, 0x23, 0x19, 0x04, 0x06, 0x20};void Init_ds1302()
{unsigned char i;Write_Ds1302_Byte(0x8E, 0x00);for (i = 0; i < 3; i++){Write_Ds1302_Byte(WRITE_RTC_ADDR[i], TIME[i]);}Write_Ds1302_Byte(0x8E, 0x80);
}unsigned char hour, min, sec;
void Read_ds1302()
{sec = Read_Ds1302_Byte(0x81);min = Read_Ds1302_Byte(0x83);hour = Read_Ds1302_Byte(0x85);
}// 考点显示
void DisplaySMG_ds1302()
{DisplaySMG_Bit(0, SMG_NoDot[hour >> 4]);DisplaySMG_Bit(1, SMG_NoDot[hour & 0x0f]);DisplaySMG_Bit(2, 0xbf);DisplaySMG_Bit(3, SMG_NoDot[min >> 4]);DisplaySMG_Bit(4, SMG_NoDot[min & 0x0f]);DisplaySMG_Bit(5, 0xbf);DisplaySMG_Bit(6, SMG_NoDot[sec >> 4]);DisplaySMG_Bit(7, SMG_NoDot[sec & 0x0f]);
}

NE555频率测量

// 方式1
void Init_timer()
{TH0 = 0xff;TL0 = 0xff; // 定时器 0 采用8位重装 0110TH1 = (65536 - 50000) / 256;TL1 = (65536 - 50000) % 256;TMOD = 0x16;ET0 = 1;ET1 = 1;EA = 1;TR0 = 1;TR1 = 1;
}void Service_T0() interrupt 1
{count_f++; // 每一次中断都加一
}void Service_T1() interrupt 3
{TH1 = (65536 - 50000) / 256;TL1 = (65536 - 50000) % 256;count_t++;if (count_t == 20){dat_f = count_f;count_f = 0;count_t = 0;}
}// 方式二
void Init_Timer0_Timer1()
{TH1 = (65536 - 10000) / 256;TL1 = (65536 - 10000) % 256;TH0 = 0;TL0 = 0;TMOD = 0x15;ET0 = 1;ET1 = 1;EA = 1;TR0 = 1;TR1 = 1;
}void Service_Timer0() interrupt 3
{TH1 = (65536 - 10000) / 256;TL1 = (65536 - 10000) % 256;count_t++;if (count_t == 100){count_t = 0;freq = (TH0 << 8) | TL0;TH0 = 0;TL0 = 0;}
}

PCF8591 AD 

void Write_DA(unsigned char dat)
{I2CStart();I2CSendByte(0x90);I2CWaitAck();I2CSendByte(0x41);I2CWaitAck();I2CSendByte(dat);I2CWaitAck();IIC_Stop();
}unsigned char Read_AD()
{unsigned char temp;I2CStart();I2CSendByte(0x90);I2CWaitAck();I2CSendByte(0x41);I2CWaitAck();I2CStart();I2CSendByte(0x91);I2CWaitAck();temp = I2CReceiveByte();I2CSendAck(1);I2CStop();return temp;
}
// 用的最多的就是0x41 0x43

PWM波

// 10000 分成 100份
void Init_Timer0() interrupt 1
{TH0 = (65536 - 100) / 256;TL0 = (65536 - 100) % 256;conut++;if (count <= duty){L1 = 0;}else if (count < 100){L1 = 1;}else if (count == 100){L1 = 0;count = 0;}
}
// 实现了呼吸灯

超声波测距

// 最好用T1实现 因为T0用来实现NE555
sbit TX = P1 ^ 0;
sbit RX = P1 ^ 1;void Delay_12us()
{unsigned char i;_nop_();_nop_(); //  空操作i = 33;while (--i);
}
// STC 生成出来的 带上头文件
void Send_Wave()
{unsigned char i;for(i = 0;i < 8;i++){TX = 1;Delay_12us();TX = 0;Delay_12us();}
}void Measure_Distance()
{unsigned int time = 0;TMOD &= 0x0f;TH1 = 0x00;TH1 = 0x00;Send_Wave();TR1 = 1;while((RX == 1)&&(TF1 ==0))TR1 = 0;if (TF1 == 0){time = TH1;time = (time << 8) | TL1;distance = ((time / 10) * 17) / 100 + 3;}else{TF1 = 0;distance = 999;}
}

串口UART

sfr AUXR = 0x8e;void SendByte(unsigned char dat)
{SBUF = dat;while(TI == 0);TI = 0;
}void SendString(unsigned char *str)
{while(*str != '\0'){SendByte(*str++);}
}
void Init_Uart()
{TMOD = 0x20;TH1 = 0xfd;TL1 = 0xfd;TR1 = 1;SCON = 0x50;AUXR = 0x00;ES = 1;EA = 1;
}unsigned char command = 0x00;
void Service_Uart() interrupt 4
{if(RI == 1){RI = 0;command = SBUF;}
}

4X4矩阵按键

sbit R3 = P3^2;
sbit R4 = P3^3;
sbit C1 = P4^4;
sbit C2 = P4^2;
void Scan_Keys()
{R3 = 0;R4 = 1;C1 = C2 = 1;if(C1 == 0) //S5{DelaySMG(200);if(C1 == 0){if(F_smg == 21 || F_smg == 22 || F_smg == 23){switch(F_smg){case 21: F_smg = 22;break;case 22: F_smg = 23;break;case 23: F_smg = 21;break;}}while(C1 == 0){Display_Info();}}}else if(C2 == 0) //S9{DelaySMG(200);if(C2 == 0){if(F_smg == 3){Param_temprature = Param_temprature - 1;}//if(F_smg == 21 || F_smg == 22 || F_smg == 23){F_time_begin = 1;}if(F_time_2s == 1){hour = 0x00;min = 0x00;sec  = 0x00;F_smg = 1;Max_temprature = 0;Ave_temprature = 0;Max_shidu = 0;Ave_shidu = 0;num = 0;Param_temprature = 30;F_time = 0;F_time_2s = 0;}while(C2 == 0){Display_Info();}F_time_begin = 0;}}R3 = 1;R4 = 0;C1 = C2 = 1;if(C1 == 0) //S4{DelaySMG(200);if(C1 == 0){switch(F_smg){case 1: F_smg = 21;break;case 21: F_smg = 3;break;case 22: F_smg = 3;break;case 23: F_smg = 3;break;case 3: F_smg = 1;break;}while(C1 == 0){Display_Info();}}}else if(C2 == 0) //S8{DelaySMG(200);if(C2 == 0){if(F_smg == 3){Param_temprature = Param_temprature + 1;}while(C2 == 0){Display_Info();}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[AIGC] 分布式锁及其实现方式详解与Python代码示例

当你处理分布式系统的并发问题时&#xff0c;你可能需要使用一把全局性的锁来确保在多个进程或线程间顺序执行一些任务。这就是"分布式锁"的概念。在本文中&#xff0c;我们将详细介绍并演示如何在MySQL、Redis以及ZooKeeper中实现分布式锁&#xff0c;并使用Python来…

Rust 实战练习 - 9. 文本编码,URL编码,加密解密

编解码 编程工作中&#xff0c;很复杂的一个环节的就是编解码和多语言。这里只讨论编解码的工作。 目标&#xff1a; 常见文本编码的转换&#xff08;GBK, Shift-JIS, UTF8, Unicode, ASCII)Web中常用的编码常见的加密算法(md5, sha1, HMAC, AES/DES, RSA) encoding/decodi…

Web 后台项目,权限如何定义、设置、使用:菜单权限、按钮权限 ts element-ui-Plus

Web 后台项目&#xff0c;权限如何定义、设置、使用&#xff1a;菜单权限、按钮权限 ts element-ui-Plus 做一个后台管理项目&#xff0c;里面需要用到权限管理。这里说一下权限定义的大概&#xff0c;代码不多&#xff0c;主要讲原理和如何实现它。 一、权限管理的原理 权限…

自动驾驶基础技术-无迹卡尔曼滤波UKF

自动驾驶基础技术-无迹卡尔曼滤波UKF Unscented Kalman Filter是解决非线性卡尔曼滤波的另一种思路&#xff0c;它利用Unscented Transform来解决概率分布非线性变换的问题。UnScented Kalman Filter不需要像Extended Kalman Filter一样计算Jacobin矩阵&#xff0c;在计算量大…

Pixel 手机上连接提示受阻,无法上网-解决方法

命令行中输入 adb shell settings delete global captive_portal_https_urladb shell settings delete global captive_portal_http_url输入服务器信息 adb shell settings put global captive_portal_http_url http://connect.rom.miui.com/generate_204adb shell settings …

从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南

文章目录 一、写组件1、注册全局组件方法2、组件13、组件2 二、测试三、发布1、配置package.json2、生成库包3、配置发布信息4、发布 四、使用1、安装2、使用 五、维护1、维护和更新2、注意事项 一、写组件 确定组件库的需求和功能&#xff1a;在开始构建组件库之前&#xff0c…

基于jenkins+gitlab+docker部署zabbix

背景 我现在已经在一台服务器上部署了jenkins和gitlab&#xff0c;现在有一个场景是需要在服务器上再部署一个zabbix&#xff0c;需要通过jenkins加上gitlab部署&#xff0c;并且要求zabbix是通过docker部署的 前提条件 jenkins、gitlab已完成部署并能正常访问&#xff0c;服…

再探Java为面试赋能(二)Java基础知识(二)反射机制、Lambda表达式、多态

文章目录 前言1.4 反射机制1.4.1 Class对象的获取1.4.2 Class类的方法1.4.3 通过反射机制修改只读类的属性 1.5 Lambda表达式1.5.1 函数式接口1.5.2 Lambda表达式的使用 1.6 多态1.6.1 多态的概念1.6.2 多态的实现条件1.6.3 重载&#xff08;Overload&#xff09;和重写&#x…

大数据之搭建Hive组件

声明&#xff1a;所有软件自行下载&#xff0c;并存放到统一目录中 1.Hive组件的安装配置 1.1实验环境 服务器集群3 个以上节点&#xff0c;节点间网络互通&#xff0c;各节点最低配置&#xff1a;双核 CPU、8GB 内存、100G 硬盘运行环境CentOS 7.4服务和组件完成前面章节实验…

PyCharm详细安装教程与高效使用指南

引言 PyCharm&#xff0c;作为一款广受Python开发者青睐的集成开发环境&#xff08;IDE&#xff09;&#xff0c;以其强大的代码编辑、调试、版本控制以及项目管理功能&#xff0c;极大地提升了开发效率与编程体验。对于初次接触或希望深入掌握PyCharm的用户来说&#xff0c;正…

Spring Boot整合MyBatis-Plus以及实现分页

MyBatis-Plus 是 MyBatis 的一个增强工具包&#xff0c;它在原有的 MyBatis 框架之上提供了更多便捷的功能和增强&#xff0c;有助于简化开发流程、提高开发效率。以下是 MyBatis-Plus 的一些主要特点和功能&#xff1a; CRUD 操作增强&#xff1a; MyBatis-Plus 提供了一套强大…

HTTP 状态码有哪些?分别表示什么?

状态码由三位数字组成&#xff0c;第一位数字表示响应的类型&#xff0c;常用的状态码有五大类&#xff1a; 1xx&#xff1a;表示服务器已接收了客户端请求&#xff0c;客户端可继续发送请求 2xx&#xff1a;表示服务器已成功接收到请求并进行处理 200 OK&#xff1a;表示客户…

Java基础笔记(一)

一、面向对象高级基础 1.Java的动态绑定机制 public class DynamicBinding {public static void main(String[] args) {//a 的编译类型 A, 运行类型 BA a new B();//向上转型System.out.println(a.sum());//40 子类sum()注释后-> 30System.out.println(a.sum1());//30 子类…

android-自定义TextView在文字内容末尾添加图片icon、可以添加间距

样式示意图 自定义属性 style.xml <declare-styleable name"IconLabelTextView"><attr name"iconSrc" format"reference"/><attr name"iconPaddingStart" format"dimension"/><attr name"iconPad…

访问网站显示不安全是什么原因?怎么解决?

访问网站时显示“不安全”&#xff0c;主要原因以及解决办法&#xff1a; 1.没用HTTPS加密&#xff1a;网站还在用老的HTTP协议&#xff0c;数据传输没加密&#xff0c;容易被人偷看或篡改。解决办法是网站管理员启用HTTPS&#xff0c;也就是给网站装个“SSL证书”。这个是最常…

模块十三 异常_Object

回顾与重点 模块十二回顾 权限修饰符&#xff1a; public → protected → 默认 → private a. 构造一般用public&#xff1a;便于new对象 b. 成员方法一般用public&#xff1a;便于调用 c. 属性一般用private&#xff1a;封装思想 final&#xff1a;最终的 a. 修饰类&#x…

k8s_入门_kubelet安装

安装 在大致了解了一些k8s的基本概念之后&#xff0c;我们实际部署一个k8s集群&#xff0c;做进一步的了解 1. 裸机安装 采用三台机器&#xff0c;一台机器为Master&#xff08;控制面板组件&#xff09;两台机器为Node&#xff08;工作节点&#xff09; 机器的准备有两种方式…

前端开发之el-table(vue2中)固定列fixed滚动条被固定列盖住

固定列fixed滚动条被固定列盖住 效果图前言解决方案 效果图 前言 在使用fixed固定列的时候会出现滚动条被盖住的情况 解决方案 改变el-table固定列的计算高度即可 .el-table {.el-table__fixed-right,.el-table__fixed {height:auto !important;bottom:15px !important;}}

数据结构(七)——查找的基本概念

七、查找 7.1 查找的基本概念 7.1.1 基本概念 查找 —— 在数据集合中寻找满⾜某种条件的数据元素的过程称为查找 查找表&#xff08;查找结构&#xff09;—— ⽤于查找的数据集合称为查找表&#xff0c;它由同⼀类型的数据元素&#xff08;或记录&#xff09;组成 关键字 …

Unity抛物线目标点打击

工具类 public class ShootTool {private Transform start, target, control;private float speed, height;private Vector3 moveDir Vector3.zero;private Vector3[] moveNode;private int moveIndex 5;private int segmentNumber 30;private LineRenderer lineRenderer …