当前位置: 首页 > news >正文

第二章 智能家居子系统——C51单片机 配置波特率115200

前言

本章为智能家居项目的第二章,本章主要写51单片机的定时器timer,串口UART,中断,外接模块DHT11

同项目其他博文:

项目的概述链接:Linux智能家居项目概述-CSDN博客

第一章 主控代码开发链接:第一章 智能家居(主控)的开发及代码分析-CSDN博客

文章目录

目录

前言

文章目录

一 定时器中断

1.1 定时器0和定时器1初始化

1.2 定时器0中断函数

1.3 定时器1中断函数

二 串口波特率配置及中断115200

三 DHT11实现监测温湿度,并通过串口发送给主控系统


一 定时器中断

1.1 定时器0和定时器1初始化

在下文的定时器函数中出现的PT0和PT1为中断优先级控制位

定时器0初始化(定时器0用于舵机控制)

void Time0Init()
{TMOD = 0x01;TL0=0x33;   	//装初值,0.5msTH0=0xFE;TR0 = 1;  		//开始数数TF0 = 0;ET0 = 0; 			//关定时器0中断EA = 1;    		//打开总中断PT0 =1;				//设定时器T0为高优先级中断
}

PT0:T0中断优先级控制位。PT0=1,设定定时器T0为高优先级中断;PT0=0,设定时器T0为低优先级中断。

定时器1初始化(定时器1 用于定时发送数据)

void Timer1Init(void)		//设置定时器1
{AUXR &= 0xBF;		TMOD &= 0x0F;			//高位清0 低位不变TMOD |= 0x10;			//高位置1 低位不变TL1 = 0x00;				//装初值,定时50msTH1 = 0x4C;		TF1 = 0;					//开始定时TR1 = 1;					//TRTF 开始数数ET1 = 1;   				//打开定时器1中断EA  = 1;					//打开总中断PT1 = 0;					//设定时器T1为低优先级中断
}

PT1:T1中断优先级控制位。PT1=1,设定定时器T1为高优先级中断;PT1=0,设定定时器T1为低优先级中断。

1.2 定时器0中断函数

/*******************************************函数功能:实现舵机转现*定时器0中断
*****************************************/
void Time0Handler() interrupt 1
{cnt++; 				//用于调节IO的输出频率,用于舵机LED_count++;TL0=0x33;           // 重装初值,设置中断时间为0.5msTH0=0xFE;if(cnt < jd){       //jd = 0时舵机角度为0度,jd = 5舵机角度为180度sg90 = 1;}else{sg90 = 0;}if(cnt == 40){cnt = 0; sg90 = 1;}
}

1.3 定时器1中断函数

/*******************************************函数功能:1s 发送温湿度给主机*定时器1中断
*****************************************/void Time1Handler() interrupt 3
{	timer1_conut++;TL1 = 0x00;		                //装低八位初值 50msTH1 = 0x4C;		                //装高八位初值if(timer1_conut == 20){       //计时一秒时,发一次温湿度数据ET0 = 0;                //定时器1断开,等待串口将温湿度数据发送完毕timer1_conut = 0;get_wenshidu();ET0 = 1;	            //定时器1继续计时}
}

二 串口波特率配置及中断115200

由于使用使用软件不能直接配置出115200的波特率,然后上网查资料,最后使用定时器2和波特率发生器后完成串口的配置。

//设置串口波特率为115200
void init_com( void ) 
{ SCON = 0x50; //串口工作方式1,8位UART,波特率可变  TH2 = 0xFF;           TL2 = 0xFD;    //波特率:115200 晶振=11.0592MHz RCAP2H = 0xFF;   RCAP2L = 0xFD; 16位自动再装入值/*****************/TCLK = 1;   RCLK = 1;   C_T2 = 0;   EXEN2 = 0; //波特率发生器工作方式/*****************/TR2 = 1 ;    //定时器2开始EA = 1;    //总中断ES = 1;      //串口中断标志位PS = 1;      //设置串口优先级为最高
}

当时主控开发板的波特率为115200,然后51单片机的波特率为9600,那会我还不清楚主控的波特率是多少,就以为默认为9600,然后一通信,好家伙,数据有时对有时不对,还以为代码逻辑出了问题,改了好久好久

