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

ps做网站画布多大做静态网站的开题报告

ps做网站画布多大,做静态网站的开题报告,小程序推广联盟,网站链接dw怎么做在嵌入式系统的奇妙世界中,汇编语言与硬件的结合总是充满了无限可能。今天,我将带你走进一场充满乐趣的实验:如何用汇编语言在单片机上实现单总线温度采集与显示。这不仅是一次技术探索,更是一场点亮创意与灵感的奇幻之旅&#xf…

  在嵌入式系统的奇妙世界中,汇编语言与硬件的结合总是充满了无限可能。今天,我将带你走进一场充满乐趣的实验:如何用汇编语言在单片机上实现单总线温度采集与显示。这不仅是一次技术探索,更是一场点亮创意与灵感的奇幻之旅!

实验背景

  温度传感器是一种常见的传感器,广泛应用于各种需要温度监测的场景。DS18B20 是一种基于单总线通信的数字温度传感器,能够通过一根数据线与微控制器进行通信,实现温度数据的采集。在本次实验中,我选择了经典的 AT89C51 单片机,利用 DS18B20 传感器实现温度采集,并通过数码管显示当前温度值。

实验要求

  通过单片机MCU的I/O实现温度采集,并将数据显示在数码管上。

实验工具

  Keil uVision4:用于编写汇编代码并验证是否成功

  PZ-ISP普中自动下载软件:用于将汇编代码烧录至开发板上

  AT89C51一款经典的 8 位微控制器

实验设计

整体思路

要实现温度采集与显示功能,我们需要让汇编语言与硬件伙伴紧密配合。具体来说:

- 当系统检测到转换命令时,发送一个读取温度的指令。
- 依次读取数据的低字节和高字节,并将这两个字节合并,以获得完整的温度数据。
- 将合并后的数据转换为相应的段码数值,并存储于一个数组中。
- 将转换后的温度数据与预设的阈值进行比较。如果温度数据超过阈值,触发报警机制,并显示当前温度值;如果温度数据低于阈值,则直接显示温度值。

流程图

主要模块设计

 (1)温度读取模块
  温度读取模块负责从 DS18B20 传感器读取温度数据。

#include "reg51.h"               // 引入51单片机的寄存器定义文件
#include "temp.h"                 // 引入温度传感器相关头文件typedef unsigned int u16;        // 定义16位无符号整型
typedef unsigned char u8;        // 定义8位无符号字符型u8 Ds18b20ReadTemp() {u8 low, high;// 发送读取温度指令// 读取低字节和高字节low = read_byte();           // 读取低字节high = read_byte();          // 读取高字节return (high << 8) | low;    // 合并高低字节
}

 (2)温度转换模块
  温度转换模块负责将读取到的温度数据转换为数码管显示的段码。

void datapros(int temp) {float tp;                     // 临时变量,用于存储温度值的转换结果if(temp < 0)                  // 如果温度值小于0{DisplayData[0] = 0x40;    // 显示负号temp = temp - 1;          // 温度值取反并加1temp = ~temp;             // 对温度值取反tp = temp;                // 将结果存储到临时变量tptemp = tp * 0.0625 * 100 + 0.5; // 将温度值转化为对应的显示值}else                          // 如果温度值大于等于0{            DisplayData[0] = 0x00;    // 不显示负号tp = temp;                // 将温度值存储到临时变量tptemp = tp * 0.0625 * 100 + 0.5; // 转换温度值为对应的显示值}// 分别计算出各个数字的显示编码DisplayData[1] = smgduan[temp / 10000];         // 显示万位DisplayData[2] = smgduan[temp % 10000 / 1000];  // 显示千位DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80; // 显示百位,带小数点DisplayData[4] = smgduan[temp % 100 / 10];      // 显示十位DisplayData[5] = smgduan[temp % 10];            // 显示个位temp1 = temp % 10000 / 100;  // 提取温度的百位值,用于后续报警判断
}

(3)显示模块
  显示模块负责将温度数据通过数码管显示出来。

void DigDisplay() {u8 i;for(i = 0; i < 6; i++)      // 循环控制6个数码管的显示{switch(i)               // 控制不同的数码管显示{case(0):            // 显示第1个数码管LSA = 0; LSB = 0; LSC = 0;break;case(1):            // 显示第2个数码管LSA = 1; LSB = 0; LSC = 0;break;case(2):            // 显示第3个数码管LSA = 0; LSB = 1; LSC = 0;break;case(3):            // 显示第4个数码管LSA = 1; LSB = 1; LSC = 0;break;case(4):            // 显示第5个数码管LSA = 0; LSB = 0; LSC = 1;break;case(5):            // 显示第6个数码管LSA = 1; LSB = 0; LSC = 1;break;}P0 = DisplayData[5 - i];  // 将显示数据传递给P0端口delay(85);                 // 延时,控制数码管的显示时间P0 = 0x00;                 // 清除P0端口,避免干扰}        
}

 (4)报警模块
  报警模块负责在温度超过阈值时触发蜂鸣器报警。

void main() {while(1)                       // 无限循环,持续读取温度并显示{datapros(Ds18b20ReadTemp());  // 读取温度并进行处理DigDisplay();                  // 更新数码管显示if(temp1 >= 30)                // 如果温度超过30度,蜂鸣器报警{u16 i = 2000;while(i--)                  // 蜂鸣器持续鸣叫2000次{BEEP = !BEEP;           // 切换蜂鸣器状态delay(10);              // 延时控制蜂鸣器鸣叫频率}datapros(Ds18b20ReadTemp());  // 重新读取并处理温度DigDisplay();                  // 更新数码管显示i = 0;BEEP = 0;                    // 关闭蜂鸣器}}        
}
```

(5)数码管查找表模块
  数码管查找表模块用于将数字转换为数码管的段选信号。

u8 code smgduan[10] = {          // 数码管段选码表,0-9的显示数据0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
};

实现效果

  通过调试和验证,温度采集与显示功能成功实现!数码管能够清晰地显示当前温度值,蜂鸣器在温度超过阈值时能够及时报警。整个设备运行流畅,温度采集准确,显示效果稳定。

总结与思考

- 深入理解 DS18B20 工作原理:对 DS18B20 的温度测量机制、数字输出以及单总线通信协议有了更深入的理解。

- 掌握单总线通信方式:学习了一种新的通信方式,理解了如何通过一根数据线进行多设备通信。

- 提高编程和调试能力:通过编写代码初始化传感器、读取温度数据以及处理数据,提高了编程能力和调试技巧。

- 理解硬件接口和电路设计:进行电路的设计和搭建,包括传感器与微控制器之间的连接,有助于理解硬件接口和电路设计的基础知识。

- 学会处理和解析传感器数据:将 DS18B20 读取的数据转换为温度值,学会了如何处理和解析传感器数据。

结语

  通过这次实验,我不仅在技术上有了新的突破,更对嵌入式系统开发充满了兴趣。汇编语言虽然古老,但它依然有着强大的生命力,能够帮助我们实现各种奇妙的功能。如果你对汇编语言或嵌入式开发感兴趣,欢迎一起交流探讨!让我们在技术的道路上共同进步,继续探索更多神奇的魔法!✨


文章转载自:

http://1CXL627X.pjfwr.cn
http://TQrmCNNI.pjfwr.cn
http://MQhjL3nM.pjfwr.cn
http://tfhXnEZn.pjfwr.cn
http://Vy4aj4AZ.pjfwr.cn
http://E1K9oSJH.pjfwr.cn
http://YltSRAqy.pjfwr.cn
http://NgV223vC.pjfwr.cn
http://CBYmascE.pjfwr.cn
http://cEtG2jYe.pjfwr.cn
http://VUGuOyPe.pjfwr.cn
http://bWOFUphc.pjfwr.cn
http://sDKO3k8n.pjfwr.cn
http://M8DCwiHq.pjfwr.cn
http://lhxVEPv0.pjfwr.cn
http://xKgG5mYK.pjfwr.cn
http://07ATEuh6.pjfwr.cn
http://CWi19SK8.pjfwr.cn
http://99No4SqD.pjfwr.cn
http://YjMHEtRi.pjfwr.cn
http://02MQya6t.pjfwr.cn
http://ufLPUPqP.pjfwr.cn
http://cO1FAmF8.pjfwr.cn
http://AMqzu2Ul.pjfwr.cn
http://wg7Jk56H.pjfwr.cn
http://fe26j36j.pjfwr.cn
http://1Ax94AvF.pjfwr.cn
http://NtnFLo12.pjfwr.cn
http://zCAxSu4e.pjfwr.cn
http://dy0TSTYN.pjfwr.cn
http://www.dtcms.com/wzjs/765321.html

相关文章:

  • 西安模板建网站帮别人制作网页多少钱
  • 网站友情链接代码wordpress单页导出
  • 校园网站建设年度总结承德网站制作的流程
  • 公司网站建设注意事项做旅游那些网站好
  • 青岛企业做网站广东seo推广哪里好
  • 深圳建设网站的公司报告编号怎么获取
  • 大学生个人网站怎么做网站建设行
  • 玉树市wap网站建设公司vancl凡客诚品正品
  • 网站设计酷站dw自己做网站
  • 建立一个企业网站需要花多少钱iis7.0建设网站
  • 建设银行信用卡中心网站wordpress删除所有文章
  • 中国建设银行网站用户注册网站登录慢
  • 建网站有什么要求比价网站开发
  • 公司建立网站青岛电话山东做外贸网站的公司
  • 建设制作外贸网站的公司网站网页打不开怎么办
  • Php做网站要求logo设计公司价格
  • 网站公司开发淮安专业网站建设
  • 企业网站素材图片有人做网站推广吗
  • 360中小网站建设网站不设置关键词描述
  • 网站建设怎样避免犯法高端大气企业网站
  • 网站打开速度慢是否需要升级带宽舟山市建设信息港网站
  • 网站qq未启用自己注册域名
  • 智能建站程序提高网站浏览量
  • 手机网站建设图监控做斗鱼直播网站
  • 中网建站四川建设工程招标网
  • 帮助做问卷调查的网站禁止同ip网站查询
  • 网站永久免费建站查网站备案名称
  • 网络培训学校网站优化外包服务
  • 企业网站建设报价清单wordpress快捷登录
  • .net网站开发实训代码大型旅行社自建网站