基于80C31的数字温度计设计.doc

电气电子毕业设计235基于80c31的数字温度计设计

收藏

压缩包内文档预览:(预览前20页/共21页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:516841    类型:共享资源    大小:153.98KB    格式:RAR    上传时间:2015-11-12 上传人:QQ2****711 IP属地:辽宁
5.99
积分
关 键 词:
毕业设计论文
资源描述:
电气电子毕业设计235基于80c31的数字温度计设计,毕业设计论文
内容简介:
单片机课程设计报告 课题内容 基于 80C31 的数字温度计设计 专业班级 05 电子 1 班 姓 名 谢 海 鑫 时 间 16 周 18 周 指导教师 廖 东进 叶文通 2008 年 1 月 17 日 nts 2 1 设计要求 基本范 围 -50 -110 精度误差小于 0.5 LED 数码直读显示 2 扩展功能 实现语音报数 可以任意设定温度的上下限报警功能 nts 3 数字温度计 摘要: 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术 ,本文将介绍一种基于单片机控制的数字温度计 ,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。 关键词: 单片机, 数字控制,温度计, DS18B20, 80C31,74LS373 1 引言 随着人们生活水平的不断提高 ,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机 80C31,测温传感器使用 DS18B20,用 3 位共阳极 LED数 码管以串口传送数据 ,实现温度显示 ,能准确达到以上要求。 2 总体设计方案 2.1 数字温度计设计方案论证 2.1.1 方案一 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到 A/D 转换电路,感温电路比较麻烦。 2.1.2 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的, 在传统的模拟信号远距离温度测量系 统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器 DS18B20 具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。 所以可以采用一只温度传感器 DS18B20,此传感器,可以很容 易直接读取被测温度值,进行转换,就可以满足设计要求 。 从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。 nts 4 2.2 方案二的总体设计框图 温度计电路设计总体设计方框图如图 1 所示,控制器采用单片机 80C31,温度传感器采用 DS18B20,用 3 位 LED 数码管以串口传送数据实现温度显示。 图 1 总体设计方框图 2.2.1 主控制器 1主要特性: 80C31 内置中央处理单元、 128 字节内部数据存储器 RAM、 32 个双向输入 /输出 (I/O)口、 2 个 16 位定时 /计数器和 5 个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。但 80C31 片内并无程序存储器,需外接 ROM。 2管脚说明: VCC:供电电压。 GND:接地。 P0 口: P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。 P0 能够用于外部程序数据存储器,它可以被定义为数据 /地址的第八位。在 FIASH 编程时, P0 口作为原码输入口,当 FIASH 进行 校验时, P0 输出原码,此时 P0 外部必须被拉高。 P1 口: P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口, P1 口缓冲器能接收输出 4TTL门电流。 P1 口管脚写入 1 后,被内部上拉为高,可用作输入, P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时, P1 口作为第八位地址接收。 P2 口: P2 口为一个内部上拉电阻的 8 位双向 I/O 口, P2 口缓冲器可接收,输出 4 个 TTL门电流,当 P2 口被写“ 1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时, P2 口的管脚被外部拉低,将输出 电流。这是由于内部上拉的缘故。 P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时, P2 口输出地址的高八位。在给出地址“ 1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。 P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口: P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“ 1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下主 控 制 器 LED显 示 温 度 传 感 器 单片机复位 时钟振荡 报警点按键调整 nts 5 拉为低电平, P3 口将输出电流( ILL)这是由于上拉的缘故。 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(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时, ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX, MOVC指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE禁止,置位无效。 /PSEN:外部程序存储器 的选通信号。在由外部程序存储器取指期间,每个机器周期两次 /PSEN 有效。但在访问外部数据存储器时,这两次有效的 /PSEN 信号将不出现。 /EA/VPP:当 /EA 保持低电平时,则在此期间外部程序存储器( 0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时, /EA 将内部锁定为 RESET;当 /EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源( VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 3 振荡器特性 XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件, XTAL2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 4芯片擦除 80C31 还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结 CPU 而 RAM 定时器、串行口和中断系统维持其功能。掉电模式下,保存 RAM数据,时钟振荡停止,同时停止芯片内其它功能 。 8031 单片机内部只有数据存储器,而没有程序存储器,它作为一般的最小应用系统也必须要进行外部程序存储器的扩展,扩展中需要使用三态缓冲芯片 74LS373。 纵横比较存储器的各个方面的特点,我选用 2864E2 PROM 进行扩展, E2 PROM 是电可擦除可编程只读存储器 ,其突出优点是能够在线擦除和改写 ,无须像 EPROM 那样必用紫外线照射才能擦除。较新的 E2 PROM 产品在写入时能自动完成擦除,且不再需要专用的编程电源,可以直接使用单片机系统的 +5V 电源。 E2 PROM 既具有 ROM 的非易失性的优点,又 能像 RAM 一样随机地进行读 /写,每个单元可以重复进行 1 万次改nts 6 写,保留信息的时间长达 20 年,不存在 EPROM 在光照下出现信息缓慢丢失的问题。E2 PROM 既可以扩展为片外 EPROM,也可以扩展为片外 RAM。它使单片机系统的设计,特别是调试实验显得非常方便灵活。在调试程序中,用 E2 PROM 代替仿真 RAM,既可方便得修改程序,又能保存调试好的程序。当然,与 RAM 相比, E2 PROM 的操作速度是很慢的。另外,它的擦除 /读写是有寿命限制的,虽然有一万才次之多,但也不宜用在数据频繁更新的场合。因此, 应注意平均地使用各单元,不然有些单元可能会提前结束寿命。 2.2.2 显示电路 2.2.2.1 显示电路工作原理及结构介绍 显示电路采用 3 位共阳 LED 数码管,从 P3 口 RXD,TXD 串口输出段码。 采用 串行输出的静态显示电路 ! 80C31 单片机是 MCS-51 系列单片机的一种,它广泛应用于各种小型控制系统中。我们知道, 80C31 单片机有一个串行口可用于串行通讯,它在方式 0状态下,还可以扩展并行 I/O 口,从而实现多个 LED 显示,其中, 74LS164 为串行输入、并行输出移位寄存器, 74LS164 为单向总线驱动器, LED 采用 5EF1183KR 型共 阳 极数码管。 当 80C31 单片机复位时,串行口为方式 0 状态,即工作在移位寄存器方式,波特率为振荡频率的十二分之一。器件执行任何一条将 SBUF 作为目的寄存器的命令时,数据便开始从 RXD 端发送。在写信号有效时,相隔一个机器周期后发送控制端 P2.0 有效,即允许 RXD 发送数据,同时,允许从 TXD 端输出移位脉冲。第一帧( 8 位)数据发送完毕时,各控制信号均恢复原状态,只有 TI 保持高电平,呈中断申请状态。第一个74LS164 把第一帧数据并行输出, LED1 显示该数据。然后,用软件将 TI 清零,发 送第二帧数据。第二帧数据发送完毕, LED1 显示第二帧数据,第一帧数据串行输入给第二个 74LS164, LED2 显示第一帧数据。依此类推,直到把数据区内所有数据发送出去。应该注意,数据全部发送完后,第一帧数据在最后一个 LED 显示。 2.2.2.2 LED 845 显示管介绍 LED 是发光二极管的缩写,通常所说的 LED 显示器是由 7 个发光二极管组成,按“日”字形排列,也称七段 LED 显示器。起管脚排列如图 2( A)所示。此外,显示器中还有一个圆点型发光二极管 。 表示小数点。图中以 DP 表示。 LED 显示的有共阳和共阴 两种接法。所有发光二极管的阳极连在一起称为共阳接法,阴极连在一起称为共阴极接法,分别如图 2( B)( C)所示 R 是限流电阻 当选用共阴极的 LED 显示器的时候,所有发光二极管的阴连在一起接地,当某个发光二极管的阳极加如高电平时候对应的二极管电亮。加入低电平时对应的二极管熄灭。 当选用共阳极的 LED 显示器的时候,所有发光二极管的阳连在一起接地,当某个发光二极管的阴极加如高电平时候对应的二极管熄灭。加入低电平时对应的二极管电亮。 nts 7 图 2( A) 图 2( B) ( C) 为了在七段 LED 显示器上显示不同的数字和符号,首先要把数字或字符转换成响应的段码,字符数据字与 LED 段码各代码的对应关系如下 显示字符 段码(共阴) 段码(共阳) 显示字符 段码(共阴) 段码(共阳) 0 3FH C0H 9 6FH 90H 1 06H F9H A 77H 88H 2 5BH A4H B 7CH 83H 3 4FH B0H C 39H C6H 4 66H 99H D 5EH A1H 5 6DH 92H E 79H 86H 6 7DH 82H F 71H 8EH 7 07H F8H 灭 00H FFH 8 7FH 80H 在单片机应用系统中,发光二极管 LED 显示器常用两种驱动方式;静态显示驱动和动态显示驱动 。 本次设计采用静态显示驱动 。 nts 8 2.2.3 温度传感器 DS18B20 温度传感器是美 国 DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。 由于 DS18B20 采用的是 1 Wire 总线协议方式,即在一根数据线实现数据的双向传输,而对 AT89S51 单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对 DS18B20 芯片的访问。由于 DS18B20 是在一根I/O 线上读写数据,因此,对读写的数据位有着严格的时序要求。 DS18B20 有严 格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。对于 DS18B20的读时序分为读 0时序和读 1时序两个过程。对于 DS18B20 的读时隙是从主机把单总线拉低之后,在 15 秒之内就得释放单总线,以让 DS18B20 把数据传输到单总线上。 DS18B20 在完成 一个读时序过程,至少需要 60us才能完成。 对于 DS18B20 的写时序仍然分为写 0 时序和写 1 时序两个过程。对于 DS18B20 写 0时序和写 1 时序的要求不同,当要写 0 时序时,单总线要被拉低至少 60us,保证 DS18B20能够在 15us 到 45us 之间能够正确地采样 IO 总线上的 “0” 电平,当要写 1 时序时,单总线被拉低之后,在 15us 之内就得释放单总线 DS18B20 的性能特点如下: 独特的单线接口仅需要一个端口引脚进行通信; 多个 DS18B20 可以并联在惟一的三线上,实现多点组网功能; 无须外部器件; 可通过数据线供电,电压范围为 3.05.5; 零待机功耗; 温度以或位数字; 用户可定义报警设置; 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; nts 9 DS18B20 采用脚 PR 35 封装或脚 SOIC 封装,其内部结构框图如图 3 所示。 图 3 DS18B20 内部结构 64 位 ROM 的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。 DS18B20 温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的 EERAM。高速暂 存 RAM 的结构为字节的存储器,结构如图 3 所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。 DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图 4 所示。低位一直为,是工作模式位,用于设置 DS18B20 在工作模式还是在测试模式, DS18B20 出厂时该位被设置为,用户要去改动, R1 和 0 决定温度转换的精度位数,来设置分辨率。 TM R1 1R0 1 1 1 1 . 图 4 DS18B20 字节定义 温度 LSB 温度 MSB TH 用户字节 1 TL 用户字节 2 配置寄存器 保留 保留 保留 CRC I/O C 64 位 ROM 和 单 线 接 口 高速缓存 存储器与控制逻辑 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 发生 器 Vdd nts 10 由表 1 可见, DS18B20 温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的 CRC 码,可用来检验数据,从而保证通信数据的正确性。 当 DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以 0.0625 LSB 形式表示。 当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表 2 是一部分温度值对应的二进制温度数据。 表 1 DS18B20 温度转换时间表 R0R1000101119101112分辨率/ 位 温度最大转向时间/ m s9 3 . 7 51 8 7 . 53 7 57 5 0.DS18B20 完成温度转换后,就把测得的温度值与 RAM 中的 TH、 T字节内容作比较。若 TH 或 T TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只 DS18B20 同时测量温度并进行报警搜索。 在 64 位 ROM 的最高有效字节中存储有循环冗余检验码( CRC)。主机 ROM 的前 56 位来计算 CRC 值,并和存入 DS18B20 的 CRC 值作比较,以判断主机收到的 ROM 数据是否正确。 DS18B20 的测温原理是这这样的 ,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频 率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时, DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将 55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在 55所对应的一个基数值。 减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度 系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。 nts 11 表 2 一部分温度对应值表 温度 / 二进制表示 十六进制表示 +125 0000 0111 1101 0000 07D0H +85 0000 0101 0101 0000 0550H +25.0625 0000 0001 1001 0000 0191H +10.125 0000 0000 1010 0001 00A2H +0.5 0000 0000 0000 0010 0008H 0 0000 0000 0000 1000 0000H -0.5 1111 1111 1111 0000 FFF8H -10.125 1111 1111 0101 1110 FF5EH -25.0625 1111 1110 0110 1111 FE6FH -55 1111 1100 1001 0000 FC90H 另外,由于 DS18B20 单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对 DS18B20 的各种操作按协议进行。操作协议为:初使化 DS18B20(发复位脉冲)发 ROM 功能命令发存储器操作命令处理数据。 图 5 DS18B20 与单片机的接口电路 2.3 DS18B20 温度传感器与单片机的接口电路 DS18B20 可以采用两种方式供电,一种是采用电源供电方式,此时 DS18B20 的 1 脚接地, 2 脚作为信号线, 3 脚接电源。另一种是寄生电源供电方式, 如图 5 才用第一种方式 ,同时可以达到单点或 多点的同测量。 2.4 系统整体硬件电路 2.4.1 主板电路 系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等,如图 6 所示。 图 6 中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时 LED 数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。 图 6 中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。 nts 12 2.4.2 显示电路 显示电路是使用的串口显示,这种显示最大的优点就是使用口资源比较少,只用 p3口的 RXD,和 TXD,串口的发送和接收,四只数码管采用 74LS164 右移寄存器驱动,显示比较清晰。 图 6 单片机主板电路 图 7 温度显示电路 3 系统软件算法分析 系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。 3.1 主程序 主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20 的测量的当前温度值,温度测量每 1s 进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图 8 所示。 nts 13 发 DS18B20 复位命令 发跳过 ROM 命令 发温度转换开始命令 结束 图 8 主程序流程图 图 9 读温度流程图 3.2 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校验有错时不进行温度数据的改写。其程序流程图如图 9 示 图 10 温度转换流程图 初始化 调用显示子程序 1S 到? 初次上电 读出温度值温度计算处理显示数据刷新 发温度转换开始命令 N Y N Y Y 发 DS18B20 复位命令 发跳过 ROM 命令 发读取温度命令 读取操作, CRC 校验 9 字节完? CRC校验正?确? 移入温度暂存器 结束 N N Y nts 14 3.3 温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用 12 位分辨率时转换时间约为 750ms,在本程序设计中采用 1s 显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图 10 所示 3.4 计算温度子程序 计算温度子程序将 RAM中读取值进行 BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图 11 所示。 图 11 计算温度流程图 图 12 显示数据刷新流程图 3.5 显示数据刷新子程序 显示数据刷新子程 序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为 0 时将符号显示位移入下一位。程序流程图如图 12。 开始 温度零下 ? 温度值取补码置“ ”标志 计算小数位温度 BCD值 计算整数位温度 BCD值 结束 置“ +”标志 N Y 温度数据移入显示寄存器 十位数 0? 百位数 0? 十位数显示符号百位数不显示 百位数显 示数据(不显示符号) 结束 N N Y Y nts 15 4 总结与体会 经过将近三周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀! 在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我 觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是 BCD 码,这一次,我全部用的都是 16进制的数直接加减,显示处理时在用除法去删分 ,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。 从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。 5 参考文献 1 李朝 青 .单片机原理及接口技术 (简明修订版) .杭州:北京航空航天大学出版社,1998 2 李广弟 .单片机基础 .北京:北京航空航天大学出版社, 1994 3 阎石 .数字电子技术基础(第三版) . 北京:高等教育出版社, 1989 4 廖常初 .现场总线概述 J .电工技术, 1999. 5 李全利 .单片机原理及应用技术 .高等教育出版社 .2004 6 付家才 .单片机控制工程实践技术 .化学工业出版社 .2004 7 张洪润 .单机片应用技术教程 .清华大学出版社 .2003 nts 16 数字温度计程序清单 S1OK EQU 5FH TEMPUTER EQU 39H TEMPH EQU 5EH TEMPL EQU 5DH MS50 EQU 5CH SIGN EQU 5BH S1 BIT P1.0 S2 BIT P1.1 S3 BIT P1.2 S4 BIT P1.3 ORG 0000H LJMP MAIN ORG 000BH LJMP TOIT ORG 0030H MAIN: MOV SP, #60H MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0B0H SETB ET0 SETB TR0 SETB EA MOV TEMPH, #30 MOV TEMPL, #9 MOV TEMPUTER, #15 ;温度最始值 MOV S1OK, #00H MOV SIGN, #00H MOV 38H, #0BH MOV 37H, #0CH MOV 36H, #0BH ACALL DISP ACALL T1S ; * ; 主程序 START: JB S1, NET1 ACALL T12MS JB S1, NET1 JNB S1, $ INC SIGN MOV A, SIGN CJNE A, #1, TIAO ACALL TIAOTL TIAO:CJNE A, #2, NET1 MOV SIGN, #0 ACALL TIAOTH ; * NET1: MOV A, S1OK CJNE A, #1, START MOV A, TEMPUTER SUBB A, TEMPH JNB ACC.7, ALEM MOV A, TEMPUTER SUBB A, TEMPL JB ACC.7, ALEM SETB P2.1 ACALL WENDU ACALL DISP MOV S1OK, #00H AJMP START ALEM: MOV 36H, #0CH MOV 37H, #0CH MOV 38H, #0CH CLR P2.1 ACALL DISP ACALL T1S nts 17 LCALL WENDU LCALL DISP MOV S1OK, #00H SJMP START ;* TIAOTL:MOV 50H, TEMPUTER MOV 37H, TEMPL ACALL BIN_BCD ACALL DISP ACALL T12MS ACALL T12MS ACALL T12MS ACALL T12MS MOV 36H, #0AH MOV 37H, #0AH MOV 38H, #0AH ACALL DISP ACALL T12MS ACALL T12MS ACALL T12MS ACALL T12MS JB S2, ADD1 ACALL T12MS JB S2, ADD1 JNB S2, $ INC TEMPL MOV A, TEMPL CJNE A, #100, ADD1 MOV TEMPL, #0 ADD1: JB S3, ADD2 ACALL T12MS JB S3, ADD2 JNB S3, $ DEC TEMPL MOV A, TEMPL CJNE A, #00 , ADD2 MOV TEMPL,#100 ADD2: JB S4, TIAOTL ACALL T12MS JB S4, TIAOTL JNB S4, $ MOV TEMPUTER, 50H LJMP START ; 高位调整 ; * TIAOTH:MOV 50H, TEMPUTER MOV 37H, TEMPH ACALL BIN_BCD ACALL DISP ACALL T12MS ACALL T12MS ACALL T12MS ACALL T12MS MOV 36H, #0AH MOV 37H, #0AH MOV 38H, #0AH ACALL DISP ACALL T12MS ACALL T12MS ACALL T12MS ACALL T12MS JB S2, ADD11 ACALL T12MS JB S2, ADD11 JNB S2, $ INC TEMPH MOV A, TEMPH CJNE A, #100, ADD11 MOV TEMPH, #0 nts 18 ADD11: JB S3, ADD22 ACALL T12MS JB S3, ADD22 JNB S3, $ DEC TEMPH MOV A, TEMPH CJNE A, #00 , ADD22 MOV TEMPH,#100 ADD22: JB S4, TIAOTH ACALL T12MS JB S4, TIAOTH JNB S4, $ MOV TEMPUTER, 50H LJMP START ; 一秒定时中段 ; * TOIT: PUSH PSW PUSH ACC MOV TH0, #3CH MOV TL0, #0B0H INC MS50 MOV A, MS50 CJNE A, #14H, RETURN MOV S1OK, #1 MOV MS50, #00H RETURN:POP ACC POP PSW RETI ; * ;温度总子程序 ; * wendu: ACALL INIT_1820 ACALL RE_CONFIG ACALL GET_TEMPER ACALL TEMPER_COV RET ; * ;DS18B20 初始化程序 ; * INIT_1820: SETB P2.0 NOP CLR P2.0 MOV R0,#06BH MOV R1,#03H TSR1: DJNZ R0,TSR1 ; 延时 MOV R0,#6BH DJNZ R1,TSR1 SETB P2.0 NOP NOP NOP MOV R0,#25H TSR2: JNB P2.0,TSR3 DJNZ R0,TSR2 LJMP TSR4 ; 延时 TSR3: SETB 20H.1 ; 置标志位 ,表示 DS1820 存在 LJMP TSR5 TSR4: CLR 20H.1 ; 清标志位 ,表示 DS1820 不存在 nts 19 LJMP TSR7 TSR5: MOV R0,#06BH MOV R1,#03H TSR6:DJNZ R0,TSR6 ; 延时 MOV R0,#6BH DJNZ R1,TSR6 TSR7:SETB P2.0 RET ; * ; 重新写 DS18B20 暂存存储器设定值 ; * RE_CONFIG:JB 20H.1,RE_CONFIG1 ; 若 DS18B20 存在 ,转 RE_CONFIG1 RET RE_CONFIG1: MOV A,#0CCH ; 发 SKIP ROM 命令 LCALL WRITE_1820 MOV A,#4EH ; 发写暂存存储器命令 LCALL WRITE_1820 MOV A,#00H ; TH(报警上限 )中写入 00H LCALL WRITE_1820 MOV A,#00H ; TL(报警下限 )中写入 00H LCALL WRITE_1820 MOV A,#1FH ; 选择 9 位温度分辨率 LCALL WRITE_1820 RET ; * ; 读出转换后的温度值 ; * GET_TEMPER: SETB P2.0 ; 定时入口 LCALL INIT_1820 JB
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:电气电子毕业设计235基于80c31的数字温度计设计
链接地址:https://www.renrendoc.com/p-516841.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!