1、沈阳理工大学课程设计I目录1 设计背景 .11.1课题背景 .11.2设计内容 .12 智能温度计系统简介 .22.1方案选择 .22.2系统设计原理 .32.3系统组成 .43.系统硬件设计 63.1DS18B20温度传感器 63.1.1DS18B20介绍 63.1.2温度传感器工作原理 .63.1.3DS18B20相关介绍 83.1.4DS18B20使用中的注意事项 93.2液晶显示器(1602 液晶显示器) .103.2.1液晶显示器的介绍 103.2.2 1602LCD的特性 113.2.3液晶模块简介 113.2.3液晶显示部分与 89C51的接口 133.3 80C51单片机的介绍
2、 143.3.1 80C51单片机的主要特性 153.3.2 80C51单片机管脚 163.3.3 80C51单片机的中断系统 183.3.4 80C51单片机的定时/计数器 .18单片机课程设计II3.3.5 80C51单片机的最小系统 193.4系统总体电路图 204.软件设计简介 .214.1 C语言简介 214.2 程序设计 .215.电路仿真 .245.1 Proteus软件介绍 7 245.2智能温度计 Ptoteus仿真 25总结 .27参考文献 .28附录:源程序代码 .29沈阳理工大学课程设计11 设计背景温度控制广泛应用于人们的生产和生活中,人们使用温度计来采集温度,通过人
3、工操作加热、通风和降温设备来控制温度,这样不但控制精度低、实时性差,而且操作人员的劳动强度大。即使有些用户采用半导体二极管作温度传感器,但由于其互换性差,效果也不理想。在某些行业中对温度的要求较高,由于工作环境温度不合理而引发的事故时有发生。对工业生产可靠进行造成影响,甚至操作人员的安全。为了避免这些缺点,需要在某些特定的环境里安装数字温度测量及控制设备。本设计由于采用了新型单片机对温度进行测量,以其测量精度高,操作简单。可运行性强,价格低廉等优点,特别适用于生活,医疗,工业生产等方面的温度测量。本设计是一个智能温度测量,能测柜内的温度,并能在超限的情况下进行控制、调整,并报警。1.1 课题背
4、景随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。采用数字温度传感器 DS18B20,因其内部集成了 A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。1.2 设计内容本次课程设计模拟工业现场,对温度进行测量,并实时显示出来,并且可以设定温度的上下限,当温度达到上下限时 系统自动报警。控制系统主控制器采用 51单片机,温度测量采用 DS18B20,设定温度后,当温度达到设定限时,可以通过闪彩灯和响蜂鸣器报警提示,并且实时显示在 1602液晶显示器上。单片机课程设计22 智能温度计系统简介2.
5、1 方案选择该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种在日常生活中和工农业生产中经常用到的实现方案。方案一:采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成,热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有 A/D 通道的单片机,在将随被测温度变化的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作温度范围非常宽,且体积小,但是
6、它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到 A/D 转换电路,感温电路比较麻烦。系统主要包括对 A/D0809 的数据采集,自动手动工作方式检测,温度的显示等,这几项功能的信号通过输入输出电路经单片机处理。此外还有复位电路,晶振电路,启动电路等。故现场输入硬件有手动复位键、A/D 转换芯片,处理芯片为 51 芯片,执行机构有 4 位数码管、报警器等。系统框图如图 2.1 所示。单片机数码管报警电路测温电路晶振电路复位电路A D C 0 8 0 9按键防抖动单片机课程设计3图 2.1 热电偶温差电路测温系统框图方案二:采用数字温度芯片 DS18
7、B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在 0100 摄氏度时,最大线形偏差小于 1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计 DS18B20和微控制器 AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用 51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多 DS18B20控制工作,还可以
8、与 PC 机通信上传数据,另外AT89S51 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用 AT89S51芯片控制温度传感器 DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片 DS1302以获取时间数据,在数据处理同时显示时间,并可以利用 AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过 MAX232芯片与计算机的 RS232接口进行串口通信,方便的采集和整理时间温度数据。从以上两种方案,容易
9、看出方案一的测温装置可测温度范围宽、体积小,但是线性误差较大。方案二的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了方案二。2.2 系统设计原理利用温度传感器 DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过 DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警并且指示灯闪烁。同时处理后的数据送到 LCD中显示。单片机课程设计42.3 系统组成本课题以是 80C51单片机为核心设计的一种智能温度测试系统,系统整体硬件电路包括:传感器数据采集电路,温度显示电路,上下限报警调整电路,单片
10、机主板电路等组成。系统框图主要由主控制器、单片机复位、报警按键设置、时钟振荡、LED 显示、温度传感器组成。系统框图如图 2.2所示。主控制器LED显示温度传感器单片机复位报警按键设置时钟振荡图 2.2 系统基本方框图主控制器单片机 AT89C51 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。显示电路液晶显示器是一种将液晶显示器件,连接器件,集成电路,PCB 线路板, 背光源,结构器件装配在一起的组件。根据显示内容和方式的不同可以分为,数显 LCD,点阵字符 LCD,点阵图形 LCD 在此设计中我们采用点阵字
11、符 LCD,这里采用常用的 2 行 16 个字的 1602液晶模块。温度传感器温度传感器采用美国 DALLAS 半导体公司生产的 DS18B20 温度传感器。DS18B20 输出信号全数字化。便于单片机处理及控制,在 0100 摄氏度时,最大线形偏差小于 1 摄氏度,采用单总线的数据传输,可直接与计算机连接。单片机课程设计5用 AT89S51 芯片控制温度传感器 DS18B20 进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。获得的数据可以通过 MAX232芯片与计算机的 RS232 接口进行串口通信,方便的采集和整理时间温度数据。单片机课程设计63.系统硬
12、件设计3.1DS18B20 温度传感器3.1.1DS18B20 介绍图 3.1 图 3.2 图 3.3DALLAS 最新单线数字温度传感器 DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器 DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为 9位12 位转换精度,测温分辨率可达 0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在 EEPROM 中,掉电后依然保存。被测温度用符号扩展的 16位数字量方式串行输出;其工作电源既可以在远端引入,
13、也可以采用寄生电源方式产生;多个 DS18B20可以并联到 3 根或 2 根线上,CPU 只需一根端口线就能与诸多 DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。图 3.1是 DS18B20的一种封装形式,图 3.2是 DS18B20的一种常用接法。图 3.3是仿真软件的封装形式。3.1.2 温度传感器工作原理DS18B20测温原理:低温度系数晶振的振荡频率受温度影响很小,用于产生固定单片机课程设计7频率的脉冲信号送给计数器 1。高温度系数晶振随温度变化其振荡率明显改变,所
14、产生的信号作为计数器 2的脉冲输入。计数器 1和温度寄存器被预置在55所对应的一个基数值。计数器 1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器 1的预置值减到 0时,温度寄存器的值将加 1,计数器 1的预置将重新被装入,计数器 1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器 2计数到 0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。DS18B20 功能特点:1. 采用单总线技术,与单片机通信只需要一根 I/O线,在一根线上可以挂接多个DS18B20。2. 每只 DS18B20具有一个独有的,不可修改的 64位序列号,根据序列号访问地应的器件。3
15、. 低压供电,电源范围从 35V,可以本地供电,也可以直接从数据线上窃取电源(寄生电源方式) 。4. 测温范围为-55+125,在-1085范围内误差为0.5。5. 可编辑数据为 912位,转换 12位温度时间为 750ms(最大) 。6. 用户可自设定报警上下限温度。7. 报警搜索命令可识别和寻址哪个器件的温度超出预定值。8. DS18B20的分辩率由用户通过 EEPROM设置为 912位。9. DS18B20可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。DS18B20有 4个主要的数据部件:1. 光刻 ROM中的 64位序列号是出厂前被光刻好的,它可以看作是
16、该 DS18B20的地址序列码。64 位光刻 ROM的排列是:开始 8位(28H)是产品类型标号,接着的 48位是该 DS18B20自身的序列号,最后 8位是前面 56位的循环冗余校验码(CRC=X8+X5+X4+1) 。光刻 ROM的作用是使每一个 DS18B20都各不相同,这样就可以实现一根总线上挂接多个 DS18B20的目的。2. DS18B20中的温度传感器可完成对温度的测量,以 12位转化为例:用 16位符号扩展的二进制补码读数形式提供,以 0.0625/LSB 形式表达,其中 S为符号位。3. DS18B20温度传感器的存储器 DS18B20 温度传感器的内部存储器包括一个高速暂存
17、 RAM和一个非易失性的可电擦除的 EEPRAM,后者存放高温度和低温度触发器 单片机课程设计8TH、TL 和结构寄存器。4. 配置寄存器。DS18B20内部结构及功能:DS18B20的内部结构如图 3.4所示。主要包括:寄生电源,温度传感器,64 位 ROM和单总线接口,存放中间数据的高速暂存器 RAM,用于存储用户设定温度上下限值的TH和 TL触发器,存储与控制逻辑,8 位循环冗余校验码(CRC)发生器等 7部分6 4位R O M和单线接口高速缓存存储器与控制逻辑温度传感器低温触发器 T L8 位 C R C 发生器高温触发器 T H配置寄存器V d d图 3.4 DS18B20 内部结构
18、及功能3.1.3DS18B20 相关介绍温度的读取:DS18B20在出厂时以配置为 12位,读取温度时共读取 16位,所以把后 11位的 2进制转化为 10进制后在乘以 0.0625便为所测的温度,还需要判断正负。前 5个数字为符号位,当前 5位为 1时,读取的温度为负数;当前 5位为 0时,读取的温度为正数。(1)DS18B20 的初始化:1. 先将数据线置高电平“1” 。2. 延时(该时间要求的不是很严格,但是尽可能的短一点) 。3. 数据线拉到低电平“0” 。4. 延时 750微秒(该时间的时间范围可以从 480到 960微秒) 。5.数据线拉到高电平“1” 。单片机课程设计96. 延时
19、等待(如果初始化成功则在 15到 60毫秒时间之内产生一个由 DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制7. 若 CPU 读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要 480 微秒。8.将数据线再次拉高到高电平“1”后结束。(2)DS18B20 的写操作:1. 数据线先置低电平“0”。2. 延时确定的时间为 15 微秒。3. 按从低位到高位的顺序发送字节(一次只发送一位) 。4. 延时时间为 45 微秒。5. 将数据线拉到高电平。6. 重复上
20、(1)到(6)的操作直到所有的字节全部发送完为止。7. 最后将数据线拉高。(3)DS18B20 的读操作:1. 将数据线拉高“1”。2. 延时 2 微秒。3. 将数据线拉低“0”。4. 延时 15 微秒。5. 将数据线拉高“1”。6. 延时 15 微秒。7. 读数据线的状态得到 1 个状态位,并进行数据处理。8. 延时 30 微秒。3.1.4DS18B20 使用中的注意事项DS18B20 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:1. DS18B20 从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错
21、误的现象,使温度输出总是显示 85。2. 在实际使用中发现,应使电源电压保持在 5V 左右,若电源电压过低,会使所单片机课程设计10测得的温度精度降低。3. 较小的硬件开销需要相对复杂的软件进行补偿,由于 DS1820 与微处理器间采用串行数据传送,因此,在对 DS1820 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用 PL/M、C 等高级语言进行系统程序设计时,对 DS1820操作部分最好采用汇编语言实现。4. 在 DS18B20 的有关资料中均未提及单总线上所挂 DS18B20 数量问题,容易使人误认为可以挂任意多个 DS18B20,在实际应用中并非如此,当单总线
22、上所挂 DS18B20 超过 8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。5. 在 DS18B20 测温程序设计中,向 DS18B20 发出温度转换命令后,程序总要等待 DS18B20 的返回信号,一旦某个 DS18B20 接触不好或断线,当程序读该 DS18B20 时,将没有返回信号,程序进入死循环,这一点在进行 DS18B20 硬件连接和软件设计时也要给予一定的重视。3.2 液晶显示器(1602 液晶显示器)3.2.1 液晶显示器的介绍显示器是人与机器沟通的重要界面,早期以显像管(CRT/Cathode Ray Tube)显示器为主,但随着科技不断
23、进步,各种显示技术如雨后春笋般诞生,近来由于液晶(LCD)显示器具有轻薄短小、耗电量低、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,在近年来价格不断下跌的吸引下,逐渐取代 CRT 之主流地位,显示器明日之星架势十足。液晶是一种既具有液体的流动性又具有光学特性的有机化合物,它的透明程度和呈现的颜色受外加电场的影响,利用这特点便可做成字符显示器。液晶显示器(LCD) 英文全称为 Liquid Crystal Display,它一种是采用了液晶控制透光度技术来实现色彩的显示器。和 CRT 显示器相比,LCD 的优点是很明显的。由于通过控制是否透光来控制亮和暗,当色彩不变时,液晶也保持不变,这样
24、就无须考虑刷新率的问题。显示接口用来显示系统的状态,命令或采集的电压数据。本系统显示部分用的是LCD 液晶模块,采用一个 162 的字符型液晶显示模块。单片机课程设计111602 液晶也叫 1602 字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个 5X7 或者 5X11 等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形(用自定义 CGRAM,显示效果也不好)1602LCD 是指显示的内容为 16X2,即可以显示两行,每行 16 个字符液晶模块(显示字符和数字)
25、。目前市面上字符液晶绝大多数是基于 HD44780 液晶芯片的,控制原理是完全相同的,因此基于 HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液晶。图 3.5 1602 液晶显示器一种接法3.2.2 1602LCD 的特性(1)+5V 电压,对比度可调(2)内含复位电路(3)提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能(4)有 80 字节显示数据存储器 DDRAM(5)内建有 160 个 5X7 点阵的字型的字符发生器 CGROM(6)8 个可由用户自定义的 5X7 的字符发生器 CGRAM字符型 LCD1602 通常有 14 条引脚线或 16 条引脚
26、线的 LCD,多出来的 2 条线是背光电源线 VCC(15 脚)和地线 GND(16 脚) (图 3.5 是 1602 液晶显示器的一种接法)单片机课程设计123.2.3 液晶模块简介LM016L 的结构及功能:LM016L 液晶模块采用 HD44780 控制器,hd44780 具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L 与单片机 MCU 通讯可采用 8 位或 4 位并行传输两种方式,hd44780 控制器由两个 8 位寄存器,指令寄存器(IR)和数据寄存器(DR )忙标志(BF) ,显示数 RAM(DDRAM) ,字符发生器 ROMA(CGOROM)字符发生器 R
27、AM(CGRAM) ,地址计数器 RAM(AC)。IR 用于寄存指令码,只能写入不能读出,DR 用于寄存数据,数据由内部操作自动写入 DDRAM 和 CGRAM,或者暂存从 DDRAM 和CGRAM 读出的数据,BF 为 1 时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM 用来存储显示的字符,能存储 80 个字符码, CGROM 由 8 位字符码生成5*7 点阵字符 160 中和 5*10 点阵字符 32 种.8 位字符编码和字符的对应关系,可以查看参考文献(30)中的表 4. CGRAM 是为用户编写特殊字符留用的,它的容量仅 64 字节,可以自定义 8 个 5*7 点阵
28、字符或者 4 个 5*10 点阵字符,AC 可以存储 DDRAM 和CGRAM 的地址,如果地址码随指令写入 IR,则 IR 自动把地址码装入 AC,同时选择DDRAM 或 CGRAM 但愿,LM016L 液晶模块的引脚图如图 3.7 所示。图 3.7 1601 引脚图LM016L 引脚介绍:Vss(1 脚):一般接地。Vdd(2 脚):接电源。Vee(3 脚):液晶显示器对比度调整端,接电源时对比度最弱,接地时对比度最高(对比度过高时会产生“鬼影” ,使用时可以通过一个 10K 的电位器调整对比度) 。RS(4 脚):RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄
29、存器。单片机课程设计13R/W(5 脚): R/W 为读写信号线,高电平 (1)时进行读操作,低电平 (0)时进行写操作。E( 6 脚):E(或 EN)端为使能(enable)端,下降沿使能。DB0(7 脚):底 4 位三态、双向数据总线 0 位(最低位)。DB1(8 脚):底 4 位三态、双向数据总线 1 位。DB2(9 脚):底 4 位三态、双向数据总线 2 位。DB3(10 脚):底 4 位三态、双向数据总线 3 位。DB4(11 脚):高 4 位三态、双向数据总线 4 位。DB5(12 脚):高 4 位三态、双向数据总线 5 位。DB6(13 脚):高 4 位三态、双向数据总线 6 位
30、。DB7(14 脚):高 4 位三态、双向数据总线 7 位(最高位)(也是 busy flang)。寄存器选择控制如表 3.8。表 3.8 寄存器选择控制RS R/W 操作说明0 0 写入指令寄存器(清除屏等)0 1 读 busy flag(DB7 ),以及读取位址计数器(DB0DB6)值1 0 写入数据寄存器(显示各字型等)1 1 从数据寄存器读取数据3.2.3 液晶显示部分与 89C51 的接口如图 3.9 所示。用 89C51 的 P0 口作为数据线,用 P2.2、P2.1、P2.0 分别作为 LCD的 E、 R/W、 RS。其中 E 是下降沿触发的片选信号,R/W 是读写信号,RS 是
31、寄存器选择信号本模块设计要点如下:显示模块初始化:首先清屏,再设置接口数据位为 8 位,显示行数为 2 行,字型为 57 点阵,然后设置为整体显示,取消光标和字体闪烁 ,最后设置为正向增量方式且不移位。向 LCD 的显示缓冲区中送字符,程序中采用 2 个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到 LCD 的显示缓冲区,程序延时 2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。单片机课程设计14图 3.9 液晶与 89C51 的接口3.3 80C51 单片机的介绍80C51 单片
32、机最初是由 Intel 公司开发设计的,但后来 Intel 公司把 51 核的设计方案卖给了几家大的电子设计生产商,譬如 SST、Philip、Atmel 等大公司。如是市面上出现了各式各样的但均以 51 为内核的单片机,倒是 Intel 公司自己的单片机却显得逊色了。这些各大电子生产商推出的单片机都兼容 51 指令、并在 51 的基础上扩展一些功能而内部结构是与 51 一致的。80C51 有 40 个引脚,4 个 8 位并行 I/O 口,1 个全双工异步串行口,同时内含 5 个中断源,2 个优先级,2 个 16 位定时/计数器。80C51 的存储器系统由 4K 的程序存储器(掩膜 ROM),
33、和 128B 的数据存储器(RAM)组成。80C51 单片机的基本组成框图见图 3.10。单片机课程设计15时钟电路R O M / E P R O M / F l a s h 4 K BR A M 1 2 8 BS F R 2 1 个定时个 / 计数器 2C P U总线控制中断系统5 个中断源2 个优先级串行口全双工 1 个4 个并行口X T A L 2 X T A L 1R S TE AA L EP S E NP 0 P 1 P 2P 3V s sV c c图 3.10 80C51 单片机结构图由图 3.10 可见,8051 单片机主要由以下几部分组成:cpu 系统:8 位 cpu,含布尔处
34、理器;时钟电路;总线控制逻辑。存储器系统4K 字节的程序存储器(ROM/EPROM/Flash,可外扩至 64KB) ;128 字节的数据存储器(RAM,可再外扩 64KB) ;特殊功能寄存器 SFR。I/O 口和其他功能单元, 4 个并行 I/O 口;2 个 16 位定时计数器:1 个全双工异步串行口;中断系统(5 个中断源,2 个优先级) 。3.3.1 80C51 单片机的主要特性1. 一个 8 位的微处理器(CPU)。2. 片内数据存储器 RAM(128B),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89 系列单片机最多提供 1K 的 RAM。3. 片内
35、程序存储器 ROM(4KB),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带 ROM/EPROM,如 8031,8032,80C31 等。目前单片机的发展趋势是将 RAM 和 ROM 都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。4. 四个 8 位并行 IO 接口 P0P3,每个口既可以用作输入,也可以用作输出。单片机课程设计165. 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的 52 系列单片机都会提供 3 个 16 位定时器/计数器
36、。6. 五个中断源的中断控制系统。现在新推出的单片机都不只 5 个中断源。7. 一个全双工 UART(通用异步接收发送器) 的串行 IO 口,用于实现单片机之间或单机与微机之间的串行通信。8. 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为 12MHz。SST89V58RD 最高允许振荡频率达 40MHz,因而大大的提高了指令的执行速度。3.3.2 80C51 单片机管脚图 3.11 80C51 单片机管脚时钟电路引脚 XTAL1 和 XTAL2:XTAL2(18 脚):接外部晶体和微调电容的一端;在 8051 片内它是振荡电路反相放大器的输出端,振荡电路的频率就是
37、晶体固有频率。若需采用外部时钟电路时,该引单片机课程设计17脚输入外部时钟脉冲。XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。控制信号引脚 RST,ALE,PSEN 和 EA:RST/VPD(9 脚):RST 是复位信号输入端,高电平有效。当此输入端保持备用电源的输入端。当主电源 Vcc 发生故障,降低到低电平规定值时,将5V 电源自动两个机器周期(24 个时钟振荡周期 )的高电平时,就可以完成复位操作。 RST 引脚的第二功能是 VPD,即接入 RST 端,为 RAM 提供备用电源,以保证存储在 RAM 中的信息
38、不丢失,从而合复位后能继续正常运行。ALE/PROG(30 脚):地址锁存允许信号端。当 8051 上电正常工作后,ALE 引脚不断向外输出正脉冲信号,此频率为振荡器频率 fOSC 的 1/6。CPU 访问片外存储器时,ALE 输出信号作为锁存低 8 位地址的控制信号。平时不访问片外存储器时,ALE 端也以振荡频率的 1/6 固定输出正脉冲,因而ALE 信号可以用作对外输出时钟或定时信号。此引脚的第二功能 PROG 在对片内带有 4KB EPROM 的 8751 编程写入( 固化程序)时,作为编程脉冲输入端。PSEN(29 脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉
39、冲作为读片外存储器的选通信号。此引肢接 EPROM 的 OE 端。PSEN 端有效,即允许读出 EPROMROM 中的指令码。EA/Vpp(31 脚 ):外部程序存储器地址允许输入端/固化编程电压输入端。当 EA 引脚接高电平时,CPU 只访问片内 EPROM/ROM 并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过 0FFFH(对 8751/8051 为 4K)时,将自动转去执行片外程序存储器内的程序。当输入信号 EA 引脚接低电平( 接地)时,CPU 只访问外部 EPROM/ROM 并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内 ROM 的 8031 或
40、8032,需外扩 EPROM,此时必须将 EA 引脚接地。此引脚的第二功能是 Vpp 是对 8751 片内 EPROM 固化编程时,作为施加较高编程电压(一般 12V21V)的输入端。输入/输出端口 P0/P1/P2/P3:P0 口(P0.0P0.7,3932 脚):P0 口是一个漏极开路的 8 位准双向 I/O 口。作为漏极开路的输出端口,每位能驱动 8 个 LS 型 TTL 负载。当 P0 口作为输入口使用时,单片机课程设计18应先向口锁存器(地址 80H)写入全 1,此时 P0 口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写 1,这就是准双向口的含义。在 CPU 访问片外存储器
41、时,P0 口分时提供低 8 位地址和 8 位数据的复用总线。在此期间,P0 口内部上拉电阻有效。P1 口(P1.0P1.7,18 脚):P1 口是一个带内部上拉电阻的 8 位准双向 I/O 口。P1 口每位能驱动 4 个 LS 型 TTL 负载。在 P1 口作为输入口使用时,应先向 P1 口锁存地址(90H )写入全 1,此时 P1 口引脚由内部上拉电阻拉成高电平。P2 口(P2.0P2.7 ,2128 脚) :P2 口是一个带内部上拉电阻的 8 位准双向 I/O 口。P1 口每位能驱动 4 个 LS 型 TTL 负载。在访问片外 EPROM/RAM 时,它输出高 8 位地址。P3 口(P3.
42、0P3.7 ,1017 脚) :P3 口是一个带内部上拉电阻的 8 位准双向 I/O 口。P3 口每位能驱动 4 个 LS 型 TTL 负载。P3 口与其它 I/O 端口有很大的区别,它的每个引脚都有第二功能,如下:P3.0: (RXD)串行数据接收。P3.1: (RXD)串行数据发送。P3.2: (INT0#)外部中断 0 输入。P3.3: (INT1#)外部中断 1 输入。P3.4: (T0)定时/计数器 0 的外部计数输入。P3.5: (T1)定时/计数器 1 的外部计数输入。P3.6: (WR#)外部数据存储器写选通。P3.7: (RD#)外部数据存储器读选通。3.3.3 80C51
43、单片机的中断系统80C51 系列单片机的中断系统有 5 个中断源,2 个优先级,可以实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器 IE 控制 CPU 是否响应中断请求;由中断优先级寄存器 IP 安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。3.3.4 80C51 单片机的定时/计数器在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫单片机课程设计19描等;也经常要对外部事件进行计数。80C51 单片机内集成有两个可编程的定时/计数器:T0 和 T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T
44、1 还可以作为串行口的波特率发生器。3.3.5 80C51 单片机的最小系统单片机最小系统是单片机能工作的最基本电路,接好最小系统对于做实物来说极其重要。如图 3.123.12 单片机及其最小系统单片机最小系统如图所示,主要由以下六部分组成(1)AT89S52 单片机:(2)I/O 口:其中有 4 个双向的 8 位并行 I/O 端口,分别记作 P0、P1、P2、P3,都可以用于数据的输出和输入,其中有些 I/O 口具有第二功能。(3)时钟电路:时钟电路用于产生 MCS-52 单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。单片机课程设计20(4)复位电路:MC
45、S-51 的复位是由外部的复位电路来实现。采用最简单的外部按键复位电路。按键自动复位是通过外部复位电路的来实现的.(5)EA 脚:把 EA 脚接高电平,单片机访问片内程序存储器。(6)单片机的第 20 和 40 引脚为单片机的 GND 和 VCC,为单片机供电,必须接好3.4 系统总体电路图总体电路图如仿真图 3.13 所示。温度传感器连接在 P3.3 口。K2 为显示报警温度键,连接 P1.4 口。K1 为正常显示温度,连接 P1.7 口。按下 K1 则显示器显示当前温度,按下 K2 则会显示所设定的温度上下限值。 P2.3 和 P2.6 分别为高温和低温闪烁,当所测得的结果高于或者低于所设
46、置的温度上下限时就会闪烁报警,同时连接于 P3.7 的蜂鸣器就会报警。图 3.13 总体电路图单片机课程设计21单片机课程设计224.软件设计简介4.1C 语言简介C 语言是嵌入式系统中一种通用语言,其数据类型及运算符丰富,代码率高,较好的移植性及丰富的功能函数,并具有良好的程序结构,适用于各种应用的程序设计,是目前嵌入式系统中使用较广泛的编程语言。嵌入式系统中的使用的 C 语言和 ANSI 标准的 C 语言比较,其语法规则是相同的,但由于它控制嵌入式应用系统硬件,而不同的嵌入式系统核心控制部件是不同的,因此,不同的嵌入式系统的 C 语言采用不同的C 编译器。51 单片机的语言采用 51 编译
47、器。由 C51 产生的目标代码短并且运行速度快,所需空间小,符合 C 语言的 ANSI 标准,生成的代码遵循 INTEL 目标文件格式。应用 C51 编程具有以下优点:C51 管理内部寄存器和存储器的分配,编程时,无须考虑不同存储器的寻址和数据类型等细节问题;程序由若干函数组成,具有良好的模块化结构;有丰富的子程序库可直接引用,从而大大减少用户编程的工作量;C 语言和汇编语言可以交叉使用,汇编语言程序代码短,运行速度快,但复杂编程耗时。如果用汇编语言编写与硬件有关的部分程序,用 C 语言编写与硬件无关的运算部分程序,就可以充分发挥两种语言的特长,可以提高开发效率。编写好的 C 语言程序编译成功
48、后,生成 HEX 文件,通过 ISP 下载到单片机即可运行4.2 程序设计整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执单片机课程设计23行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的
49、要求,合理地安排监控软件和各执行模块之间地调度关系。主程序流程:初始化调用 LCD 初始化子程序调用设置温度报警值程序调用读取温度子程序延时K1,K2有无按下K1 按下K2按下读取温度值 读取温度值判断是否超温并报警jing警调用显示当前温度子程序调用显示报警上下限子程序图 4.1 主程序流程图DS18B20 初始化流程图:单片机课程设计24C 5 1 寄 存 器 初 始化温 度 转 换 命 令1 8 B 2 0 存 在 ?读 取 温 度温 度 数 据 处 理温 度 显 示报 警温 度 比 较超 出 范 围 ?开 始YNYN图 4.2 DS18B20 初始化流程图单片机课程设计255.电路仿真5.1 Proteus 软件介绍 7Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件(该软件中国总代理为广州风标电子技术有限公司) 。它不仅具有其它 EDA 工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus 是世界上著名的 EDA 工具( 仿真软件),从原理图布