单片机课程设计1仅供参考.docx
- 文档编号:26991632
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:40
- 大小:328.75KB
单片机课程设计1仅供参考.docx
《单片机课程设计1仅供参考.docx》由会员分享,可在线阅读,更多相关《单片机课程设计1仅供参考.docx(40页珍藏版)》请在冰豆网上搜索。
单片机课程设计1仅供参考
单片机课程设计
题目数字温度计
姓名:
所在学院:
所学专业:
班级:
学号:
指导教师:
完成时间:
摘要
21世纪,电子技术获得了飞速的发展,在其推动下现代电子产品几乎参透了社会的各个领略,有力的推动了社会生产力的发展和社会信息化程度的提高,同时的也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
随着超大规模集成电路技术的不断发展,20世纪80年代开发出了一个能在一个芯片上集成CPU、RAM、ROM、I/O口等电子电路的超微型计算机,这种单个芯片式的微型计算机被命名为单片微型计算机(SingleChipMicrocomputer),简称为单片微机或单片机。
自从1974年12月美国Fairchild公司第一个推出世界上第一台单片机F8来,单片机以惊人的速度发展。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
单片机以渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用各种智能IC卡,安全保障系统,录像机,摄像机,全自动洗衣机的控制,以及遥控玩具、电子宠物等等,这些都离不开单片机。
在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。
而热电偶和热电组测出的一般都是电压,再转换成对应得温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。
本数字温度计设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS1820作为检测元件,测温范围为-55℃~125℃,分辨率最大可达0.0625℃。
DS18B20可以直接读出被测温度值。
而且采用单线制与单片机相连,减少了外部硬件电路,具有低成本和易使用的特点。
目录
1系统设计4
2硬件设计电路5
2.1测温和控制电路5
2.1.1测温电路5
2.1.2控制电路9
2.2辅助电路13
2.2.1晶振电路13
2.2.2复位电路14
2.3工作原理15
2.3.1主控制器15
2.3.2显示电路15
2.3.3整体电路图16
3软件电路16
3.1软件系统的介绍16
3.2编程语言的选择16
3.3应用软件的选择——Keilc5117
3.4程序设计17
3.4.1主程序18
4心得体会18
5参考文献18
6附录20
6.1子程序20
6.1.1读出温度子程序:
20
6.1.2温度转换命令子程序21
6.1.3计算温度子程序22
6.1.4显示数据刷新子程序22
6.2最终原理图23
6.3汇编语言编写的数字温度计源程序代码如下:
23
1系统设计
温度是一种基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量。
因此研究温度的测量方法和装置具有重要意义。
测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:
传统的分立式温度传感器、模拟集成温度传感器、智能集成温度传感器。
目前,国际上新型温度传感器正从模拟式向数字式,集成化向智能化、网络化的方向飞速发展。
本文所介绍的智能温度测量系统是基于DS18B20型数字式温度传感器,在89C51单片机的控制下,对环境温度进行实时控制的装置。
该系统测量范围宽、测量精确度高,该系统可广泛适用
显示电路
显示控
制电路
图1.1数字温度计框图
2硬件设计电路
2.1测温和控制电路
为此设计的主要电路。
用单线温度传感器DS18B20把温度信号直接转换成数字信号输入单片机。
2.1.1测温电路
测温电路主要是由DS18B20组成的电路。
DS18B20是美国DALLAS公司生产的单线数字温度传感器,可以把温度信号直接转换成串行数字信号供微机处理,是模/数转换器件,而且读DS18B20信息和写DS18B20信息仅需要单线接口,使用非常方便。
图2.1.1DS18B20内部结构
DS18B20的特点:
1.独特的单线接口方式。
DS18B20与单片机连接时,仅需要一条信号线即可实现单片机与DS18B20的双向通信。
2.在使用中不需要任何外围元件。
3.可用数据线供电,电压范围为3.0~5.5V。
4.测温范围为-55~125°C。
5.通过编程可实现9~12位的数字读数方式。
6.用户可自行设定非易失性报警的上下限值。
7.支持多点组网功能。
多个DS18B20可以并联在三条线上,实现多点测温。
8.负压特性。
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
图2.1.2DS18B20封装图与接线方式
DS18B20控制方法:
在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O口与单片机的I/O口相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。
无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。
CPU对DS18B20的访问流程是:
先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。
DS18B20每一步操作都要遵循严格的工作时序和通信协议。
如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
程图所示的步骤它分三步完成:
①系统通过反复操作,搜索DS1820序列号;②启动所有在线DS1820做温度A/D变换;③逐个读出在线DS1820变换后的温度数据。
DS18B20工作原理
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出北侧温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
64位ROM的位结构如图4所示。
开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
非易失性温度报警器触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图2.1.3所示。
头2个字节包含测得的温度信息,第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。
该字节各位的定义热图2.1.4所示。
低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要改动,R1和R0决定温度转换得精度位数,即用来设置分辨率,定义方法见表1。
图2.1.3高速暂存RAM结构图
图2.1.4配置寄存器
表1DS18B20分辨率的定义规定
由表1可见,DS18B20温度转换的时间比较长,而且设定的分辨率越高,所需要的温度转换时间越长.因此,在实际应用中要将分辨率和转换时间权衡考虑.
高速暂存RAM的第6,7,8字节保存未用,表现为逻辑1.第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性.
当DS18B20接收温度转换命令后,开始启动转换.转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节.单片机可以通过单线接口读出数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示.温度值格式如图7所示.
图2.1.5温度数据值格式
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码转换为原码,再计算十进制.表2是一部分温度值对应的二进制温度数据.
表2DS18B20温度与测得值对应表
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH,TL字节内容作比较.若T>TH或T 在64位ROM的最高有效字节中存储有循环冗余检验码(CRC).主机根据ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到ROM数据是否正确. DS18B20的测温原理如下图所示.图中第温度系数晶振的震荡频率受温度的影响很小,用于产生固定频率的脉冲送给减法计数器1;高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入.图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数震荡器产生的时钟脉冲计数,进而完成温度测量.计数门的开启时间由高温度系数震荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1,温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值. 减法计数器1所对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置值将被重新装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值.下图中的斜率累加器用于补偿和修正测温过程中的非线形性,其输出用于减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被预测值. 另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要,系统对DS18B20的各种操作必须按协议进行.操作协议为: 初始化DS18B20→发ROM功能命令→发存储器操作命令→处理数据. 图2.1.6DS18B20测温原理图 DS18B20与单片机的接口电路 DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源.另一种是寄生电源供电方式,如下图所示.单片机端口接单线总线,为为保证有效DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉. 图2.1.7DS18B20采用寄生电源的电路图 当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us.采用寄生电源供电方式时Vdd和GND端均接地.由于单线制只有一根线,因此发送接口必须是三态的. 2.1.2控制电路 控制电路主要是由AT89C51组成的。 AT89C51就是将中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器、I/O接口等半导体集成电路芯片集成在一块电路芯片上的微型计算机。 AT89C51具有以下特点: 1.实现了微机电路结构的超小型化。 2.可靠性好。 芯片本身是按工业环境要求设计的,抗干扰性好。 3.易扩展。 片内具有计算机正常运行所必需的部件,芯片外有许多共扩展用的三总线及串、并行输入/输出的引脚。 4.控制功能强。 单片机具有较丰富的指令系统,其逻辑控制功能及运行速度均高于同一档次的微处理器。 5.片内程序存储器为电擦写型ROM整体擦除时间仅为10ms左右。 6.两种可选编程模式,即可以利用12V电压编程,也可以利用Vcc电压编程。 7.全静态工作,工作频率范围: 0~24MHZ,频率范围宽,便于系统功耗控制。 8.三层可编程的程序存储器上锁加密,使程序和系统更加难以仿制。 图2.1.3单片机典型结构图 AT89C51提供以下标准功能: 4k字节Flash闪速存储器、128字节内部RAM、32个I/O口线、两个16位定时/计数器、1个5向量两级中断结构、一个全双工串行通信口、片内振荡器及时钟电路,同时,AT89S51可降至0Hz的静态逻辑操作并支持两种软件可选的节电工作模式;空闲方式停止CPU的工作,但允许RAM、定时/计数器、串行通信口及中断系统继续工作;掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作一直到下个硬件复位[2]。 引脚功能说明: Vcc: 电源电压 GND: 地 P0口: P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口;作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。 在访问外部数据存储器或者程序存储器时,这组口线分时转换地址(低8位)和数据总线复用;在访问期间激活内部上拉电阻。 在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻 P1口: P1是一个带内部上拉电阻的8位双向I/O口;P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。 Flash编程和程序校验期间,P1接收低8位地址 P2口: P2口是一个带有内部上拉电阻的8位双向I/O口;P2的输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。 在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据;在访问8位地址的外部数据存储器(如执行MOVX@RI)时,P2口线上的内容(即特殊功能寄存器(SFR)区中的R2寄存器的内容),在整个访问期间不改变; Flash编程或校验时,P2亦接收高位地址和其它控制信号。 P3口: P3口是一个带有内部上拉电阻的8位双向I/O口;P2的输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。 P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能;如下表1所示: 表1 端口引脚 第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 (外中断0) P3.3 (外中断1) P3.4 T0(定时/计数器0) P3.5 T1(定时/计数器1) P3.6 (外部数据存储器写选通) P3.7 (外部数据存储器读选通) P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 RST: 复位输入;当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位 ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节;即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的;要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作,该位置位后,只有一条MOVX和MOVC指令ALE才会被激活,此外该引脚会被微弱拉高,单片机执行外部程序时,应该置ALE无效。 EA/VPP: 外部访问允许;欲使CPU仅访问外部程学存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。 需要注意的是,如果加密位LB1被编程,复位时内部会锁存EA端的状态[3]。 如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。 Flash存储编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。 XTML1: 振荡器反相放大器的及内部时钟发生器的输入端。 XTML2: 振荡器反相放大器的输出端。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。 该反向放大器可以配置为片内振荡器。 石晶振荡和陶瓷振荡均可采用。 如采用外部时钟源驱动器件,XTAL2应不接。 有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 芯片擦除: 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。 在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。 在闲置模式下,CPU停止工作。 但RAM,定时器,计数器,串口和中断系统仍在工作。 在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 图2.1.4AT89C51单片机引脚 AT89C51单片机芯片由CPU(含运算器、控制器及一些寄存器)、储存器和I/O口组成。 其内部结构如图2.15所示 图2.1.5AT89C51内部逻辑结构图 CPU的功能单元: AT89C51单片机的CPU是一个高性能中央处理器(CPU),它的作用是读入并分析每条指令,根据各指令的功能控制单片机的各功能部件执行指定的操作。 它主要有以下几部分构成: 运算器由算数/逻辑运算单元ALU、累加器ACC、寄存器B、暂存寄存器、程序状态字寄存器PSW组成。 它完成的任务是实现算数和逻辑运算、位变量处理功能。 累加器ACC用于向ALU提供操作数和存放运算的结果。 在运算时将一个操作数经暂存器送至ALU,与另一个来自暂存寄存器的操作数在ALU中进行运算,运算后的结果又送回累加器ACC。 同一般微机相似,AT89C51单片机在结构上也是以累加器ACC为中心,大部分指令的执行都要通过累加器ACC执行。 寄存器B在乘、除运算时用来存放一个操作数,也用来存放运算后的一部分结果。 在进行乘、除运算时,可以作为普通的寄存器使用。 暂存寄存器用来暂时存放数据总线或其它寄存器送来的操作数。 它作为ALU的数据输入源,向ALU提供操作数。 程序状态字寄存器PSW是状态标志寄存器,用来保存ALU运算结果的特征(如: 结果是否为0,是否有溢出等)和处理器状态。 这些特征和状态可以作为控制程序转移的条件,供程序判别和查询。 CY: 进位借位标志。 有进位、借位时CY=1,否则CY=0; AC: 辅助进位、借位标志。 低半字节向上有进位或借位时,AC=1,否则AC=0; FO: 用户标志位,用户自定义; RS1、RS0: 当前工作寄存器组选作位。 00、01、10、11分别对应0组、1组、2组、3组; OV溢出标志位。 有溢出时OV=1,否则OV=0; P: 奇偶标志位。 存于ACC中的运算结果有奇数个“1”时P=1,否则P=0。 控制器: 89C51的控制器由指令寄存器IR、指令译码及控制逻辑电路组成。 指令寄存器IR保存当前正在执行的一条指令。 执行一条指令,先要把它从程序储存器取到指令寄存器中。 指令内容含操作码和地址码,操作码送往指令译码器并形成相应的指令的微操作信号。 地址码送往操作数地址形成电路以便形成实际的操作数地址。 2.2辅助电路 2.2.1晶振电路 AT89C51单片机芯片内部设有一个反向放大器所构成的振荡器,X1和X2分别为振荡电路的输入端和输出端,时钟信号由外部或内部产生,在X1和X2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。 本系统采用的定时元器件为石英晶体和电容组成的并联谐振回路。 晶体振荡频率为12MHz,C1、C2的值为22pF电容的大小可起频率微调的作用。 图2.2.1单片机的晶振电路 2.2.2复位电路 当单片机的复位引脚RST上加上24个时钟周期以上的高电平之后,单片机就会进入复位方式。 当RST引脚上的电位变成低以后,单片机就进入了复位工作方式。 复位方式单片机从程序存储器的地址0000H处开始执行。 单片机复位后内部各个寄存器的初始状态如下表所示。 表2.复位后内部各个寄存器的初始 化状态 特殊功能计数器 初始状态 特殊功能计数器 初始状态 ACC 00H B 00H PSW 00H SP 07H DPH 00H TH0 00H DPL 00H TL0 00H IP xxx0000B TH1 00H IE 0xx0000B TL1 00H TMOD OOH TCON 00H SCON xxxxxxxxB SBUF 00H P0~P3 11111111B PCON 0xxxxxxxB 图2.2.2单片机的复位电路 2.3工作原理 2.3.1主控制器 单片机AT89C51具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很适合便携式产品的设计使用,系统可用二节电池供电。 2.3.2显示电路 显示电路采用4位共阳LED数码管,从P1口输出段码,列扫描用P3.0~P3.3来实现,列驱动用74LS04非门。 2.3.3整体电路图 3软件电路 3.1软件系统的介绍 一个系统的正常运行不仅需要硬件系统的支持,而且需要软件系统的支持。 如果把硬件比作躯体,那软件就是灵魂,硬件系统和软件系统相互间密切的配合才构建了能够“思考”和“判断”的整体系统。 借助软件的可编程性,可以精简硬件系统的组成;凭借软件的灵活性,可以不用对硬件系统进行修改而实现系统功能的修改。 软件系统与硬件系统是密切相联的,软件系统建立在硬件系统之上,离开了硬件系统,软件将无法实现任何功能。 软件的设计有一定的针对性,对于不同的硬件系统,需要编写不同的软件。 与硬件系统一样,软件系统的好坏,直接影响到系统的工作效率和可靠性。 3.2编程语言的选择 基于单片机的交通灯控制这次采用汇编语言编程,它是一种面对机器的语言,可以直接控制硬件的语言。 因为这次还要进行硬件连接,所以可以方便控制各个硬件接口如I/O接口,并且目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 具有保持了机器语言的优点,具有直接和简捷的特点。 就是因为汇编语言的这些特点,所以70%以上的系统软件是用汇编语言编写的。 例如某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。 很多高级绘图程序、视频游戏程序是用汇编语言编写的。 所以汇编语言是我们理解整个计算机系统的最佳起点和最有效途径,通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。 单片机烧录的代码,用来编程单片机。 3.3应用软件的选择——Keilc51 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计1 仅供参考 单片机 课程设计