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

西安网站搭建建设定制装修公司做网站热门关键词

西安网站搭建建设定制,装修公司做网站热门关键词,佛山合展商务网站建设,国外自助建站上来一张图#xff0c;明确思路#xff0c;程序整体裤架如下#xff0c;通过单总线#xff0c;单独封装一个.c文件用于单总线的操作#xff0c;其实#xff0c;我们可以把点c文件看成一个类操作#xff0c;其属性就是我们面向对象的函数#xff0c;也叫方法#xff0c…上来一张图明确思路程序整体裤架如下通过单总线单独封装一个.c文件用于单总线的操作其实我们可以把点c文件看成一个类操作其属性就是我们面向对象的函数也叫方法操作起来方便通过DS18B20调用封装好的单总线实现温度的读取用LCD1602显示出读取的温度  总后通过主函数调用这些模块这就是模块化的编程两个模块主函数直接调用也方便移植。 作者Whappy 时间2024.9.14 DS18B20实验-温度测试 第一步模块化单总线 OneWire.c 一共五个函数 看时序写代码 unsigned char OneWire_Init(void) {unsigned char AckBit;OneWire_DQ 1; //保证拉低之前是高电平OneWire_DQ 0; //拉低Delay1ms();//延时1ms 至少480usOneWire_DQ 1; //释放Delay70us();AckBit OneWire_DQ; //应答位存在的从机会拉低总线60~240us以响应主机Delay1ms();//延时1ms 至少480usreturn AckBit;} void OneWire_SendBit(unsigned char Bit) {OneWire_DQ 0; //拉低Delay10us();OneWire_DQ Bit; //10us 将数据放到总线上Delay50us();OneWire_DQ 1; //释放 } //接收一位即主机51读取一位主机将总线拉低1~15us然后释放总线并在拉低后15us内读取总线电平尽量贴近15us的末尾 //读取为低电平则为接收0读取为高电平则为接收1 整个时间片应大于60us unsigned char OneWire_ReadBit(void) {unsigned char Bit;OneWire_DQ 0; //拉低Delay5us();OneWire_DQ 1; //释放Delay5us();Bit OneWire_DQ; //数据放到总线上主机读Delay50us();return Bit;} //发送一个字节连续调用8次发送一位的时序依次发送一个字节的8位低位在前 void OneWire_SendByte(unsigned char Byte) {unsigned char i;for(i0; i8; i){OneWire_SendBit(Byte (0X01 i));} }//接收一个字节连续调用8次接收一位的时序依次接收一个字节的8位低位在前unsigned char OneWire_ReceiveByte(void) {unsigned char i, Byte 0X00;for(i0; i8; i){if(OneWire_ReadBit()){Byte | (0x01);}}return Byte; }第二步模块化 DS18B20.cDS18B20.c  两个函数 //温度转换函数 :初始化→跳过ROM →开始温度变换void DS18B20_ConvertTemperature(void) {OneWire_Init();OneWire_SendByte(SKIP_ROM); //跳过ROM写入一个字节数据说我要读取温度OneWire_SendByte(CONVERT_T); //发送一个字节让DS18B20开始温度转化}//温度读取初始化→跳过ROM →读暂存器→连续的读操作 float DS18B20_ReadTemperature(void) {unsigned char TLSB, TMSB;int Temp;float T;OneWire_Init();//初始化OneWire_SendByte(READ_SCRATCHPAD); //跳过ROM写入一个字节数据说我要读取温度TLSB OneWire_ReceiveByte();TMSB OneWire_ReceiveByte();Temp (TMSB8)| TLSB;T Temp/16.0;return T;} 第三步主函数调用 main.c #include REGX52.H #include LCD1602.h #include DS18B20.h #include Delay.hfloat T;void main(void) {DS18B20_ConvertTemperature(); //上电先转换一次温度防止第一次读数据错误Delay_Any(1000); //等待转换完成//初始化LCD_Init();LCD_ShowString(1,1,Temperature:);while(1){ DS18B20_ConvertTemperature();T DS18B20_ReadTemperature();if(T 0){LCD_ShowChar(2,1,-);T -T;}elseLCD_ShowChar(2,1,);LCD_ShowNum(2,2,T,3);LCD_ShowChar(2,5,.);LCD_ShowNum(2,6,(unsigned long)(T*10000)%10000,4);} }//#include REGX52.H //#include LCD1602.h //#include DS18B20.h //#include Delay.h//float T;//void main() //{ // DS18B20_ConvertT(); //上电先转换一次温度防止第一次读数据错误 // Delay(1000); //等待转换完成 // LCD_Init(); // LCD_ShowString(1,1,Temperature:); // while(1) // { // DS18B20_ConvertT(); //转换温度 // TDS18B20_ReadT(); //读取温度 // if(T0) //如果温度小于0 // { // LCD_ShowChar(2,1,-); //显示负号 // T-T; //将温度变为正数 // } // else //如果温度大于等于0 // { // LCD_ShowChar(2,1,); //显示正号 // } // LCD_ShowNum(2,2,T,3); //显示温度整数部分 // LCD_ShowChar(2,5,.); //显示小数点 // LCD_ShowNum(2,6,(unsigned long)(T*10000)%10000,4);//显示温度小数部分 // } //} 总代码 OneWire.c #include REGX52.H #include Delay.hsbit OneWire_DQ P3^7; //单总线的管脚定义//编写5个函数 初始化、写一位、读一位、写一个字节、读一个字节//初始化主机将总线拉低至少480us然后释放总线等待15~60us后存在的从机会拉低总线60~240us以响应主机之后从机将释放总线unsigned char OneWire_Init(void) {unsigned char AckBit;OneWire_DQ 1; //保证拉低之前是高电平OneWire_DQ 0; //拉低Delay1ms();//延时1ms 至少480usOneWire_DQ 1; //释放Delay70us();AckBit OneWire_DQ; //应答位存在的从机会拉低总线60~240us以响应主机Delay1ms();//延时1ms 至少480usreturn AckBit;}//写一位数据即主机51发送一位:主机将总线拉低60~120us然后释放总线表示发送0主机将总线拉低1~15us //然后释放总线表示发送1。从机将在总线拉低30us后典型值读取电平整个时间片应大于60usvoid OneWire_SendBit(unsigned char Bit) {OneWire_DQ 0; //拉低Delay10us();OneWire_DQ Bit; //10us 将数据放到总线上主机写Delay50us();OneWire_DQ 1; //释放 }//接收一位即主机51读取一位主机将总线拉低1~15us然后释放总线并在拉低后15us内读取总线电平尽量贴近15us的末尾 //读取为低电平则为接收0读取为高电平则为接收1 整个时间片应大于60us unsigned char OneWire_ReadBit(void) {unsigned char Bit;OneWire_DQ 0; //拉低Delay5us();OneWire_DQ 1; //释放Delay5us();Bit OneWire_DQ; //数据放到总线上主机读Delay50us();return Bit;}//发送一个字节连续调用8次发送一位的时序依次发送一个字节的8位低位在前 void OneWire_SendByte(unsigned char Byte) {unsigned char i;for(i0; i8; i){OneWire_SendBit(Byte (0X01 i));} }//接收一个字节连续调用8次接收一位的时序依次接收一个字节的8位低位在前unsigned char OneWire_ReceiveByte(void) {unsigned char i, Byte 0X00;for(i0; i8; i){if(OneWire_ReadBit()){Byte | (0x01);}}return Byte; } DS18B20.c #include REGX52.H #include OneWire.h//DS18B20 程序使用的寄存器进行红宏定义 #define SKIP_ROM 0XCC //ROM指令 跳过ROM 相当于直接访问DS18B20 #define CONVERT_T 0X44 //功能指令 温度转换 #define READ_SCRATCHPAD 0XBE //功能指令 暂存器//温度转换函数 :初始化→跳过ROM →开始温度变换void DS18B20_ConvertTemperature(void) {OneWire_Init();OneWire_SendByte(SKIP_ROM); //跳过ROM写入一个字节数据说我要读取温度OneWire_SendByte(CONVERT_T); //发送一个字节让DS18B20开始温度转化}//温度读取初始化→跳过ROM →读暂存器→连续的读操作 float DS18B20_ReadTemperature(void) {unsigned char TLSB, TMSB;int Temp;float T;OneWire_Init();//初始化OneWire_SendByte(SKIP_ROM);OneWire_SendByte(READ_SCRATCHPAD); //跳过ROM写入一个字节数据说我要读取温度TLSB OneWire_ReceiveByte();TMSB OneWire_ReceiveByte();Temp (TMSB8) | TLSB;T Temp/16.0;return T;} Delay.c #include REGX52.H #include intrins.hvoid Delay1ms() //11.0592MHz {unsigned char i, j;_nop_();i 2;j 199;do{while (--j);} while (--i); }void Delay70us() //11.0592MHz {unsigned char i;_nop_();i 29;while (--i); }void Delay_Any(unsigned int xms) //11.0592MHz {unsigned char i, j;while(xms--){_nop_();i 2;j 199;do{while (--j);} while (--i);} }void Delay10us() //11.0592MHz {unsigned char i;i 2;while (--i); }void Delay50us() //11.0592MHz {unsigned char i;_nop_();i 20;while (--i); }void Delay5us() //11.0592MHz { } 其余代码可参考主页51单片机内容
http://www.dnsts.com.cn/news/256548.html

