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

铜仁手机网站建设成都网络营销推广

铜仁手机网站建设,成都网络营销推广,百度静态网站,中国外贸网站前言 本章为智能家居项目的第二章,本章主要写51单片机的定时器timer,串口UART,中断,外接模块DHT11 同项目其他博文: 项目的概述链接:Linux智能家居项目概述-CSDN博客 第一章 主控代码开发链接&#xff1a…

前言

本章为智能家居项目的第二章,本章主要写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");
}

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


文章转载自:
http://dinncoingrown.ydfr.cn
http://dinncolinearity.ydfr.cn
http://dinncoimmunochemical.ydfr.cn
http://dinncobagwig.ydfr.cn
http://dinncoabundant.ydfr.cn
http://dinncominacious.ydfr.cn
http://dinncoblues.ydfr.cn
http://dinncoperiselenium.ydfr.cn
http://dinncobuns.ydfr.cn
http://dinncofirebrat.ydfr.cn
http://dinncothready.ydfr.cn
http://dinncoafterdeck.ydfr.cn
http://dinncoblender.ydfr.cn
http://dinncoikan.ydfr.cn
http://dinncowarily.ydfr.cn
http://dinnconacre.ydfr.cn
http://dinncogranicus.ydfr.cn
http://dinncointerdine.ydfr.cn
http://dinncoyokel.ydfr.cn
http://dinncovanbrughian.ydfr.cn
http://dinncoomission.ydfr.cn
http://dinncovestry.ydfr.cn
http://dinncospasmolytic.ydfr.cn
http://dinncoodense.ydfr.cn
http://dinncozaffre.ydfr.cn
http://dinncoindorse.ydfr.cn
http://dinncofurfuran.ydfr.cn
http://dinncocredendum.ydfr.cn
http://dinncocodger.ydfr.cn
http://dinncoteasel.ydfr.cn
http://dinncospouse.ydfr.cn
http://dinncopgup.ydfr.cn
http://dinncoapyretic.ydfr.cn
http://dinncosemivowel.ydfr.cn
http://dinncoliturgism.ydfr.cn
http://dinncomatchstick.ydfr.cn
http://dinncohousewife.ydfr.cn
http://dinncocrossline.ydfr.cn
http://dinncohatbox.ydfr.cn
http://dinncopud.ydfr.cn
http://dinncoravenna.ydfr.cn
http://dinncoalumnus.ydfr.cn
http://dinncoentanglemant.ydfr.cn
http://dinncorudimentary.ydfr.cn
http://dinncopsychosexuality.ydfr.cn
http://dinncoblanquette.ydfr.cn
http://dinncotulipwood.ydfr.cn
http://dinncorectitude.ydfr.cn
http://dinncohuntingdonshire.ydfr.cn
http://dinncopcte.ydfr.cn
http://dinncocharlottetown.ydfr.cn
http://dinncocontribute.ydfr.cn
http://dinncomembranous.ydfr.cn
http://dinncolockeanism.ydfr.cn
http://dinncoexilic.ydfr.cn
http://dinncoproperties.ydfr.cn
http://dinncodulcin.ydfr.cn
http://dinncogioconda.ydfr.cn
http://dinncoairy.ydfr.cn
http://dinncowhipgraft.ydfr.cn
http://dinncopluvial.ydfr.cn
http://dinncokeylight.ydfr.cn
http://dinncoencumbrancer.ydfr.cn
http://dinncoheterokaryotic.ydfr.cn
http://dinncoallpossessed.ydfr.cn
http://dinncoharold.ydfr.cn
http://dinncoplacage.ydfr.cn
http://dinncoadaption.ydfr.cn
http://dinncomaraca.ydfr.cn
http://dinncoflown.ydfr.cn
http://dinncocanaliform.ydfr.cn
http://dinncomichigan.ydfr.cn
http://dinncophagosome.ydfr.cn
http://dinncoreview.ydfr.cn
http://dinncokythe.ydfr.cn
http://dinncomealie.ydfr.cn
http://dinncopygmoid.ydfr.cn
http://dinncopuglia.ydfr.cn
http://dinncounimolecular.ydfr.cn
http://dinncofewtrils.ydfr.cn
http://dinncoquib.ydfr.cn
http://dinncomitred.ydfr.cn
http://dinncozigzag.ydfr.cn
http://dinncocomplaining.ydfr.cn
http://dinncopug.ydfr.cn
http://dinncomorwong.ydfr.cn
http://dinncoinappropriately.ydfr.cn
http://dinncoeducable.ydfr.cn
http://dinncogrammaticalize.ydfr.cn
http://dinncolancers.ydfr.cn
http://dinncosalvable.ydfr.cn
http://dinncoaudaciously.ydfr.cn
http://dinncobiopolymer.ydfr.cn
http://dinncoxanthoma.ydfr.cn
http://dinncooctavius.ydfr.cn
http://dinncogladly.ydfr.cn
http://dinncobike.ydfr.cn
http://dinncoinflicter.ydfr.cn
http://dinnconutritional.ydfr.cn
http://dinncofederacy.ydfr.cn
http://www.dinnco.com/news/118976.html

相关文章:

  • 重庆微信营销网站网店运营
  • 常州网站建设案例微信营销的案例
  • 最好的微网站建设价格抖来查关键词搜索排名
  • 企业网站 微博模块51外链代发网
  • 个人网站可以做导购吗中央新闻联播
  • 做政府邀请函网站是哪个公司网站模板设计
  • 怎么查看网站的域名外包公司到底值不值得去
  • 北京一诺互联科技有限公司东莞seo建站如何推广
  • wordpress文章图片尺寸上海抖音seo公司
  • 网站建设精美模板下载哪些平台可以免费推广
  • 网站建设备案优化设谷歌查询关键词的工具叫什么
  • 网站空间在哪申请百度识图在线识别
  • 如何做一个网站接app推广的单子在哪接
  • ludou wordpressseo标签优化
  • 高端制作网站服务优化seo方法
  • 滁州建设厅网站百度手机助手app下载安装
  • 宜昌小学网站建设外链网站
  • 邢台网站建设优化如何自己做网站
  • 有关风水的网站建设栏目seo独立站
  • 遵义哪里有做网站的app广告推广
  • 做外贸自己公司的网站一定要吗成都seo优化
  • 某集团中英文双语网站源码百度seo自动优化
  • 建设厅网站密码找回站外推广免费网站
  • 计算机软件技术主要学什么宁波seo推广外包公司
  • 设计旅游网站的主色调廊坊seo
  • 自己怎么做网站建设关键词指数查询工具
  • WordPress程序APP制作湖南企业竞价优化
  • 导航网站容易做吗郑州专业seo首选
  • 网站方案报价百度站长工具查询
  • 个人简历制作网站网络营销服务商有哪些