/* 串口中断 */
void Uart_Handler() interrupt 4{
static int i = 0;			//
char tmp;if(RI){  //收到数据RI置1RI=0;tmp = SBUF;if(tmp == 'M'){i=0;} cmd[i] = tmp;i++;if(cmd[0] == 'M'){switch (cmd[1]){case'1':								  //打开舵机中断LED1 = OFF;Fa_msg("开舵机中断");//get_wenshidu();ET0 = 1;   							//打开定时器0中断			break;case'2':									//关闭舵机中断LED1 = ON;Fa_msg("关舵机中断");ET0 = 0;   //关中断break;case'3'://  							//打开垃圾桶Fa_msg("close ash-bin");jd = 1;break;case'4':									//打开垃圾桶Fa_msg("open ash-bin");jd = 5;break;case'5'://dingFa_msg("开始发送温湿度");ET1 = 0;break;case'6'://dingFa_msg("停止发送温湿度");ET1 = 1;break;}	}	if(i == 12){memset(cmd,'\0',SIZE);i = 0;}}
}

上述代码为串口UART中断的代码

串口没有数据时,程序正常执行,当串口接收到数据时,串口中断,程序进入串口中断函数,创建cmd[ ]数组接收数据而后判断,如果第一个数据为M时,者证明收到需要的数据,然后判断M的下一位数据cmd[1],如果判断指令存在,则执行相对应的指令

三 DHT11实现监测温湿度,并通过串口发送给主控系统

51单片机发送字符串

void SendByte(char msg){//发送字节SBUF = msg;while(TI == 0);TI=0;}void Fa_msg(char *p){//发送字符串while(*p! = '\0'){SendByte(*p);p++;}
}

将从硬件获取到的温湿度通过串口发送给主控(定时器计算每秒发送一次 )

//将获取到的温湿度值进行赋值,以便利用串口将数据发到主机
void build_data(){ shidu[0] = 'H';shidu[1] = datas[0]/10 + 0x30;shidu[2] = datas[0]%10 + 0x30;shidu[3] = '.';shidu[4] = datas[1]/10 + 0x30;shidu[5] = datas[1]%10 + 0x30;shidu[6] = '%';shidu[7] = '\0';wendu[0] = 'T';wendu[1] = datas[2]/10 + 0x30;wendu[2] = datas[2]%10 + 0x30;wendu[3] = '.';wendu[4] = datas[3]/10 + 0x30;wendu[5] = datas[3]%10 + 0x30;wendu[6] = 'C';wendu[7] = '\0';
}//将温湿度通过串口发送给主机
void get_wenshidu(){Read_Data_Form_DHT();   //获取硬件的温度,并存进数组中build_data();Fa_msg(wendu);          //发送温度Fa_msg("\r\n");//Delay1ms(); Fa_msg(shidu);          //发送湿度Fa_msg("\r\n");
}

 这篇文章没用具体说明每个模块的具体实现,如需要看详解,可以看主页,或找我要笔记

相关文章:

第二章 智能家居子系统——C51单片机 配置波特率115200

前言 本章为智能家居项目的第二章&#xff0c;本章主要写51单片机的定时器timer&#xff0c;串口UART&#xff0c;中断&#xff0c;外接模块DHT11 同项目其他博文&#xff1a; 项目的概述链接&#xff1a;Linux智能家居项目概述-CSDN博客 第一章 主控代码开发链接&#xff1a…...

registry镜像仓库通过HTTP API删除镜像

registry组件提供了HTTP的接口&#xff0c;可以参考&#xff1a;官网API说明 删除思路&#xff1a; 镜像由多个layers层组成&#xff0c;DELETE /v2/<name>/blobs/<digest>可以用来删除一个单独的层&#xff0c;但是我们的目的不是要删除层。 我们用DELETE /v2/…...

【ATTCK】ATTCK视角下的水坑钓鱼攻防战法

在网络安全领域&#xff0c;ATT&CK已经成为了研究和理解恶意攻击者行为的重要工具。站在攻击者的视角&#xff0c;ATT&CK为我们描绘了他们在攻击过程中所使用的各种战术、技术和常见知识。本文将结合ATT&CK框架&#xff0c;对水坑钓鱼攻击进行深入分析&#xff0c;…...

【算法】算法题-20231115

这里写目录标题 一、回文数&#xff08;力扣第九题&#xff09;二、剑指 Offer 39. 数组中出现次数超过一半的数字三、至少是其他数字两倍的最大数&#xff08;leetcode第747题&#xff0c;飞书三面&#xff09;四、给定一有序整型数组&#xff0c;其中存在有重复元素&#xff…...

Rabin Karp 字符匹配算法

Rabin Karp 字符匹配算法 相关题目&#xff1a; 187. 重复的DNA序列 28. 找出字符串中第一个匹配项的下标 class FindRepeatedDnaSequences:"""187. 重复的DNA序列https://leetcode.cn/problems/repeated-dna-sequences/description/"""def sol…...

星宿UI2.51资源付费变现小程序 支持流量主广告投放

目前&#xff0c;最新版的星宿UI是2.51版本。要搭建星宿UI&#xff0c;您需要准备备用域名、服务器和微信小程序账号。星宿UI提供了多项功能&#xff0c;包括文章展示、文章分类、资源链接下载和轮播图等。此外&#xff0c;还支持直接下载附件功能。这些功能使得星宿UI非常适合…...

Telnet 测试 UDP 端口?

Telnet 并不支持 UDP 端口的测试&#xff0c;可以使用 nc 命令来进行测试。nc 命令两种都支持&#xff1a; TCP # nc -z -v -u [hostname/IP address] [port number] # nc -z -v 192.168.10.12 22 Connection to 192.118.20.95 22 port [tcp/ssh] succeeded! UDP # nc -z -v…...

【论文复现】常见问题

1. 提取出错 首先检查嵌入时的像素值是否越界&#xff08;0-255&#xff09;&#xff0c;如果越界则在提取的时候无法正确提取嵌入的时候注意整数除法和浮点数除法向下取整结果不一样&#xff0c;floor(int(10)/16)1&#xff0c;floor(double(10)/16)0 2. 常用代码部分 1.生…...

Uniapp开发 购物商城源码 在线电商商城源码 适配移动终端项目及各小程序

lilishop电商商城系统 商城移动端&#xff0c;使用Uniapp开发&#xff0c;可编译为所有移动终端项目及各小程序 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88487579 源码下载2&#xff1a;关注我留言...

xml schema中的sequence的含义

https://www.w3.org/TR/xmlschema-1/#element-sequence xml schema中的sequence的含义&#xff1a;包含的元素必须按规定的顺序出现。通过属性maxOccurs和minOccurs可以定义最多、最少出现的次数。最多可以定义不限制次数&#xff0c;最少可以定义0次。默认是最少出现1次&…...

详解 KEIL C51 软件的使用·建立工程

单片机要运行,就必须将程序代码下载到程序存储器内部,但是在写进单片机之前要先将你写 的程序转换成*.hex 或*.bin 的文件.不同系列的单片机都有不同的软件对其进行编绎,而 keil Cx51 是德国开发的一个专为 51 系列单片机提供的软件开发平台,基本上现在的所有 51 系列内核的单片…...

2023年03月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 已知一个列表lst = [2,3,4,5,6],lst.append(20),print(lst)的结果是?( )(2分) A.[10,2,3,4,5,6,20] B.[20,2,10,3,4,5,6] C.[2,3,4,5,6,20] D.[2,3,4,5,6,10,20] 答案:C 第2…...

nginx 代理服务时遇到的问题

一 nginx代理多个服务&#xff0c;且服务之间需要相互通信 多个服务运行在docker容器中&#xff0c;nginx同样在docker容器中 比如前端服务需要请求后端服务&#xff0c;用户请求服务器80或者443 &#xff0c;nginx代理请求到前端服务&#xff0c;前端服务业务请求到后端服务…...

利用共享台球室小程序系统提升用户体验

随着移动互联网的普及&#xff0c;越来越多的用户倾向于使用手机应用来解决生活中的问题。共享台球室作为一个结合了传统与现代元素的项目&#xff0c;也需要借助移动小程序的力量来提升用户体验。本文将探讨如何利用共享台球室小程序系统提升用户体验。 一、提供便捷的服务 …...

U-Mail海外邮件中继帮您解决企业邮件退信难题

过去一年&#xff0c;国内外形势严峻复杂&#xff0c;但中国外贸顶住压力、爬坡过坎&#xff0c;进出口规模冲破40万亿元大关&#xff0c;高达42万亿元人民币&#xff0c;中国连续6年位居货物贸易第一大国。随着我国疫情防控措进入新阶段&#xff0c;“拼经济”正在成为各地的一…...

ImageJ灰度值量化分析 实用技巧——免疫组化分析(定量分析篇)

在临床病理诊断中&#xff0c; 免疫组织化学( Immunohistochemistry, IHC) 是一种很重要的技术和手段。 免疫组化标记时细胞阳性着色程度取决于抗原含量、分布密度和标记方法及其敏感性。 一般而言&#xff0c;抗原含量越多&#xff0c;分布密度越高&#xff0c;阳性结果显色…...

了解STM32看门狗定时器的工作原理和原则

STM32 系列微控制器的看门狗定时器 (Watchdog Timer&#xff0c;WWDG) 是一种重要的硬件资源&#xff0c;用于检测系统的异常状态&#xff0c;并在发生异常时执行特定的操作&#xff0c;以确保系统能够正常运行。在本文中&#xff0c;我将详细介绍 STM32 看门狗定时器的工作原理…...

【2014年数据结构真题】

41. (13分&#xff09;二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。 给定一棵二叉树T,采用二叉链表存储&#xff0c;结点结构如下&#xff1a; 其中叶结点的weight域保存该结点的非负权值。 设root为指向T的根结点的指针&#xff0c; 请设计求T 的WPL…...

PostgreSQL基本操作

目录 1.源码安装PostgreSQL 1.1.前置条件&#xff08;root下操作&#xff09; 1.1.1.卸载yum安装的postgresql 1.1.2.创建postgres用户 1.1.3.安装部分依赖 1.1.4.源码安装uuid 1.2.安装PostgreSQL 1.2.1.使用postgres用户管理PostgreSQL 1.2.2.下载解压postgres12源码…...

hadoop 大数据环境配置 ssh免密登录 centos配置免密登录 hadoop(四)

1. 找到.ssh文件夹 cd ~ # 在.ssh文件夹下生成 # cd .ssh 2. 生成私钥公钥命令&#xff1a; ssh-keygen -t rsa3. 发送到需要免密机器&#xff1a; # hadoop23 是我做了配置。在host配置得机器ip和名称得映射 ssh-copy-id hadoop23 4. 成功...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...