相关文章:

  • 设计感很强的中文网站建站之星导出网站
  • 沈阳怎么做网站电子商务主要就业岗位
  • 网站建设丩金手指排名壹陆建网页还是网站好
  • 做cms网站步骤东莞土木建筑学会网站
  • 网站建设 6万个人站长适合做什么网站
  • 昆明铁路局建设工程网站新手怎么做seo
  • 群晖的网站开发在哪些网站做推广比较好
  • 信阳网站建设汉狮报价广东网站建设系统
  • 网站建设协议 合同网络编程学校
  • php企业网站例子wordpress加群插件
  • 网站建设需要投资多少一键优化表格
  • 网站怎样做漂浮外贸网站用什么空间
  • 芜湖网站建设芜湖酒店装修
  • 网站开发运营wordpress 排版代码
  • 福州外贸建站wordpress电子书下载地址
  • 做网站兼容性如何处理纯静态网站开发
  • 洪湖网站建设设计开发流程图
  • 有本地服务器怎么做网站云南网站建设模块
  • 利用渗透的网站做寄生虫郑州企业网站排名优化方法
  • 请人做网站收费多少钱建设公司网站 优帮云
  • 怎么在手机上制作网站高手总结wordpress函数
  • 区块链资讯网站建设湖南长沙新增病例最新消息
  • 大型的网站后台用什么做商务网站建设的项目体会
  • 效果好的徐州网站建设服务器价格购买价格表
  • 石家庄seo网站优化报价深圳网站设计公司是什么
  • 杭州网站 建设弹幕网站用什么做
  • wordpress的商城网站制作公司水墨网站设计欣赏
  • 绵阳观察怎么登录不上苏州seo排名优化课程
  • 四川省凉亭建设工程有限公司网站七牛图床 wordpress
  • 网站建设大作业电子版山东省城乡建设厅网站