单片机课程设计报告
题 目 基于ADC0809的数字电压检测显示系统
院 系
专 业 电气工程及其自动化 学生姓名 班 级 学 号 指导教师
二O一五 年 一 月 十 日
1 系统功能描述
本装置利用STC89C52型单片机,ADC0809芯片,35定时器芯片,以及数码管作为主要元件。本装置课用于检测0-5V电压,通过ADC对输入的电压模拟量进行转换成数字量,输出给单片机,单片机在进行运算,并输出给数码管,在数码管上显示此时外部输入的电压。
35定时器电压调节ADC0809单片机数码管 2硬件电路连接图及ADC芯片介绍
本
装
置
的
电
路
原
理
图
为
:
图1、电压检测显示接线图
该电路通过ADC0809芯片(注:由于proteus7.5版本中无ADC0809芯片模型,故电路图设计中用ADC0808替代,两款芯片引脚功能相同)采样输入口IN7输入的0~5 V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道OUT0~OUT7传送给STC89C52芯片(仿真使用AT89C51芯片,两款芯片引脚功能近似相同)的P2口。AT89C51负责把接收到的数字量经过数据处理,并通过其P1口传送给数码管显示,启动A/D转换的脉冲信号由555芯片硬件电路产生(见图2)。
AT89C51还控制着ADC0809的工作。其P3.0口控制ADC0809的地址启动端(START);P3.1口控制ADC0809的锁存端(ALE);P3.2口控制ADC0809的转换结束信号(EOC);P3.6口控制ADC0809的输出允许端(OE);见ADC0809的接线图(图3)
图2 555芯片硬件电路 图3 ADC0809的接线图
图4 AT89C51的接线图及显示模块
ADC0809芯片介绍
(1) 8位逐位逼近式A/D转换器
分辨率为1/ 28 ≈
模拟电压转换范围是 0 - +5 V(对应A/D转换值为00—FFH。 标准转换时间为100 采用28脚双立直插式封装 (2) ADC0809是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。 引脚功能(外部特性)
ADC0808芯片有28条引脚,采用双列直插式封装,如下图5所示。各引脚功能如下: 1~5和26~28(IN0~IN7):8路模拟量输入端,输入端可以根据使用情况决定连接使用几个输入,实际中并不需要完全使用。
8、14、15和17~21:8位数字量输出端。输出端要注意使用连接的顺
序,避免输出的信号时序有误。 图5 ADC0809引脚图(右图)
22(ALE):地址锁存允许信号,输入,高电平有效。 6(START): A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 7(EOC): A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 9(OE):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。 12(VREF(+))和16(VREF(-)):参考电压输入端。 11(Vcc):主电源输入端。 13(GND):主电源接地。
23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路,在本次实验中可以全部接VCC,即全部置高。 ADC0809的时序图如图6所示:
图6 ADC时序图
3程序流程图及C程序
由时序图可知,在转换期间,EOC处于低电平,因此在AD转换开始前EOC置为低电平,START在上升沿期间将芯片内的所有寄存器清零,在下降沿来临时开始转换,但是START为低时,EOC仍然有一段时间为高电平,此时添加一个很小的延时,再判断EOC是否变高,变高后转换结束,此时输出转换数据,数码管显示数据采用中断函数,即每0.1ms进一次中断,刷新显示数码管。
程序流程图:
C程序:
#include
sbit ST = P3^0; sbit ALE = P3^1; sbit EOC = P3^2; sbit OE = P3^6;
#define uchar unsigned char #define uint unsigned int uchar code table1[]={ 0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87, 0xff,0xef,0xf7,0xfc, 0xb9,0xde,0xf9,0xf1}; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f};
//对数码管第一位带小数点的段选
即显示电压的个位
//对数码管第二位不带小数点的段选 即电压的小数位
void delay(uint xms) {
uint i,j; for(i=xms;i>0;i--) for(j=112;j>0;j--); }
//进行1ms 延时的函数
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库单片机课程设计报告 - 图文在线全文阅读。
相关推荐: