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

网站运营与管理的目的是网站机房建设流程

网站运营与管理的目的是,网站机房建设流程,wordpress 流量,江苏省建设工程信息服务平台“智能检测#xff0c;精准把控。温湿度检测系统#xff0c;为您的生活带来全方位的健康保障。”#非标协议项目【上】 前言预备知识1温湿度检测系统需求2.代码整合2.1找到编程实现LCD1602显示一行工程#xff0c;打开代码文件#xff0c;将所需的LCD1602驱动代码拷贝到温湿… “智能检测精准把控。温湿度检测系统为您的生活带来全方位的健康保障。”#非标协议项目【上】 前言预备知识1温湿度检测系统需求2.代码整合2.1找到编程实现LCD1602显示一行工程打开代码文件将所需的LCD1602驱动代码拷贝到温湿度检测系统_1602显示串口发送工程内。2.2找到串口编程03_PC发送指令控制LED工程打开代码文件将所需的LCD1602驱动代码拷贝到温湿度检测系统_1602显示串口发送工程内。2.3找到温湿度通过串口传到PC显示工程打开代码文件将所需的LCD1602驱动代码拷贝到温湿度检测系统_1602显示串口发送工程内。 3.构造DHT11温湿度数据处理函数3.1定义存放温度的字符数组和存放湿度的字符数组3.2在DHT11温湿度数据处理函数内将温湿度数据存入相应字符数组。 4.主函数调用API顺序4.1延时1秒稳定系统4.2初始化串口4.3初始化LCD16024.4延时2秒稳定DHT11模块4.5在while(1)死循环内调用延时一秒函数实现每隔1秒刷新温湿度数据4.6在while(1)死循环内调用读取DHT11温湿度函数4.7在while(1)死循环内调用DHT11温湿度数据处理函数4.8在while(1)死循环内多次调用发送字符串函数实现向PC发送温湿度数据4.9在while(1)死循环内多次调用LCD1602显示一行字符函数实现在LCD1602上显示温湿度数据 5.完整工程代码6项目运行结果结束语 前言 本篇博文介绍的是用51单片机的非标准写协议项目温湿度检测系统【上】包含温湿度检测系统需求代码整合构造DHT11温湿度数据处理函数主函数调用API顺序完整工程代码项目运行结果。看到这篇博文的朋友可以先赞再看吗 预备知识 一、基本电路标识识别和接线例如VCC,GND。   二、电脑基本操作复制粘贴   三、C变量   四、基本输入输出   五、流程控制   六、函数   七、指针   八字符串 如果以上知识不清楚请自行学习后再来浏览。如果我有没例出的请在评论区写一下。谢谢啦 1温湿度检测系统需求 能够实时通过51单片机串口发送温湿度信息能够实时通过51单片机驱动LCD1602显示温湿度信息 2.代码整合 2.1找到编程实现LCD1602显示一行工程打开代码文件将所需的LCD1602驱动代码拷贝到温湿度检测系统_1602显示串口发送工程内。 LCD1602 IO口定义代码 //数据线定义 //D0到D7 -- P0.1到P0.7 #define dataBuffer P0//控制线定义 /* RS--P1.0 RW--P1.1 EN--P1.4 */ sbit RS P1^0; sbit RW P1^1; sbit EN P1^4;LCD1602初始化必要延时代码 void Delay15ms() //11.0592MHz {unsigned char i, j;i 27;j 226;do{while (--j);} while (--i); }void Delay5ms() //11.0592MHz {unsigned char i, j;i 9;j 244;do{while (--j);} while (--i); }检测LCD1602忙代码 void checkBusy() {char tmp 0x80;dataBuffer 0x80;while(tmp 0x80) //只要dataBuffer中的第8位为1就为忙因为BF为忙标志位高电平表示忙此时模块不能接收命令或者数据如果为低电平表示不忙。{RS 0; //根据手册中指令表可知RS0RW1RW 1; //RW1为读的操作所以需要配置读的时序图EN 0; //根据手册中的写时序图EN开始为低电平_nop_(); //执行空函数等待EN拉高EN 1; //根据手册中的读时序图EN被拉高_nop_(); //执行空函数等待tpw和tF高电平过程_nop_();tmp dataBuffer; //读取dataBuffer中的忙信号EN 0; //根据手册中的写时序图EN被拉低_nop_(); //根据手册中的写时序图让EN保持一段时间的低电平} }向LCD1602写地址也就是指令代码和写数据代码 void writeCmd(char cmd) { checkBusy(); //检测忙信号RS 0; //RS等于零是写指令操作RW 0; //RW在手册中写的时序图是可以全程低电平EN 0; //根据手册中的写时序图EN开始为低电平_nop_(); //执行空函数等待EN拉高dataBuffer cmd; //根据手册中的写时序图数据在EN还在低电平时就建立数据EN 1; //根据手册中的写时序图EN被拉高_nop_(); //执行空函数等待tpw和tF高电平过程_nop_();EN 0; //根据手册中的写时序图EN被拉低_nop_(); //根据手册中的写时序图让EN保持一段时间的低电平 }void weiteData(char cData) {checkBusy(); //检测忙信号RS 1; //RS等于1是写数据操作RW 0; //RW在手册中写的时序图是可以全程低电平EN 0; //根据手册中的写时序图EN开始为低电平_nop_(); //执行空函数等待EN拉高dataBuffer cData; //根据手册中的写时序图数据在EN还在低电平时就建立数据EN 1; //根据手册中的写时序图EN被拉高_nop_(); //执行空函数等待tpw和tF高电平过程_nop_();EN 0; //根据手册中的写时序图EN被拉低_nop_(); //根据手册中的写时序图让EN保持一段时间的低电平 }初始化LCD1602代码 void initLCD1602() { //1 延时 15msDelay15ms(); //2 写指令 38H(不检测忙信号)writeCmd(0x38); //3 延时 5msDelay5ms(); //4 以后每次写指令读/写数据操作均需要检测忙信号 //5 写指令 38H显示模式设置writeCmd(0x38); //6 写指令 08H显示关闭writeCmd(0x08); //7 写指令 01H显示清屏writeCmd(0x01); //8 写指令 06H显示光标移动设置writeCmd(0x06); //9 写指令 0CH显示开及光标设置writeCmd(0x0C); }让LCD1602显示一行字符的代码 void LCD1602ShowARow(char line,char column,char *str) {switch(line) //选择哪行显示{case 1: //第一行显示writeCmd(0x80 column); //选择哪个位置显示因为位置地址的最高位必须为1所以0x80列数while(*str) //判断字符串指针变量不为空执行循环不用判断字符串结束标志{weiteData(*str); //发送字符串单个字符str; //字符串指针变量偏移}break;case 2: //第二行显示writeCmd(0x80 0x40 column); //选择哪个位置显示因为位置地址的最高位必须为1所以0x80列数又因为第二行的列从0x40开始while(*str) //所以是从0x80 0x40 列数特别注意{ weiteData(*str);str;}break;} }最后将以上代码整合到温湿度检测系统_1602显示串口发送工程内。 2.2找到串口编程03_PC发送指令控制LED工程打开代码文件将所需的LCD1602驱动代码拷贝到温湿度检测系统_1602显示串口发送工程内。 串口初识化代码 void UartInit(void) //自己配 {//配置串口工作方式为方式1从只收不发改为能收能发SCON 0x50;//配置辅助寄存器减少电磁辐射稳定晶振频率 AUXR 0x01;//设置定时器工作方式为定时器1的8位自动重装TMOD 0x0F;TMOD | 0x20;//设置串口波特率为9600,0误差TH1 0xFD;TL1 0xFD;//打开定时器1TR1 1; }发送字节和发送字符串代码 void sendByte(char data_mas) {SBUF data_mas;while(!TI);TI 0; //一定要软件置零不然会出现乱序 }void sendString(char *str) {while(*str ! \0){sendByte(*str);str;} }2.3找到温湿度通过串口传到PC显示工程打开代码文件将所需的LCD1602驱动代码拷贝到温湿度检测系统_1602显示串口发送工程内。 存放温湿度数据代码 char THdata[5]; //存放温湿度数据变量打开DHT11高速模式和读取DHT11温湿度数据必要延时代码 void Delay30ms() //11.0592MHz {unsigned char i, j; i 54;j 199;do{while (--j);} while (--i); }void Delay40us() //11.0592MHz {unsigned char i;_nop_();i 15;while (--i); }打开DHT11高速模式代码 void startDHT() {Data 1;Data 0;//至少延时18ms那么延时30msDelay30ms();Data 1;//检测d点while(Data);//检测e点while(!Data);//检测f点while(Data); }读取DHT11温湿度数据代码 void readDHTData() {char i; //轮次char j; //次数char flag;char tmp;//打开DHT11高速模式startDHT();for(i0; i5; i){for(j0; j8; j){//检测G点while(!Data);//根据传送1和0的时间不同0是26us1是70us。等待60us后如果Data 1,就传1Data 0;就传0//Delay60us(); 延时60微妙太长了可能在读0时读到下一个发送序列了延时40微妙Delay40us();if(Data 1){flag 1;while(Data); //传1的时间比较久所以要等传1结束}else{flag 0;}tmp tmp 1;tmp | flag;}THdata[i] tmp;} }3.构造DHT11温湿度数据处理函数 3.1定义存放温度的字符数组和存放湿度的字符数组 char Temperature[9]; //定义温度字符数组 char Humidness[9]; //定义湿度字符数组3.2在DHT11温湿度数据处理函数内将温湿度数据存入相应字符数组。 void THDataHandler() {//湿度数据处理Humidness[0] H;Humidness[1] :;Humidness[2] THdata[0]/10 0x30;Humidness[3] THdata[0]%10 0x30;Humidness[4] .;Humidness[5] THdata[1]/10 0x30;Humidness[6] THdata[1]%10 0x30;Humidness[7] %;Humidness[8] \0;//温度处理Temperature[0] T;Temperature[1] :;Temperature[2] THdata[2]/10 0x30;Temperature[3] THdata[2]%10 0x30;Temperature[4] .;Temperature[5] THdata[3]/10 0x30;Temperature[6] THdata[3]%10 0x30;Temperature[7] C;Temperature[8] \0; }4.主函数调用API顺序 4.1延时1秒稳定系统 Delay1000ms();4.2初始化串口 UartInit();4.3初始化LCD1602 initLCD1602();4.4延时2秒稳定DHT11模块 Delay1000ms(); //等待DHT模块稳定 Delay1000ms();4.5在while(1)死循环内调用延时一秒函数实现每隔1秒刷新温湿度数据 Delay1000ms();4.6在while(1)死循环内调用读取DHT11温湿度函数 readDHTData();4.7在while(1)死循环内调用DHT11温湿度数据处理函数 THDataHandler();4.8在while(1)死循环内多次调用发送字符串函数实现向PC发送温湿度数据 //通过串口发送温湿度数据 sendString(Humidness); sendString(\r\n); sendString(Temperature); sendString(\r\n); sendString(\r\n);4.9在while(1)死循环内多次调用LCD1602显示一行字符函数实现在LCD1602上显示温湿度数据 LCD1602ShowARow(1,4,Humidness); LCD1602ShowARow(2,4,Temperature);5.完整工程代码 #include reg52.h #include intrins.h//数据线定义 //D0到D7 -- P0.1到P0.7 #define dataBuffer P0sbit LED1 P3^7; //用尾定义声明LED1 sbit Data P3^3; //把DHT11接在单片机的P1.0口 sfr AUXR 0x8e; //声明AUXR寄存器地址//控制线定义 /* RS--P1.0 RW--P1.1 EN--P1.4 */ sbit RS P1^0; sbit RW P1^1; sbit EN P1^4;char THdata[5]; //存放温湿度数据变量 char Temperature[9]; //定义温度字符数组 char Humidness[9]; //定义湿度字符数组void Delay15ms() //11.0592MHz {unsigned char i, j;i 27;j 226;do{while (--j);} while (--i); }void Delay5ms() //11.0592MHz {unsigned char i, j;i 9;j 244;do{while (--j);} while (--i); }void Delay30ms() //11.0592MHz {unsigned char i, j; i 54;j 199;do{while (--j);} while (--i); }void Delay40us() //11.0592MHz {unsigned char i;_nop_();i 15;while (--i); }void Delay1000ms() //11.0592MHz {unsigned char i, j, k;_nop_();i 8;j 1;k 243;do{do{while (--k);} while (--j);} while (--i); }void checkBusy() {char tmp 0x80;dataBuffer 0x80;while(tmp 0x80) //只要dataBuffer中的第8位为1就为忙因为BF为忙标志位高电平表示忙此时模块不能接收命令或者数据如果为低电平表示不忙。{RS 0; //根据手册中指令表可知RS0RW1RW 1; //RW1为读的操作所以需要配置读的时序图EN 0; //根据手册中的写时序图EN开始为低电平_nop_(); //执行空函数等待EN拉高EN 1; //根据手册中的读时序图EN被拉高_nop_(); //执行空函数等待tpw和tF高电平过程_nop_();tmp dataBuffer; //读取dataBuffer中的忙信号EN 0; //根据手册中的写时序图EN被拉低_nop_(); //根据手册中的写时序图让EN保持一段时间的低电平} }void writeCmd(char cmd) { checkBusy(); //检测忙信号RS 0; //RS等于零是写指令操作RW 0; //RW在手册中写的时序图是可以全程低电平EN 0; //根据手册中的写时序图EN开始为低电平_nop_(); //执行空函数等待EN拉高dataBuffer cmd; //根据手册中的写时序图数据在EN还在低电平时就建立数据EN 1; //根据手册中的写时序图EN被拉高_nop_(); //执行空函数等待tpw和tF高电平过程_nop_();EN 0; //根据手册中的写时序图EN被拉低_nop_(); //根据手册中的写时序图让EN保持一段时间的低电平 }void weiteData(char cData) {checkBusy(); //检测忙信号RS 1; //RS等于1是写数据操作RW 0; //RW在手册中写的时序图是可以全程低电平EN 0; //根据手册中的写时序图EN开始为低电平_nop_(); //执行空函数等待EN拉高dataBuffer cData; //根据手册中的写时序图数据在EN还在低电平时就建立数据EN 1; //根据手册中的写时序图EN被拉高_nop_(); //执行空函数等待tpw和tF高电平过程_nop_();EN 0; //根据手册中的写时序图EN被拉低_nop_(); //根据手册中的写时序图让EN保持一段时间的低电平 }void initLCD1602() { //1 延时 15msDelay15ms(); //2 写指令 38H(不检测忙信号)writeCmd(0x38); //3 延时 5msDelay5ms(); //4 以后每次写指令读/写数据操作均需要检测忙信号 //5 写指令 38H显示模式设置writeCmd(0x38); //6 写指令 08H显示关闭writeCmd(0x08); //7 写指令 01H显示清屏writeCmd(0x01); //8 写指令 06H显示光标移动设置writeCmd(0x06); //9 写指令 0CH显示开及光标设置writeCmd(0x0C); }void UartInit(void) //自己配 {//配置串口工作方式为方式1从只收不发改为能收能发SCON 0x50;//配置辅助寄存器减少电磁辐射稳定晶振频率 AUXR 0x01;//设置定时器工作方式为定时器1的8位自动重装TMOD 0x0F;TMOD | 0x20;//设置串口波特率为9600,0误差TH1 0xFD;TL1 0xFD;//打开定时器1TR1 1; }void sendByte(char data_mas) {SBUF data_mas;while(!TI);TI 0; //一定要软件置零不然会出现乱序 }void sendString(char *str) {while(*str ! \0){sendByte(*str);str;} }void startDHT() {Data 1;Data 0;//至少延时18ms那么延时30msDelay30ms();Data 1;//检测d点while(Data);//检测e点while(!Data);//检测f点while(Data); }void LCD1602ShowARow(char line,char column,char *str) {switch(line) //选择哪行显示{case 1: //第一行显示writeCmd(0x80 column); //选择哪个位置显示因为位置地址的最高位必须为1所以0x80列数while(*str) //判断字符串指针变量不为空执行循环不用判断字符串结束标志{weiteData(*str); //发送字符串单个字符str; //字符串指针变量偏移}break;case 2: //第二行显示writeCmd(0x80 0x40 column); //选择哪个位置显示因为位置地址的最高位必须为1所以0x80列数又因为第二行的列从0x40开始while(*str) //所以是从0x80 0x40 列数特别注意{ weiteData(*str);str;}break;} }void readDHTData() {char i; //轮次char j; //次数char flag;char tmp;//打开DHT11高速模式startDHT();for(i0; i5; i){for(j0; j8; j){//检测G点while(!Data);//根据传送1和0的时间不同0是26us1是70us。等待60us后如果Data 1,就传1Data 0;就传0//Delay60us(); 延时60微妙太长了可能在读0时读到下一个发送序列了延时40微妙Delay40us();if(Data 1){flag 1;while(Data); //传1的时间比较久所以要等传1结束}else{flag 0;}tmp tmp 1;tmp | flag;}THdata[i] tmp;} }void THDataHandler() {//湿度数据处理Humidness[0] H;Humidness[1] :;Humidness[2] THdata[0]/10 0x30;Humidness[3] THdata[0]%10 0x30;Humidness[4] .;Humidness[5] THdata[1]/10 0x30;Humidness[6] THdata[1]%10 0x30;Humidness[7] %;Humidness[8] \0;//温度处理Temperature[0] T;Temperature[1] :;Temperature[2] THdata[2]/10 0x30;Temperature[3] THdata[2]%10 0x30;Temperature[4] .;Temperature[5] THdata[3]/10 0x30;Temperature[6] THdata[3]%10 0x30;Temperature[7] C;Temperature[8] \0; }void main() {LED1 1; //一上电就让灯灭Delay1000ms();UartInit(); //初始化串口initLCD1602(); //初始化LCD1602Delay1000ms(); //等待DHT模块稳定Delay1000ms();while(1) //防止程序退出主函数导致LED1微弱闪烁{Delay1000ms(); //间隔1秒读一次readDHTData(); //读取DHT11温湿度数据THDataHandler(); //将DHT11传回的数据装入温湿度字符数组//通过串口发送温湿度数据sendString(Humidness);sendString(\r\n);sendString(Temperature);sendString(\r\n);sendString(\r\n);LCD1602ShowARow(1,4,Humidness); LCD1602ShowARow(2,4,Temperature);}}6项目运行结果 结束语 很高兴您能看到这里点个赞再走呗。谢谢您啦
http://www.hkea.cn/news/14568511/

相关文章:

  • 网站推广应该怎么做?做网站seo优化
  • 网站上广告中卫网络工程招聘
  • 好的网站首页建设公司提升学历的十大好处是什么
  • 阿里巴巴的网站应该怎么做厦门网站建设技术支持
  • 网站举报平台12315平面设计培训机构价位
  • 住房和城乡建设部网站建造师wordpress调模板用钩子
  • 邵阳建设银行网站网站建设做什么科目
  • 织梦网站数据库备份文件夹wordpress 手机菜单栏
  • 做旅行网站多少钱阳春新农村建设网站
  • 婚庆网站设计说明书辽宁建设工程信息网工程业绩怎么上传
  • 如何建立游戏网站长春火车站是哪个站
  • asp个人网站源码几个小时学wordpress
  • asp网站系统p2p网站开发价格
  • 顺德销售型网站建设网页设计实训报告大专
  • 网站建设的分工的论文建设实验室网站的意义
  • 兴化市建设局网站辽宁工程咨询招投标交易平台
  • 网站设计的六个因素注册深圳公司需要什么条件
  • 一级a做爰网站免费做一个公司网站大概要多少钱
  • 我想创建一个网站专业做网站服务
  • 住房和城乡建设统计网站专业网页制作什么好
  • 装修设计网站哪个好一个人怎么开贸易公司
  • 链天网站建设友情链接工具
  • 27岁了想学网站建设网站设计的含义
  • 燃气行业网站建设方案软膜做网站有用吗
  • 网站怎么发布到服务器企业网站建设专业精准丨 鸣远科技
  • c 可以用来做网站吗网站群建设意义
  • 个人网站 备案 类型可以商用的电视app永久软件
  • 建设网站的市场定位常州网
  • 建设网站的风险6o2o网站开发教程
  • 建设网站需要哪些条件手机端网站尺寸规范