ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:798.97KB ,
资源ID:21289807      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21289807.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DS18b20的温度测量和秒表设计单片机最小系统实验报告Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于DS18b20的温度测量和秒表设计单片机最小系统实验报告Word文件下载.docx

1、VCC:供电电压.GND:接地.P0口:P0口为一个8位漏级开路双向I/O口,内部无上拉电阻每脚可吸收8TTL门电流.当P1口地管脚第一次写1时,被定义为高阻输入.P0能够用于外部程序数据存储器,它可以被定义为数据/地址地第八位.P1口:P1口是一个内部提供上拉电阻地8位双向I/O口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉地缘故.在FLASH编程和校验时,P1口作为第八位地址接收.P2口:P2口为一个内部上拉电阻地8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”

2、时,其管脚被内部上拉电阻拉高,且作为输入.并因此作为输入时,P2口地管脚被外部拉低,将输出电流.P3口:P3口管脚是8个带内部上拉电阻地双向I/O口,可接收输出4个TTL门电流.当P3口写入“1”后,它们被内部上拉为高电平,并用作输入.作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉地缘故.P3口也可作为AT89C51地一些特殊功能口,如下表所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)

3、P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号.RST:复位输入.当振荡器复位器件时,要保持RST脚两个机器周期地高电平时间.ALE/PROG:当访问外部存储器时,地址锁存允许地输出电平用于锁存地址地地位字节.在FLASH编程期间,此引脚用于输入编程脉冲.在平时,ALE端以不变地频率周期输出正脉冲信号,此频率为振荡器频率地1/6.因此它可用作对外部输出地脉冲或用于定时目地.然而要注意地是:每当用作外部数据存储器时,将跳过一个ALE脉冲.如想禁止ALE地输出可在SFR8EH地址上置0.此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用.另外,该

4、引脚被略微拉高.如果微处理器在外部执行状态ALE禁止,置位无效./PSEN:外部程序存储器地选通信号.在由外部程序存储器取指期间,每个机器周期两次/PSEN有效.但在访问外部数据存储器时,这两次有效地/PSEN信号将不出现./EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器.注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器.在FLASH编程期间,此引脚也用于施加12V编程电源(VPP).XTAL1:反向振荡放大器地输入及内部时钟工作电路地输入.XTAL2:来自反向振荡器地输出.二、18B2

5、0介绍DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等.主要根据应用场合地不同而改变其外观.封装后地DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合.耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域.(1)DS18B20(a)通过单线总线端口访问 DS1820 地协议如下: 初始化void Init_DS18B20() uchar x=0。 DQ = 1。 /DQ复位 dela

6、y_18B20(8)。 /稍做延时 DQ = 0。 /单片机将DQ拉低 delay_18B20(80)。 /精确延时 大于 480us /拉高总线 delay_18B20(14)。 x=DQ。 /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20)。 ROM 操作命令int ReadOneChar(void) uchar i=0。 uchar dat = 0。 for (i=8。i0。i-) DQ = 0。 / 给脉冲信号 dat=1。 DQ = 1。 if(DQ) dat|=0x80。 delay_18B20(4)。 return(dat)。 存储器操作命令

7、WriteOneChar(uchar dat) i i-) DQ = dat&0x01。 delay_18B20(5)。 dat 执行/数据ReadTemperature(void) uchar a=0。 uchar b=0。 uint t=0。 Init_DS18B20()。 WriteOneChar(0xCC)。 / 跳过读序号列号地操作 WriteOneChar(0x44)。 / 启动温度转换 delay_18B20(100)。 /跳过读序号列号地操作 WriteOneChar(0xBE)。 /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar()。 b=R

8、eadOneChar()。 /传感器返回值除16得实际温度值 /为了得到2位小数位,先乘100,再除16,考虑整型数据长度, /技巧处理后先乘25,再除4,除4用右移实现 b=8。 t=a+b。 return(t)。DS1820 需要严格地协议以确保数据地完整性.协议包括几种单线信号类型:复位脉冲、存在脉冲、写0、写1、读0 和读1.所有这些信号,除存在脉冲外,都是由总线控制器发出地.和 DS1820 间地任何通讯都需要以初始化序列开始,初始化序列见下图.一个复位脉冲跟着一个存在脉冲表明DS1820 已经准备好发送和接收数据(适当地ROM 命令和存储器操作命令)(b)当总线上只有一个器件时,D

9、S18B20读温度地流程为:复位发0CCH SKIP ROM命令发44H开始转换命令延时复位发0CCHSKIP ROM命令发0BEH读存储器命令连续读出两个字节数据(即温度)结束.Convert T 44h这条命令启动一次温度转换而无需其他数据.温度转换命令被执行,而后DS1820 保持等待状态.如果总线控制器在这条命令之后跟着发出读时间隙,而DS1820 又忙于做时间转换地话,DS1820 将在总线上输出“0”,若温度转换完成,则输出“1”.如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms.Read Scratchpad BEh这个命令读取暂存器地内容.读取将

10、从字节0 开始,一直进行下去,直到第9(字节8,CRC)字节读完.如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取.(c)DS18b20 用12 位存贮温值度最高位为符号位,下图为18b20 地温度存储方式,负温度S=1 正温度S=0LSB:D7 D6 D5 D4 D3 D2 D1 D0232221202-12-22-32-4MSB:S272625三、最小系统硬件设计1、设计结构框图2、系统时钟电路单片机内部具有一个高增益反相放大器,用于构成振荡器.通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,系统时钟电路结构如图:3、复位电路单片机小系统采用上电自

11、动复位和手动按键复位两种方式实现系统地复位操作.上电复位要求接通电源后,自动实现复位操作.手动复位要求在电源接通地条件下,在单片机运行期间,用按钮开关操作使单片机复位.显示电路、键盘以及外部RAM地扩展根据具体电路地不同而不同四、实验具体内容1、实现LED显示器地选通并显示字符电路图地绘制(1)打开PROTEUS将所需元器件加入到对象选择器窗口.Picking Components into the Schematic单击对象选择器按钮,如图所示弹出“Pick Devices”页面,在“Keywords”输入AT89C51,系统在对象库中进行搜索查找,并将搜索结果显示在“Results”中,如

12、图所示.在“Results”栏中地列表项中,双击“AT89C51”,则可将“AT89C51”添加至对象选择器窗口. (2)接着在“Keywords”栏中重新输入7SEG,如图所示.双击“7SEG-MPX6-CA-BLUE”,则可将“7SEG-MPX6-CA-BLUE”(6位共阳7段LED显示器)添加至对象选择器窗口.(3)最后,在“Keywords”栏中重新输入RES,选中“Match Whole Words”,如图所示.在“Results”栏中获得与RES完全匹配地搜索结果.双击“RES”,则可将“RES”(电阻)添加至对象选择器窗口.单击“OK”按钮,结束对象选择.经过以上操作,在对象选择

13、器窗口中,已有了7SEG-MPX6-CA-BLUE、AT89C51、RES三个元器件对象,若单击AT89C51,在预览窗口中,见到AT89C51地实物图,如图所示;若单击RES或7SEG-MPX6-CA-BLUE,在预览窗口中,见到RES和7SEG-MPX6-CA-BLUE地实物图,如图所示.此时,我们已注意到在绘图工具栏中地元器件按钮处于选中状态.(4)放置元器件至图形编辑窗口Placing Components onto the Schematic在对象选择器窗口中,选中7SEG-MPX6-CA-BLUE,将鼠标置于图形编辑窗口该对象地欲放位置、单击鼠标左键,该对象被完成放置.同理,将AT

14、89C51和RES放置到图形编辑窗口中.如图所示.(5)放置总线至图形编辑窗口单击绘图工具栏中地总线按钮,使之处于选中状态.将鼠标置于图形编辑窗口,单击鼠标左键,确定总线地起始位置;移动鼠标,屏幕出现粉红色细直线,找到总线地终了位置,单击鼠标左键,再单击鼠标右键,以表示确认并结束画总线操作.此后,粉红色细直线被蓝色地粗直线所替代,如图所示.(6)元器件之间地连线Proteus地智能化可以在你想要画线地时候进行自动检测.下面,我们来操作将电阻R1地右端连接到LED显示器地A端.当鼠标地指针靠近R1右端地连接点时,跟着鼠标地指针就会出现一个“”号,表明找到了R1地连接点,单击鼠标左键,移动鼠标(不

15、用拖动鼠标),将鼠标地指针靠近LED显示器地A端地连接点时,跟着鼠标地指针就会出现一个“”号,表明找到了LED显示器地连接点,同时屏幕上出现了粉红色地连接,单击鼠标左键,粉红色地连接线变成了深绿色,同时,线形由直线自动变成了90地折线,这是因为我们选中了线路自动路径功能.Proteus具有线路自动路径功能(简称WAR),当选中两个连接点后,WAR将选择一个合适地路径连线.WAR可通过使用标准工具栏里地“WAR”命令按钮来关闭或打开,也可以在菜单栏地“Tools”下找到这个图标.同理,我们可以完成其它连线.在此过程地任何时刻,都可以按ESC键或者单击鼠标地右键来放弃画线.(7)元器件与总线地连线

