msp430f249msp430单片机教程数字温度计驱动电路

查看: 8142|回复: 19
自制mini数字温度计
& & 芯片采用AT89C2051,温度检测采用DS18B20,显示3位共阴数码管,电路非常简单。
原理仿真图:实际运用中请将P1口加上1K上拉电阻。
采用基本和数码管大小的一块实验洞洞板来焊接,电源采用常用的5VminiUSB供电(数据线好找些,可以直接USB,比较方便),晶振采用了坏U盘中的12MHZ的小晶振嵌入到集成插座的中间空隙以减小体积。为了减小数码管和其他电子元件通电后发热对DS18B20温检产生检测误差,将DS18B20的3只脚分别焊接到一个立体声插头上,然后再通过立体声插座再传递到AT89C2051的P3.7端口。数码管采用插接件,方便修改和烧录单片机程序。
只拍照的正面,背面就是乱云飞渡人从容啦
装好通电后效果,测试中还是感觉到电子元件温升的差异
源程序如下:
#include&reg52.h&
#include &intrins.h&
#define&&uchar&&unsigned&&char
#define&&uint& &unsigned&&int
sbit&&DATA = P3^7; //DS18B20接入口
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
char&&bai,shi, //定义变量
/*延时子函数*/
void delay(uint num)
while(num--) ;
/*************DS18b20温度传感器函数*********************/
Init_DS18B20(void)& &&&//传感器初始化
&&uchar x=0;
&&DATA = 1;& & //DQ复位
&&delay(10);&&//稍做延时
&&DATA = 0;& & //单片机将DQ拉低
&&delay(80); //精确延时 大于 480us& & //450
&&DATA = 1;& & //拉高总线
&&delay(20);
&&x=DATA;& && &//稍做延时后 如果x=0则初始化成功 x=1则初始化失败
&&delay(30);
//读一个字节
ReadOneChar(void)
uchar i=0;
uchar dat = 0;
for (i=8;i&0;i--)
& & DATA = 0; // 给脉冲信号
& & dat&&=1;
& & DATA = 1; // 给脉冲信号
& & if(DATA)
& &&&dat|=0x80;
& & delay(8);
&&return(dat);
//写一个字节
WriteOneChar(unsigned char dat)
&&uchar i=0;
&&for (i=8; i&0; i--)
& & DATA = 0;
& & DATA = dat&0x01;
& &delay(10);
& &DATA = 1;
& &dat&&=1;
//读取温度
int ReadTemperature(void)
uchar a=0;
uchar b=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar();//低位
b=ReadOneChar();//高位
tt=t*0.0625;
t= tt*10+0.5;
return(t);
/*显示子函数*/
void&&display(int bai,int shi,int ge)
P3=0XFB; //显示小数点
P1=0X80; //显示小数点
delay(50);//显示小数点
P1=table[bai];//显示千位
delay(50);//一小段延时动态显示
P1=table[shi];//显示百位
delay(50);
P1=table[ge];//显示十位
delay(50);
void&&main()
&&temp=ReadTemperature();//读温度
&&bai=temp%;//显示百位
&&shi=temp%100/10;//显示十位
&&ge=temp%10;//显示个位
&&display(bai,shi,ge);//显示函数
很好&&赞一下
2051的芯片烧写是个问题,没有专用的编程器,可怎么办啊?
yjx189 发表于
<font color="#51的芯片烧写是个问题,没有专用的编程器,可怎么办啊?
AT89c2051需要用编程器才能烧录,建议采用stc的2051芯片,源代码引脚都能兼容。采用串口烧录。
admin 发表于
AT89c2051需要用编程器才能烧录,建议采用stc的2051芯片,源代码引脚都能兼容。采用串口烧录。
釆用STC的不能正常工作,时序不对还是什么请教
用STC芯片多好,试试
我的keil不知怎么了设置了生成hex文件却没生成谁做过的好心帮忙提供下hex文件啊
我的keil不知怎么了设置了生成hex文件却没生成谁做过的好心帮忙提供下hex文件啊
hex文件生成好了,0个警告,0个错误。你的应该是keil设置的问题:
(20.1 KB, 下载次数: 18)
21:11 上传
点击文件名下载附件
下载积分: 黑币 -5
本帖最后由 Animals 于
23:02 编辑
菜鸟请教一下& &怎么做成3路检测3路显示?
不错 支持diy
哼不错 支持diy
这款制作线路简单扼要,值得仿制
怎么实现不了呢
我用msp430g2231也做了个温湿度计,就是体积比你的大了好多,有点丑。
怎么只显示00.0???这是什么原因???楼主你的刚开机显示啥???
不错,支持支持一下
请问数码管用哪一种呢
Powered by基于MSP430单片机的温度PID算法设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于MSP430单片机的温度PID算法设计
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩51页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢& & 2 绘制数显温度计图及设计方法,需要注意的问题
& & 我们要想成功的设计一个温度计的PCB图,大致要经过以下步骤:首先学会绘制温度计的原理图。绘制原理图时要知道需要那些元件,库中没有的或很难找到的元器件,第一小步,我们必须要建立一个元件库(Sch.Lib)以满足设计需要,在制作元件时我们应该把多个元件放在一个库中以方便调用,必要时还要在库文件中对元器件进行说明可以在Browse Schlib中的Components中选中元件,再在Description中进行相应的描述(Description、Footprint、default Designator、Sheet part Filename)。在制作元件时我们必须注意一些小问题,例如:在制作元件符号时引脚没有放置在栅格上,调到原理图时不能正常连接导线,在引脚上不能生存节点。此时我们可以在制作窗口中单击右键选中Doument options,在弹出的library Editor Workese对话框中对Gird选项中的Snap、Visibie进行设置。在制作元件时也要讲究技巧例如:借助已有的元件库中的类似元件,将其拷贝到自己制作库中稍作修改。在制作集成芯片Icl7107、Icl7660、S-,必须注意每个引脚的属性,须认真逐个的设置,以免在原理图中出现错误连接导致在调试时将芯片烧坏。第二小步,将要用到的元件调到原理图中进行连接,在连接的过程中要注意总线的连接,总线只是示意性电气连接,而真正表示连接是网络标号。因此在用到总线时必须放置网络标号。第三小步,电路图连接好后,我们必须进行ERC、Reports/Bill of material、Create netlist操作。电器规则检查,以纠正电路图中的电路错误。进行元件报表查看电路图的元件信息。创建网络表为做PCB绘制做准备。设计好的原理图主要由以下几个部分组成。
& & 数显温度计的原理图如下:
& & 第二大步完成PCB制作。制作PCB的第一步,确定板框物理尺寸、布线尺寸和需要的各个板层,可以通过向导来完成。第二步,定义好PCB之后,调用菜单栏命令Design/Load Nets将元件调入PCB中,在放置元件时,需要注意的是不同的元件需要放置在不同的板层,例如放置名字(拼音)在BottomLayer层,且水平镜像,不能用汉字。第三步,选择跳线的过孔形式。第四步,选择元件形式和焊盘间通过的铜膜线数,调用菜单栏命令Design/Rules进行设置。第四步,走线参数设置。第五步,连接好PCB后需要进行设计规则检查,调用菜单栏命令Tools/Designs Rules Check.可完成,这样可以避免设计错误和电气错误。
& & 3 PCB图的打印、转印与敷铜板的腐蚀加工与问题。
& & 1. 用打印PCB图到热转印纸(用热转印纸制作PCB)
& & 在开始菜单中添加打印机
& & 根据添加打印机向导一步步做下去(当无实际打印机连接时,任选一种打印机即可)
& & PCB图打印设置:窗口切换到欲打印的PCB图,在File下,选择Print/Preview,在Explorer下显示了一个后缀为PPC格式的文档,即打印文档: Preview PCBPPC,将管理器切换到Browse PCBPrint,选择需要打印的层进行设置:底层打印图形的设置在Layers栏 将MultiLayer移到最上层
& & n在Options栏勾选Show Holes
& & n在Color Set栏 选择Black & White(黑白图形)
& & 在设计PCB图时,在Bottom Layer层放置&String&,在其中写上自己的名字(汉语拼音)、设计日期。名字、日期要水平镜像放置。设置好后,打印到热转印纸上的底层图形。
本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670& & &&)进入中国三十一年以来,德州仪器(TI)在不断推出创新半……
2017德州仪器(TI)中国教育者年会上,TI与来自全国97所……
据外媒报道,上周三在社交媒体上出现了一些针对苹果开发……
你所想到的一块芯片多少钱?如果这款MCU同时具有25种功能……
物联网以基础软硬件、互联网技术联合,开动智能电子产品……
演讲人:杨正龙时间: 10:00:00
演讲人:李思齐时间: 10:00:00
演讲人:杨熙时间: 10:00:00
预算:小于¥10,000预算:小于¥10,000
MSP430F单片机设计的超低功耗电子温度计方案
[导读]本文设计的超低功耗电子温度计能够通过温度传感器测量和显示被测量点的温度,并可进行扩展控制。该温度计带电子时钟,其检测范围为l0℃~30℃,检测分辨率为1℃,采用LCD液晶显示,整机静态功耗为0.5&A。其系统设
本文设计的超低功耗电子温度计能够通过温度传感器测量和显示被测量点的温度,并可进行扩展控制。该温度计带电子时钟,其检测范围为l0℃~30℃,检测分辨率为1℃,采用LCD液晶显示,整机静态功耗为0.5&A。其系统设计思想对其它类型的超低功耗微型便携式智能化检测仪表的研究和开发,也具有一定的参考价值。本文引用地址:
1 元器件选择
本系统的温度传感器可选用热敏电阻。在10~30℃的测量范围内,该器件的阻值随温度变化比较大,电路简单,功耗低,安装尺寸小,同时其价格也很低,但其热敏电阻精度、重复性、可靠性相对稍差,因此,这种传感器对于检测在1℃以下,特别是分辨率要求更高的温度信号不太适用。
显示部分可以采用笔段式LCD液晶显示。特别是黑白笔段式液晶显示器的功耗极低,美观适中,价格低廉,而且驱动芯片可选择性强。为此,本设计选用了技术成熟、功耗较低、性能稳定、价格低廉的通用性LCD驱动器HT1621。
作为整个系统的核心部件,单片机的选择至关重要。通过比较多家单片机芯片,最终选定了TI公司的MSP430系列控制器,该系列控制器功耗极低,性能强大,成本也较低。
2 的主要特点
MSP430F系列是美国TI公司生产的一种超低功耗的FLASH控制器,该器件有&绿色&控制器(GREEN Mcu)之称,其技术特征代表了单片机的发展方向。MSP430的片内存储器该器件单元是能耗非常低的单元,消耗功率仅为其它闪速微控制器的五分之一。MSP430F同其它控制器相比,既可缩小线路板空间,又可降低系统成本。
MSP430F系列器件集成了超低功率闪存、高性能模拟电路和一个16位精简指令集(RISC)CPU,且指令周期短,大部分指令可在一个指令周期内完成。该器件的工作电流极小,并且超低功耗,关断状态下的电流仅为0.1&A,待机电流为0.8&A,常规模式下的(250&A/1MIPS@3V),端口漏电流不足50 nA,并可零功耗掉电复位(BOR)。另外,该芯片属低电器件,仅需1.8~3.6V电压供电,因而可有效降低系统功耗。由于其具有超低功耗的数控振荡器技术,因而可以实现频率调节和无晶振运行。其6&s的快速启动时间可以延长待机时间并使启动更加迅速,同时也降低了电池的功耗。MSP430系列芯片的片内资源丰富,I/O端口功能强大且十分灵活,所有的I/O位均可单独配置,每一根口线分别对应输入、输出、方向和功能选择等多个寄存器里的一位。因此,其温度模拟控制可以采用带隔离的低电压控制方式。
3 超低功耗电子温度计硬件设计
图1所示是本超低功耗电子温度计的硬件原理框图。下面给出其它单元电路的设计方案。
3.1温度采集转换电路
利用MSP430来测量电阻,就可以通过斜率技术而不使用A/D转换电路,处理起来简单易行。对于这种技术,可以使用MSP430系列芯片上的比较器和时钟来完成斜率的A/D转换。
本系统的具体温度测量是应用电容充放电把被测电阻值转换成时间,再利用MSP430内部的捕获比较寄存器准确捕捉时间,从而测量出热敏电阻的阻值,以间接获得温度值。其温度检测电路结构如图2所示。
图中,Rref是参考电阻,用于定标,Rsens是被测电阻。
系统工作时首先令MSP430接Rref的口置位,然后输出高电平Vcc并通过标准电阻对电容定时充电,定时时间到后,端口复位,使电容放电,放电过程一直持续到电容上的电压降到充电端口为&0&电平的上限为止,截止时刻由Timer_a内部的捕捉器通过捕捉入口CA0准确地捕捉。这一段放电时间可标记为Tref。然后,对P2.1施以同样的操作,以获得电容通过被测电阻放电的时间Tsens。最后比较Tref和Tsens,并由下式计算出被测电阻值:
Rsens=RrefTmeas/Tref
式中,Rsens为被测热敏电阻,Tsens为被测组件放电时间,Tref为参考组件放电时间,Rref为参考精密电阻。
由上式可以看出,只要电压和电容的值在测量中保持稳定,电压和电容的具体取值便不再重要,这是因为在比例测量原理中,这些因素在计算过程中已被消除。因此,尽管仪表的供电电池的电压具有离散性,并且该电压会随着时间的推移逐渐减小,但是,由于被测电阻值的测量与电源电压值的大小毫无关系,所以该测量方法具有电源电压自补偿特性。
3.2 LCD液晶驱动显示电路
LCD显示电路可采用HT1621驱动,HT点内存映象和多功能的LCD驱动器。HT1621的软件配置特性使它适用于多种LCD应用场合,包括LCD模块和显示子系统。用于连接主控制器和HT1621的管脚只有4或5条。此外,HT1621还有一个节电命令用于降低系统功耗。
用此LCD液晶驱动器可驱动4路公共端、1/3偏压比的4位液晶板。此驱动电路还具有待机功能。当系统进入待机模式后,驱动芯片和液晶板的总耗电量小于1&A(几乎为零)。
4 软件设计
4.1 电源管理软件的低功耗设计
要想最大效率地利用电池的能量,延长便携式仪表的电池使用寿命,除了选择低电压低功耗器件为硬件基础外,还必须编制具有灵活的电源管理软件,具体措施如下:
(1)由于微处理器内部的基本模块都有各自的电源开关,只有在使用时才打开。因此,进行温度采样时,可通过软件启动定时器Timer_a,开始捕获;采样结束时,再通过软件关闭定时器,禁止捕获;
(2)由于温度属时慢变参数,因此,温度的采集应采用定时中断方式。即在CPU初始化后立即进入低功耗模式,等待中断。定时器中断将再次唤醒CPU进行温度采集和数据处理,并将此时的温度值存人FLASH Ram中,处理完毕后,CPU再次进入低功耗模式;
(3)对CPU状态进行智能化管理。MSP430单片机具有LMPO~LMP4等5种低功耗模式(LMP的序号越高,该模式下的功耗越低)。不采集温度时,可使CPU处于低功耗模式LMP3(V为3 V,f为32768 Hz),该模式下的工作电流小于2&A。从低功耗模式到工作模式的转换时间小于6&s。
(4)为了降低电流消耗,可在温度检测电路里用3根I/O口线.并使其平时均处于高阻态,而在数据采集过程中,再通过CPU将相应的口线切换到输出状态。
4.2软件程序
本系统软件由主程序、定时中断服务程序和一系列子程序组成。主程序用于完成单片机的初始化以及等待中断。定时中断服务程序包括测量用的定时充电程序、数据处理子程序以及放电时间测量程序等。其放电时间测量程序流程图如图3所示。被测电阻的测量精度取决于放电时间的测量周期数,例如,当所需分辨率为10位时,可设置计数器的最大值为1024个测量周期。
MSP430的工作模式可通过模块的智能化运行管理软件和CPU的优化状态组合来支持超低功耗的各种要求。主要是使系统中的单片机工作时处于激活模式,工作间隙则将其设定为低功耗模式,以降低系统功耗。
5 系统测试
5.1测试方法
根据环境要求,对本系统的测试可反复在不同温度环境中进行,同时根据数据误差调整软件和硬件来进行校准。温度可采用按度对照校准的方法来测量。
5.2误差分析
本测试所使用的仪器包括计算机、EZ430编程器、示波器、精密数字电流表、数字万用表、温度计和秒表等。
在超低功耗的实现上,可采用极低功耗的组件,并控制漏电流的产生。使微处理器工作在较低频率和使用待机模式,并可优化软件运行,以使整机功耗完全达到最低。
本电路的优点是分辨率高、功耗低。整个电路的特点是外围组件和可调组件少,工作稳定可靠。该系统设计思想对超低功耗、微型便携式的智能化检测仪表的研究和开发具有一定的参考价值。
您现在可能已经使用固定功能的集成电路(IC)很长一段时间了,并且在某些情况下,已经适应了它们有限的灵活性。一个简单的通用异步收发器(UART)到串行外设接口(SPI)桥接器、一个复位控制器或一个带有后备存储器的外部实时控制器(RTC)在自身......关键字:
Holtek新推出具低耗电、高接收灵敏特性的RF超再生OOK Receiver A/D Type SoC Flash MCU C BC66F2430,适用RF工作在315M/433MHz ISM频段的无线灯控、无线吊扇、无线门铃、温控器等无......关键字:
单片机现在可谓是铺天盖地,种类繁多,让开发者们应接不暇,发展也是相当的迅速,从上世纪80年代,由当时的4位8位发展到现在的各种高速单片机……各个厂商们也在速度、内存、功能上此起彼伏,参差不齐~~同时涌现出一大批拥有代表性单片机的厂商:Atm......关键字:
在万物互联的世界中,越来越多能够理解语音内容的电子设备逐渐进入我们的视线。在智能手机、平板电脑和笔记本等拥有Siri或Cortana应用程序的设备中,语音识别能够帮助用户搜索答案或控制周围的电子器件等。......关键字:
随着物联网
(IoT)的持续发展,可穿戴电子产品所能提供的价值也逐步增加。传统意义上,标准型腕表是可穿戴设备在发展初期的代表性产品。如今,这些腕表不仅能够显示时间,还逐渐开始与用户周围的环境进行交互。健康......关键字:
不同地方和不同单位(有评定职称资格的大企业,一般是国企央企国家机关什么的)的标准是不一样的。......关键字:
7月10日消息,第二届“全球女性创业者大会”在杭州举行。阿里巴巴集团董事局主席马云进行主题为“她?时代”的演讲,希望人们对女性角色的重新定义,让女性创业享有和男性平等的机会。谈到最后,马云放言,“下辈子希望做个女人,生两个孩子,创立两个好公......关键字:
我 要 评 论
热门关键词基于单片机的数字温度计设计 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
基于单片机的数字温度计设计
23:44:32  
设计要求:
数字温度计设计一个具有特定功能的数字温度计。该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。测量温度范围0℃~99℃,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。
下面是我的仿真图和汇编程序,但是我的程序只能精确到小数点后一位(0.1),而且不能显示系统提示符“P.”
程序如下:;================================================================;DS18B20温度计;采用4位LED共阳显示器显示测温值,显示精度0.1℃,测温范围-55~+125℃;用AT89C51单片机,12MHz晶振;============================常数定义=============================TIMEL EQU&&0E0H& && && &;20ms,定时器0时间常数TIMEH EQU&&0B1HTEMPHEAD& &EQU&&36H;==========================工作内存定义============================BITST& &&&DATA&&20HTIME1SOK& & BIT& &BITST.1TEMPONEOK BIT& &BITST.2TEMPL& & DATA&&26HTEMPH& & DATA&&27HTEMPHC& & DATA&&28HTEMPLC& & DATA&&29H;============================= 引脚定义===========================TEMPDIN& & BIT& &P3.7;============================= 中断向量区=========================ORG& &&&0000HLJMP& & STARTORG& & 00BHLJMP& & T0IT;=============================系统初始化==========================ORG 100HSTART:& &MOV SP,#60HCLSMEM:&&MOV&&R0,#20HMOV&&R1,#60HCLSMEM1: MOV&&@R0,#00HINC&&R0DJNZ&&R1,CLSMEM1MOV&&TMOD,#B& &;定时器0工作方式1(16BIT)MOV TH0,#TIMELMOV&&TL0,#TIMEH& && &&&;20msSJMP INITERROR: NOPLJMP&&STARTNOPINIT: NOPSETB&&ET0SETB&&TR0SETB EAMOV&&PSW,#00HCLR&&TEMPONEOKLJMP&&MAIN;====================== 定时器0中断服务程序=======================T0IT: PUSH&&PSWMOV&&PSW,#10HMOV&&TH0,#TIMEHMOV&&TL0,#TIMELINC&&R7CJNE&&R7,#32H,T0IT1MOV&&R7,#00HSETB&&TIME1SOK& & ;1s定时到标志T0IT1: POP&&PSWRETI;============================= 主程序=============================MAIN: LCALL&&DISP1& &;调用显示子程序JNB&&TIME1SOK,MAINCLR&&TIME1SOK&&;测温每1s一次JNB&&TEMPONEOK,MAIN2 ;上电时先温度转换一次LCALL&&READTEMP1 ;读出温度值子程序LCALL&&CONVTEMP&&;温度BCD码计算处理子程序LCALL&&DISPBCD& &;显示区BCD码温度值刷新子程序LCALL&&DISP1& && &;消闪烁,显示一次MAIN2:&&LCALL READTEMP& &;温度转换开始SETB&&TEMPONEOKLJMP&&MAIN;============================= 子程序区===========================;RESET DS18B20;================================================================INITDS1820:SETB&&TEMPDINNOPNOPCLR&&TEMPDINMOV&&R6,#0A0H& &;DELAY 480usDJNZ&&R6,$MOV&&R6,#0A0HDJNZ&&R6,$SETB&&TEMPDINMOV&&R6,#32H& &&&;DELAY 70usDJNZ&&R6,$MOV R6,#3CHLOOP1820: MOV&&C,TEMPDINJC&&INITDS1820OUTDJNZ&&R6,LOOP1820MOV&&R6,#064HDJNZ&&R6,$SJMP&&INITDS1820RETINITDS1820OUT: SETB&&TEMPDINRET;====== 读DS18B20的程序,从DS18B20中读出一个字节的数据=============READDS1820: MOV&&R7,#08HSETB&&TEMPDINNOPNOPREADDS1820LOOP: CLR&&TEMPDINNOPNOPNOPSETB&&TEMPDINMOV&&R6,#07H& & ;DELAY 15usDJNZ&&R6,$MOV&&C,TEMPDINMOV&&R6,#3CH& &;DELAY 120usDJNZ&&R6,$RRC&&ASETB&&TEMPDINDJNZ&&R7,READDS1820LOOPMOV&&R6,#3CH& &;DELAY 120 usDJNZ&&R6,$RET;======== 写DS18B20的程序,从DS18B20中写一个字节的数据=============WRITEDS1820: MOV&&R7,#08HSETB&&TEMPDINNOPNOPWRITEDS1820LOP: CLR&&TEMPDINMOV&&R6,#07H& & ;DELAY 15usDJNZ&&R6,$RRC&&AMOV&&TEMPDIN,CMOV&&R6,#34H& & ;DELAY 104usDJNZ&&R6,$SETB&&TEMPDINDJNZ&&R7,WRITEDS1820LOPRET;========================= READ TEMP ===========================READTEMP: LCALL&&INITDS1820MOV&&A,#0CCHLCALL&&WRITEDS1820& &;SKIP ROMMOV&&R6,#34H& && &&&;DELAY 104usDJNZ&&R6,$MOV&&A,#44HLCALL&&WRITEDS1820& &;START CONVERSIONMOV&&R6,#34H& && && &;DELAY 104DJNZ&&R6,$RETREADTEMP1: LCALL INITDS1820MOV&&A,#0CCHLCALL&&WRITEDS1820 ;SKIP ROMMOV&&R6,#34H& & ;DELAY 104usDJNZ&&R6,$MOV&&A,#0BEHLCALL&&WRITEDS1820&&;SCRATCHPADMOV&&R6,#34H& && &&&;DELAY 104usDJNZ&&R6,$MOV&&R5,#09HMOV&&R0,#TEMPHEADMOV&&B,#00HREADTEMP2: LCALL&&READDS1820MOV&&@R0,AINC&&R0READTEMP21: LCALL&&CRC8CALDJNZ&&R5,READTEMP2MOV&&A,BJNZ&&READTEMPOUTMOV&&A,TEMPHEAD+0MOV&&TEMPL,AMOV&&A,TEMPHEAD+1MOV&&TEMPH,AREADTEMPOUT: RET;================== 处理温度BCD码子程序==========================CONVTEMP: MOV&&A,TEMPHANL&&A,#80HJZ& &TEMPC1CLR&&CMOV&&A,TEMPLCPL&&AADD&&A,#01HMOV&&TEMPL,AMOV&&A,TEMPH& &;-CPL&&AADDC&&A,#00H MOV&&TEMPH,A& & ;TEMPHC HI=符号位MOV&&TEMPHC,#0BHSJMP&&TEMPC11TEMPC1: MOV&&TEMPHC,#0AH&&;+TEMPC11: MOV&&A,TEMPHCSWAP&&AMOV&&TEMPHC,AMOV&&A,TEMPLANL&&A,#0FH& &&&;乘0.0625MOV&&DPTR,#TEMPDOTTABMOVC&&A,@A+DPTRMOV&&TEMPLC,A& &;TEMPLC LOW=小数部分BCDMOV&&A,TEMPL& &&&;整数部分ANL&&A,#0F0HSWAP&&AMOV&&TEMPL,AMOV&&A,TEMPHANL&&A,#0FHSWAP&&AORL&&A,TEMPLLCALL&&HEX2BCD1MOV&&TEMPL,AANL&&A,#0F0HSWAP&&AORL&&A,TEMPHC& & ;TEMPHC LOW=十位数BCDMOV&&TEMPHC,AMOV&&A,TEMPLANL&&A,#0FHSWAP&&A& && && & ;TEMPLC HI=个位数BCDORL&&A,TEMPLCMOV&&TEMPLC,AMOV&&A,R7JZ&&TEMPC12ANL&&A,#0FHSWAP&&AMOV&&R7,AMOV&&A,TEMPHC& & ;TEMPLC HI=百位数BCDANL&&A,#0FHORL&&A,R7MOV&&TEMPHC,ATEMPC12: RET;========================= 小数部分码表===========================TEMPDOTTAB: DB&&00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB&&06H,07H,08H,08H,09H,09H;====================== 显示区BCD码温度值刷新子程序===============DISPBCD: MOV&&A,TEMPLCANL&&A,#0FHMOV&&70H,AMOV&&A,TEMPLCSWAP&&AANL&&A,#0FHMOV&&71H,AMOV&&A,TEMPHCANL&&A,#0FHMOV&&72H,AMOV&&A,TEMPHCSWAP AANL&&A,#0FHMOV&&73H,AMOV&&A,TEMPHCANL&&A,#0F0HCJNE&&A,#010H,DISPBCD0SJMP&&DISPBCD2DISPBCD0: MOV&&A,TEMPHCANL&&A,#0FHJNZ&&DISPBCD2 ;十位数是0MOV&&A,TEMPHCSWAP&&AANL&&A,#0FHMOV&&73H,#0AH ;符号位不显示MOV&&72H,A ;十位数显示符号DISPBCD2: RET;======================= 显示子程序===============================;显示数据在70H~73H单元内,用4位LED共阳数码管显示,P1口输出段码数据,;P3口做扫描控制,每个LED数码管亮1ms时间再逐位循环。DISP1: MOV&&R1,#70H ;指向显示数据首址MOV&&R5,#0FEH ;扫描控制字初值PLAY: MOV&&P0,#0FFHMOV&&A,R5 ;扫描字放入AMOV&&P3,A ;从P3口输出MOV&&A,@R1 ;取显示数据到AMOV&&DPTR,#TAB ;取段码表地址MOVC&&A,@A+DPTR ;查显示数据对应段码MOV&&P0,A ;段码放入P0口MOV&&A,R5JB&&ACC.1,LOOP5 ;小数点处理CLR&&P0.7LOOP5: LCALL&&DL1MS ;显示1msINC&&R1 ;指向下一地址MOV&&A,R5 ;扫描控制字放入AJNB&&ACC.3,ENDOUT ;ACC.3=0时一次显示结束RL&&A ;A中数据循环左移MOV R5,A ;放回R5内AJMP&&PLAY ;跳回PLAY循环ENDOUT: MOV&&P0,#0FFH ;一次显示结束,P0口复位MOV&&P3,#0FFH ;P3口复位RET ;子程序返回TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH;共阳段码表 “0”“1”“2”“3”“4”“5”“6”“7”“8”“9”“不亮”“-”DL1MS: MOV&&R6,#14H ;1ms延时程序,LED显示程序用DL1: MOV&&R7,#19HDL2: DJNZ&&R7,DL2DJNZ&&R6,DL1RET;===================== 单字节十六进制转BCD =======================HEX2BCD1: MOV&&B,#064H ;十六进制-&BCDDIV&&AB ;B=A%100MOV&&R7,A ;R7=百位数MOV&&A,#0AHXCH&&A,BDIV&&AB ;B=A%BSWAP&&AORL&&A,BRET;================================================================;Calculate CRC-8Values.&&Uses The CCITT-8Polynomial,Expressed As;X^8+X^5+X^4+1;================================================================CRC8CAL: PUSH&&ACCMOV&&R7,#08H ;Number Bits In ByteCRC8LOOP1: XRL&&A,B ;Calculte CRCRRC&&A ;Move To CarryMOV&&A,B ;Get The Last CRC ValueJNC&&CRC8LOOP2 ;Skip If Data==0XRL&&A,#18H ;Updata The New CRCCRC8LOOP2: RRC&&A ;Position The New CRCMOV&&B,A ;Store The New CRCPOP&&ACC ;Get The Remaining BitsRR&&A ;Position The Next BitPUSH&&ACC ;Save The Remaining BitsDJNZ&&R7,CRC8LOOP1 ;Repeat For 8 BitsPOP&&ACCRETEND
(23.99 KB, 下载次数: 32)
23:42 上传
(21.52 KB, 下载次数: 21)
23:42 上传
(18.91 KB, 下载次数: 18)
23:42 上传
(25.68 KB, 下载次数: 22)
23:42 上传
23:46:30  
留下自己联系方式QQ:,邮箱
高级工程师
11:35:49  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
仿真做的已经相当不错了,只不过是汇编的,可读性有点低,能否再出个C语言版的
14:30:38  
ls,我就是想要求高手改写汇编程序呢,或者C语言的也行,主要是要适应这幅仿真图
09:23:31  
10:53:16  
求资料~!!
助理工程师
12:59:37  
13:23:55  
可读性太低
13:27:48  
把程序修改下吧
09:35:26  
佩服,汇编写程序,
15:15:06  
楼主能帮我写分基于热敏电阻数字温度计的代码吗?热敏电阻PT100,转换器ADC0804,放大器LM324,我邮箱,万分感谢了
(25.86 KB, 下载次数: 5)
15:14 上传
23:15:33  
老师叫我们期末做个温度计,现在来求LZ了~!!
高级工程师
09:14:36  
基本的应用
14:12:53  
08:47:21  
做得很好。可惜的是汇编语言。。。。。。。
17:03:22  
楼主大人本人在做毕业设计也是关于温度检测的和的差不多可以探讨一下吗,我的扣扣
22:38:27  
汇编语言看不懂啊,只会看c语言
13:58:09  
牛啊,呜呜呜呜呜呜
20:30:43  
做得很好。可惜的是汇编语言。。。。。。。
09:15:21  
谢谢楼主分享谢谢楼主分享谢谢楼主分享
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司}

我要回帖

更多关于 msp430f249原理图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信