单片机应用课程设计报告Word文档格式.docx
《单片机应用课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机应用课程设计报告Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
1000写/擦循环;
4.数据保留时间:
10年;
5.全静态工作:
0Hz-24MHz;
6.三级程序存储器锁定;
7.具有128×
8位内部RAM;
8.含有32可编程I/O线;
9.两个16位定时器/计数器;
10.具有5个中断源;
11.可编程串行通道;
12.低功耗的闲置和掉电模式;
13.片内振荡器和时钟电路;
3.2.2管脚说明
AT89C51提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
AT89C51管脚说明如图3-8所示。
图3-8AT89C51芯片
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写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”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3口管脚备选功能;
P3.0RXD(串行输入口);
P3.1TXD(串行输出口);
P3.2/INT0(外部中断0);
P3.3/INT1(外部中断1);
P3.4T0(计时器0外部输入);
P3.5T1(计时器1外部输入);
P3.6/WR(外部数据存储器写选通);
P3.7/RD(外部数据存储器读选通);
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.2.3振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
3.2.4复位方式
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
51系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。
单片机系统的复位方式有两种:
手动按钮复位和上电复位。
3.2.5手动按钮复位
手动按钮复位需要人为在复位输入端RST上加入高电平。
一般采用的办法是在RST端和正电源VCC之间接一个按钮。
当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。
手动按钮复位的电路(如图3-9)所示。
由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
图3-9手动按钮复位
3.2.6上电复位
AT89C51的上电复位电路如图3-10所示,只要在RST复位输入引脚上接一电容至VCC端,下接一个电阻到地即可。
对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至10uF。
上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着VCC对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。
为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。
上电时,VCC的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;
晶振频率为1MHz,起振时间则为10ms。
在图3-10的复位电路中,当VCC掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。
另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“1”态。
如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。
图3-10上电复位
3.2.7单片机的晶振电路
单片机的时钟电路产生方法有两种。
内部时钟方式和外部时钟方式。
本次设计采用的是内部时钟方式,利用芯片内部的振荡电路,在XTAL1,XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。
此次采用最常见的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。
振荡晶体可在1.2MKZ到12MHZ之间选择。
电容值无严格要求,单电容取值对振荡频率输出的稳定性,大小,振荡电路起振速度有少许影响,C1,C2可在20pF到100pF之间取值,但在60pF到70pF时振荡起有较高的频率稳定性。
如图3-11所示。
图3-11内部时钟方式
如果采用外部时钟源驱动器件,XTAL2应不接。
输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
如图3-12所示。
图3-12外部时钟
3.3温度传感器的选择
本次设计采用DS18B20温度传感器
3.3.1DS18B20的特点
本设计的测温系统采用芯片DS18B20,DS18B20是DALLAS公司的最新单线数字温度传感器,它的体积更小,适用电压更宽,更经济。
3.3.2实现方法简介
采用外接电源方式工作,一线测温一线与STC89C51连接,测出的数据放在寄存器中,将数据经过BCD码转换后送到LED显示。
温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,配置寄存器。
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余检验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
64位的光刻ROM又包括5个ROM的功能命令:
读ROM,匹配ROM,跳跃ROM,查找ROM和报警查找。
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
表1ROM指令表
指令
约定代码
功能
读ROM
33H
读DS18B20温度传感器ROM中的编码(即64位地址)
符合ROM
55H
发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20使之作出响应,为下一步对该DS18B20的读写作准备
搜索ROM
0F0H
用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址。
为操作各器件作好准备
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作
告警搜索命令
0ECH
执行后只有温度超过设定值上限或下限的片子才做出响应
表2RAM指令表
温度转换
44H
启动DS18b20进行温度转换,12位转换时间最长为750ms(9位为93.75ms),结果存入内部9字节RAM中
读暂存器
0BEH
读内部RAM中9字节的内容
写暂存器
4EH
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送三字节的数据,三字节的数据分别被存到暂存器的第3、4、5字节
复制暂存器
48H
将RAM中第3、4、5字节的内容复制到E2PROM中
重调E2PR0M
0B8H
将E2PROM中内容恢复到RAM中的第3、4、5字节
读供电方式
0B4H
读DS18B20的供电模式。
寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”
(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
表3DS18B20温度值格式表
这是12位转化后得到的12位数据,存储在DS18B20的两个8bit的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;
如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FE6FH,-55℃的数字输出为FC90H。
表4DS18B20温度数据表
(3)DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2PRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
存储器能完整的确定一线端口的通讯,数据开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来确认这些数据。
当确认以后就可以用复制寄存器的命令来将这些数据转移到可电擦除RAM中。
当修改过寄存器中的数据时,这个过程能确保数据的完整性。
暂存存储器由9个字节组成,其分配如表5所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第1和第2个字节。
CPU可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表3所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;
当S=1时,先将补码变为原码,再计算十进制值。
第3和第4个字节是复制TH和TL,同时第3和第4个字节的数据可以更新;
第5个字节是复制配置寄存器,同时第5个字节的数据可以更新;
6、7、8三个字节是计算机自身使用。
第9个字节是冗余检验字节。
表5DS18B20暂存寄存器分布
寄存器内容
字节地址
温度值低位(LSByte)
1
温度值高位(MSByte)
2
高温限值(TH)
3
低温限值(TL)
4
配置寄存器
5
保留
6
7
8
CRC校验值
9
(4)配置寄存器该字节各位的意义如下:
表6配置寄存器结构
低五位一直都是"
1"
,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示(DS18B20出厂时被设置为12位)。
表7温度分辨率设置表
3.3.3DS18B20外部电源的连接方式
DS18B20可以使用外部电源VDD,也可以使用内部的寄生电源。
当VDD端口接3.0V~5.5V的电压时是使用外部电源;
当VDD端口接地时使用了内部的寄生电源。
无论是内部寄生电源还是外部供电,I/O口线都要接4.7KΩ的上拉电阻。
DS18B20的外部电源供电方式在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。
注意:
在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。
图4外部电源连接
3.3.4DS18B20温度处理过程
1、配置寄存器
配置寄存器是配置不同的位数来确定温度和数字的转化。
2、温度的读取
DS18B20在出厂时已配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后再乘以0.0625便为所测的温度,还需要判断正负。
前5个数字为符号位,当前5位全为1时,读取的温度为负数;
当前5位全为0时,读取的温度为正数。
16位数字摆放是从低位到高位。
3、DS18B20控制方法
DS18B20有六条控制命令(RAM):
见表2。
4、DS18B20的初始化
(1)总线主机发送一复位脉冲(最短为480us的低电平信号)
(2)总线主机释放总线,并进入接收方式
(3)单线总线经过5K的上拉电阻被拉至高电平状态
(4)DS18B20在I/O引脚上检测到上升沿之后,等待15-60us,接着发送存在脉冲(60us-240us的低电平信号)
初始化时序
5、向DS18B20发送控制命令
先通过总线向DS18B20发送ROM指令,对ROM进行操作;
之后,发送ROM指令,来启动传感器或进行其它RAM操作,以完成对温度数据的转换。
3.3.5DS18B20的读写操作方法:
总线控制器在写时间隙向DS18B20写数据,在读时间隙从DS18B20读数据;
在每个时间隙有一位的数据通过单总线被传输。
写时间隙的产生过程:
写时间隙的产生从总线控制器把单总线拉低开始。
Write0和write1时间隙间隔要大于1us。
1、产生write1时间隙:
当总线控制器把单总线拉到低电平后,必须在15us内释放单总线,单总线被释放后5K的上拉电阻会把单总线拉到高电平。
2、产生write0时间隙:
当总线控制器把单总线拉到电平后,总线控制器在write0时间隙内必须继续保持低电平,最少60us。
在总线控制器发出写时间隙后15—60us,DS18B20会采样单总线上的数据。
如果在采样窗口期单总线为高电平,则视为向DS18B20写入“1”;
如果在采样窗口期单总线为低电平,则视为向DS18B20写入“0”。
读时间隙的产生:
一个读时间隙的产生是通过控制器把单总线拉到低电平,并保持至少1us,之后释放总线产生的。
当控制器发出读时间隙后,DS18B20将开始传输数据“1”或“0”到总线上。
DS18B20通过把总线置于高电平传输“1”,通过把总线置于低电平传输“0”。
当传输“0”时,DS18B20将在读时间隙结束时释放总线,总线将会被上拉电阻拉回高电平闲置状态。
DS18B20的输出数据在发出读时间隙后的15us内有效,因此:
在读时间隙发出后,控制器必须释放总线并在15us内采样总线的电平状态。
3.4数码管
LED即发光二极管,英文全称为LightEmittingDiode。
单独的发光二极管便是一个最简单的LED,通过控制其的亮灭来作为信号指示,一般用于电源指示灯、工作状态指示等。
单个的发光二极管使用比较简单。
LED数码管是由若干个发光二极管组成的显示字段的显示器件,一般简称为数码管。
当数码管中的某个发光二极管导通的时候,相应的一个字段便发光,不导通的则不发光。
LED数码管可以根据控制不同组合的二极管导通,来显示各种数据和字符。
单片机应用系统中使用最多的是7段LED,其可以显示十进制数字以及一些英文字符。
7段LED显示模块可以分为共阴极和共阳极两种,下面分别进行介绍。
7段共阳极LED数码管是由7个条形发光二极管和一个小数点位构成,其引脚配置,如图所示,其内部结构,如图所示。
从图中可以看出,其中7个发光二极管构成字形“8”,可以用来显示数字,另一个发光二极管构成小数点。
因此,这种数码管有时也被称为8段LED数码管显示器。
共阴极7段LED数码管和共阳极LED数码管结构类似,其引脚配置,如图所示。
从图中可以看出7段LED数码管同样由8个发光二极管组成,其中7个发光二极管构成字形“8”,另一个发光二极管构成小数点。
共阴极7段LED数码管的内部结构,如图所示。
其中所有发光二极管的阴极为公共端,接GND。
如果发光二极管的阳极极为高电平的时候,发光二极管导通,该字段发光;
反之,如果发光二极管的阳极为低电平的时候,发光二极管截止,该字段不发光。
共阳极:
位选为高电平(即1)选中数码管,
各段选为低电平(即0接地时)选中各数码段,
由0到f的编码为:
uchar
code
table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
共阴极:
位选为低电平(即0)选中数码管,
各段选为高电平(即1接+5V时)选中各数码段,
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
3.4.1LED数码显示方式及电路
1)静态显示方式
LED显示器工作方式有两种:
静态显示方式和动态显示方式。
静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。
当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
这种方法的优点是占用CPU时间少,显示便于监测和控制。
缺点是硬件电路比较复杂,成本较高。
两位共阴数码管静态显示电路图
2)动态显示方式
本次设计选用的是动态显示的方法
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。
调整电流和时间参数,可实现亮度较高较稳定的显示。
动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
若显示器的数目不大于8位,则控制显示器公共极电位只需8位口(称为位选口),控制各位显示器所显示的字形也需一个8位口(成为段选口)。
动态显示电路
3.5报警电路
蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电