单片机课程设计

  • 格式:doc
  • 大小:200.00 KB
  • 文档页数:10

一、实验题目:数字电压表的设计二、实验目的深入了解MCS—51系列单片机的功能以及应用,学会用单片机制作简单的仪表。

三、设计要求模块进行组合,设计数字电压表,将每一个部分工作原理介绍清楚,系统软件设计时针,对每一个模块的设计应明确。

主程序应明确各部分的组成及采用的连接方式。

通过调节输入信号的大小,观察自己设计的数字电压表的输出与另一块数字电压表测量的输出比较,达到了解、理解数字电压表设计的步骤、方法的目的(0-5V,LED输出)。

四、数字电压表设计的总体方案通过一个A/D(ADC0809模拟数字转换)芯片采集后将外测电压信号转换为数字信号,再由单片机(AT89S52)处理信号,输出信号,由数码管显示各路电压。

更改程序使能用按键进行复位、通道选择、单路循环选择;并在超过设定报警电压(4.7V)时以LED灯发光报警。

4.1单片机部分芯片介绍单片机采用AT89S52,它是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。

单片机基础电路如下:图1 单片机部分功能特性概述:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

引脚功能:·VCC:电源电压·GND:地·P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。

作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对断口P0写“1”时,可作为高阻抗输入端使用。

在访问外部数据存储器或程序存储器时,这组端口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

·P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(In)。

与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。

第二功能:P1.0:T2(定时/计数器2外部计数脉冲输入),时钟输出P1.1:T2EX(定时/计数2捕获/重新载触发和方向控制)·P2口:P2是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。

在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。

·P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。

此时,被外部拉低的P3口将用上拉电阻输出电流。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能端口引脚第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)·RST:复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电 平将使单片机复位。

·ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时或用于定时目的。

要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。

该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

·PSEN:程序存储允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。

在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

·EA/VPP:外部访问允许。

欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。

需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。

·XTAL1:振荡器反相放大器的内部时钟发生器的输入端。

·XTAL2:振荡器反相放大器的输出端。

4.2、AD采样方案采用8位AD转换器ADC0809,编程简单方便,价格便宜。

采样电路如图2。

图2 ADC0809采样电路ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

1 产生AD 变换器的控制信号:ADC0809 是CMOS 的8 位A/D 转换器,片内有8 路模拟开关,可控制8 个模拟量中的一个进入转换器中。

ADC0809 的分辨率为8 位,转换时间约100us,含锁存控制的8 路多路开关,输出有三态缓冲器控制,单5V 电源供电。

主要控制信号说明:START 是转换启动信号,高电平有效;ALE 是3 位通道选择地址(ADDC、ADDB、ADDA)信号的锁存信号。

当模拟量送至某一输入端(如IN1 或IN2 等),由3 位地址信号选择,而地址信号由ALE 锁存;EOC 是转换情况状态信号,当启动转换约100us 后,EOC 产生一个负脉冲,以示转换结束;在EOC 的上升沿后,若使输出使能信号OE 为高电平,则控制打开三态缓冲器,把转换好的8 位数据结果输出至数据总线。

至此ADC0809 的一次转换结束了。

对于ADC0809 芯片的其他介绍请参阅其数据手册。

芯片ADC0809 的控制时序图。

在实验仪器中CS 与WR 相与后接在了ALE 和START 端,CS 与RD 相与后接在了OE 端,通过对时序和电路的综合考虑,建议使用如下的AD 控制时序。

由图可知,当CS 和WR 同时为高电平时,ADC0809 开始转换,当转换完成后,在INT 脚输出高电平,等待读数据;当CS 和RD 同时为高电平时,通过数据总D[70]从ADC0809 读出数据。

从图我们可将整个控制气分成4 个步骤状态:S0、S1、S2、S3,各状态的动作方式如下:状态S0:CS=1、WR=1、RD=0(由控制器发出信号要求ADC0809 开始进行模/数信号的转换)。

状态S1:CS=0、WR=0、RD=0 (ADC0809 进行转换动作,转换完毕后INT将低电位升至高电位)。

状态S2:CS=1、WR=0、RD=1(由控制器发出信号以读取ADC0809 的转换资料)。

状态S3:CS=0、WR=0、RD=0(由控制器读取数据总线上的数字转换资料)。

由上述的四个状态可以归纳出整个控制器的动作功能有:负责在每个步骤送出所需的CS、WR、RD 控制信号。

在状态S1 时,监控INT 信号是否由低变高,如此以便了解转换动作结束与否。

在状态S3,读取转换的数字资料。

2.编码转换电路:计算转换后的数字电压信号与BCD 码的对应关系:对8 位的ADC0809 而言,它的输出准位共有28 =256 种,即它的分辨率是1/256,假设输入信号为0~5V 电压范围,参考电压(Vref/2)为2.56V 时,则它最小输出电压是5V/256=0.01953V,这代表ADC0 809 所能转换的最小电压值,我们在该实验中取最小电压准位为0.02V。

当ADC0809 收到的信号是01110110(76H),则其对应的电压值为:76H×0.02V = 2.36V要实现电压值与BCD 码的对应关系用多种方法(如查表法、比较法等)。

查表法需要写大量的数据,比较麻烦,在示例程序中作者使用了比较法。

3.输出7 段数码管显示电路:该电路的功能是将转换好的BCD 码显示在3 位数码管上,在最高为的数码管上要显示小数点。

这个电路在前面的实验中多次用到,此处不再叙述。

4 用并行ADC0809 实现电压表。

NINTR,NRD,NCS,NWR,DIN[7..0]分别接并行ADC0809 模块中的相应接口。

SEL[1..0]和SEG[6..0]分别接7 段数码管的扫描端SEL[1..0]和g~a,DP 接小数点输入端DP,ADC0809 的时钟输入端接625KHz,建议CLKG 接8KHZ 左右时钟,CLK接高于16HZ 时钟。

VREF-接地;VREF+接+5V;A0,A1,A2 接拨码开关;A0,A1,A2 八种状态分别对应IN[0..7],手动DCTUNER 控制DCOUT 输出,DCOUT 接A0,A1,A2 八种状态中的一种。