16、画总线地时候为了和一般地导线区分,我们一般喜欢画斜线来表示分支线.此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可,如图所示.(8)给与总线连接地导线贴标签PART LABELS单击绘图工具栏中地导线标签按钮,使之处于选中状态.将鼠标置于图形编辑窗口地欲标标签地导线上,跟着鼠标地指针就会出现一个“”号,如图所示.表明找到了可以标注地导线,单击鼠标左键,弹出编辑导线标签窗口,如图所示. 在“string”栏中,输入标签名称(如a),单击“OK”按钮,结束对该导线地标签标定.同理,可以标注其它导线地标签,如图所示.注意,在标定导线标签地过程中,相互接通地导线必须标注相同地标签名.至此

17、,我们便完成了整个电路图地绘制.KeilC与Proteus连接调试进入KeilC Vision2开发集成环境,创建一个新工程(Project),并为该工程选定合适地单片机CPU器件(如:Atmel公司地AT89C51).并为该工程加入KeilC源程序.实验仿真图:源程序如下:#include #define LEDS 6 /led灯选通信号unsigned char code Select=0x01,0x02,0x04,0x08,0x10,0x20。unsigned char code LED_CODES= 0xc0,0xF9,0xA4,0xB0,0x99,/0-4 0x92,0x82,0xF

18、8,0x80,0x90,/5-9 0x88,0x83,0xC6,0xA1,0x86。void main() char i=0,j=0。 long int k。 while(1) P2=0。 P1=LED_CODESi。 P2=Selectj。 for(k=3000。kk-)。/该LED模型靠脉冲点亮,第i位靠脉冲点亮后,会自动熄来头./修改循环次数,改变点亮下一位之前地延时,可得到不同地显示效果. i+。 j+。 if(j5) j=0。 if(i14)i=0。2、基于DS18b20地温度测量和秒表设计设计方案:通过功能键(外部中断)选择进入不同地模式工作.当K=0时,工作在时间显示模式,当k=

19、1时,工作在秒表模式,其中开关1、2、3时调节自己需要倒计时地时间,没按下时,对应地数值加一.开关4为开始/暂停按键.当k=4时,显示采集回来地温度.LED1、LED 2、LED3灯是用来更直观地看本设计工作在什么下地,LED4为是闪烁,闪烁频率为1s.(1)、硬件部分(2)软件部分源程序:#include#define DataPort P0 /定义数据端口 程序中遇到DataPort 则用P0 替换#define uchar unsigned char#define uint unsigned int/*位定义*/sbit menu = P32。 /位声明,外部中断口,功能键sbit LE

20、D1 = P15。 /LED灯sbit LED2 = P16。sbit LED3 = P17。sbit LED4 = P14。sbit add_m= P10。 /按键,调分 sbit add_s= P11。 /按键,调秒sbit add_us=P12。 /按键,调微秒sbit reset =P13。 /清零,秒表状态下也是清零sbit LATCH1=P20。 /定义锁存使能端口 段锁存sbit LATCH2=P21。/ 位锁存sbit DQ = P22。 /定义18b20地通信端口 /*参数定义*/uint a,b,j。uchar TempData8。uint m,s,w, /时钟 m0,s0

21、,w0,/秒表 k。/状态转换标志uchar code weima=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe。/位码uchar code duanma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f。/段码/*函数声明*/void delay_18B20(uint i)。void Init_DS18B20()。int ReadOneChar()。WriteOneChar(uchar dat)。ReadTemperature(void)。void Display1()。void init()。void ke

22、yscan()。void display(uchar a,uchar b,uchar c)。void delay(uchar z)。void wendu()。/*主函数*/ init()。 /初始化 while(1) if(k=0)/时间 LED1=1。 /点亮第一个灯,辨别是工作在时间模式下地 LED2=0。 LED3=0。 keyscan()。 display(m0,s0,w0)。 /显示时间 if(k=1)/倒计时 LED1=0。 LED2=1。 /点亮第二个灯,辨别是工作在秒表模式下地 display(m,s,w)。 if(k=2)/温度 LED3=1。 /点亮第三个灯,辨别是工作在温度模式下地 wendu()。 void delay_18B20(uint i)/延时函数 while(i-)。/*18b20初始化*/*读一个字节*/ /*写一个字节*/ /*读取温度*/ return(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1