测控电路大作业(Proteus,ADC0809)

合集下载

AD0809实现的数字电压表

AD0809实现的数字电压表

AD0809实现的数字电压表利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量0-5V 之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。

1、AD0809 的逻辑结构ADC0809 是 8 位逐次逼近型 A/D 转换器。

它由一个 8 路模拟开关、一个地址锁存译码器、一个 A/D 转换器和一个三态输出锁存器组成(见图 1)。

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

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

2、AD0809 的工作原理IN0-IN7:8 条模拟量输入通道。

ADC0809 对输入模拟量要求:信号单极性,电压范围是 0-5V ,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,IN7IN0ADDA ADDB ADDC ALEVREF+ VREF- OEADC0809功能方框图则需在输入前增加采样保持电路。

地址输入和控制线:4 条ALE 为地址锁存允许输入线,高电平有效。

当ALE线为高电平时,地址锁存与译码器将A,B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。

A,B 和C 为地址输入线,用于选通IN0-IN7上的一路模拟量输入。

通道选择ST:为转换启动信号。

当ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST 应保持低电平。

EOC:为转换结束信号。

当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换。

OE:为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。

OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。

D7-D0:数字量输出线。

CLK 为时钟输入信号线。

因ADC0809 的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,V REF(+),V REF(-)为参考电压输入。

8位数模转换器ADC0809实验报告

8位数模转换器ADC0809实验报告
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚 备选功能
P3.0 RXD(串行输入口)
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
EOC: A/D转换结束信号,输出端,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入端,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHz。
REF(+)、REF(-):基准电压。
proteus原理图系统硬件调试中出现的问题及解决措施数码管显示的数字出现问题系统软件31软件设计首先我们需要在电脑上安装keil软件安装好后双击它的快捷方式打开这个软件这时候就需要我们点击窗口上面的project然后点击newuvisionproject新建一个工程文件在里面需要我们选择芯片51单片机我们是选择的atmel里面的at89c51我们新建一个空白文档这个是点file下面那个按钮text中编写自己的程序我们需要把51单片机的头文件添加上去是点project的sourcegroup里面的addfiles这个需要我们生成hex文件这样才能放到protues软件中仿真我们能够去点它的错误提示找到错误语句的位置32软件调试中出现的问题及解决措施编完程序后发现程序中有逻辑错误keil软件的使用学会teamwork团队合usb通讯线ad转换模块编码几个过程后转换为数字格式a取样与保持一般取样与保持过程是同时完成的取样保持电路的原理图如图16所示入放大器a1输出放大器a2保持电容ch和电子开关由于av1当开关s断开时由于a2输入阻抗较大而且开关理想可认为ch没有放电回路取样保持电路取样保持以均匀间隔对模拟信号进行抽样而且在每个抽样运算后在足够的时间内保持抽样值恒定b量化与编码量化的方法量化单位取值越小将量化后的结果用二进制码表示叫做编码led显示模块共阳极选中数码管各段选为低电平ucharcodetable0xc00xf90xa40xb00x990x920x820xf80x800x900x880x830xc60xa10x860x8e选中数码管各段选为高电平选中各数码段ucharcodetable0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x71led数码管有共阴和共阳之分一般在用到多片led数码管的时候都会提到计算机计算机一台而且安装了proteus和keil软件工具等万用表一个用proteus仿真软件画出实验电路图用keil开发软件编写c语言程序实验原理模数转换原理我们选用adc0809作为模数转换的芯片其为逐次逼近式ad转换式芯得到adc0809的时钟频率10khz1200khz我们选择典型值640khz资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除

测控电路大作业(Proteus-ADC0809)

测控电路大作业(Proteus-ADC0809)

测控电路大作业说明书专业:学号:姓名:设计要求:利用传感器输出电压(0~5mv),放大电路,滤波电路,ADC电路,单片机,LED 显示压力值(电压值)课题的具体要求如下:1、方案总体设计与论证2、系统硬件电路设计:简易数字电压表测量电路由A/D转换、数据处理及显示控制等组成,A/D转换由集成电路0808完成,显示采用四位数码管3、系统流程图设计,汇编程序编写:包括初始化程序、主程序、显示子程序、模/数转换测量子程序等4、调试及性能分析:采用KELL编译器进行源程序编译及仿真测试,同时进行硬件电路的设计制作,在Proteus软件里进行硬件仿真,最后进行端口电压的对比测试设计思路根据设计要求,选择AT89C52单片机作为核心控制器件。

A/D转换采用ADC0808实现。

与单片机的接口为P0和P3端口。

电压显示采用4位一体的LED数码管LED数码管的段码输入,由并行端口P1产生;位码输入,由并行端口P2低四位产生5' ADC0809对模拟量输入信号进行转换,通过判断EOC(引脚)来确定转换是否完成,若EOC为0,则继续等待;若EOC为1,则把OE置位,将转换完成的数据存储到P1中电路图:程序如下:#include<>unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char dispbuf[4];unsigned int i;unsigned int j;unsigned char getdata;unsigned int temp;unsigned int temp1;unsigned char count;unsigned char d;sbit ST=P3^0;sbit OE=P3^1;sbit EOC=P3^2;sbit CLK=P3^3;sbit P34=P3^4;sbit P35=P3^5;sbit P36=P3^6;sbit P20=P2^0;sbit P21=P2^1;sbit P22=P2^2;sbit P23=P2^3;sbit P17=P1^7;void TimeInitial();void Delay(unsigned int i);void TimeInitial(){ TMOD=0x10;TH1=(65536-200)/256; TL1=(65536-200)%256; EA=1;ET1=1;TR1=1;}void Delay(unsigned int i) {unsigned int j;for(;i>0;i--)for(j=0;j<125;j++);}void Display(){P1=dispbitcode[dispbuf[3]];P20=0;P21=1; P22=1; P23=1; Delay(10); P1=0x00;P1=dispbitcode[dispbuf[2]]; P17=1;P20=1; P21=0; P22=1; P23=1; Delay(10); P1=0x00;P1=dispbitcode[dispbuf[1]]; P20=1;P21=1;P22=0; P23=1; Delay(10); P1=0x00;P1=dispbitcode[dispbuf[0]]; P20=1;P21=1;P22=1;P23=0; Delay(10); P1=0x00;}void main(){TimeInitial();while(1){P34=0;P35=0;P36=0;ST=0;while(EOC==1);//查询转换结束{OE=1;getdata=P0;OE=0;temp=getdata*255*500;dispbuf[0]=temp%10;dispbuf[1]=temp/10%10;dispbuf[2]=temp/100%10;dispbuf[3]=temp/1000;Display();ST=0;OE=0;ST=1;}}}void t1(void) interrupt 3 using 0{TH1=(65536-200)/256;TL1=(65536-200)%256;CLK=~CLK;}6 系统仿真及调试首先采用Keil uVision3编译器进行源程序编译及仿真调试,调试好程序后将目标文件导入Proteus进行软件调试。

最简单的用单片机+ADC0808 protues仿真数字电压表(原创)

最简单的用单片机+ADC0808 protues仿真数字电压表(原创)

在学习单片机AT89S52十天后,老师发给我们的那个板子就基本不够用了,所以数字电压表就只能用protues仿真了,而且之前我在网上找了很多别人做的数字电压表实例,总感觉程序比较复杂,就尝试着自己做了下,没想到很简单的思路竟然就做出来了,当然里面还有很多不足,精度也不是很高,但是做出来的时候自己真的非常高兴!下面给出我写的C程序和仿真图,不足的地方希望可帮我修改下。

可以说这个程序是非常简单的了,没有像其他人一样用中断啊,用字符串移动啊,用ABS 地址头文件啊都没有,所以很适合新人理解吧。

我就只想一个问题,把收到的2进制数字量改成10进制就行了,仅此而已。

#include <reg52.h>#include <math.h>#define unit unsigned int#define uchar unsigned charsbit ST=P3^0;sbit OE=P3^1;sbit EOC=P3^2;sbit led1=P2^0;sbit led2=P2^1;sbit led3=P2^2;sbit led4=P2^3;uchar ad_data;uchar data dis[5]={0x00,0x00,0x00,0x00,0x00};uchar code led_segment[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};void data_pro();void delay (k);void display();void main(void) //主程序{ad_data=0; //采样值存储单元初始化为0while(1){ST=0;ST=1;ST=0;while(EOC==0)OE=1;ad_data=P0;data_pro();display();}}void Delay(int count) //*定义延时子函数,利用循环来延时{int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}void display(void) //LED显示子程序{P1=led_segment[dis[2]]; //驱动方法led1=0; //开第一个数码管delay(1); //动态显示方法进行一个很小的延时led1=1; //关第一个数码管这样进行动态显示P1=led_segment[dis[1]];led2=0;delay(1);led2=1;P1=led_segment[dis[0]];led3=0;delay(1);led3=1;}void data_pro(void) //数据处理子程序{dis[2]=ad_data/51; //取整dis[4]=ad_data%51; //取余dis[4]=dis[4]*10;dis[1]=dis[4]/51; //取第一位小数dis[4]=dis[4]%51;dis[4]=dis[4]*10;dis[0]=dis[4]/51; //取第二位小数//取整为什么要/51呢?因为接进来的是一个256内的数//前面可知模拟电压范围为0-5V,所以最小分辨率为5/256=1/51 // 这样就可以将8位二进制数转化为0.00~5.00内的十进制小数了!}设计缺陷:1.精度不高,在2-5V之间精度才能达到98.2%左右。

EDA实验报告4_ADC采样控制电路

EDA实验报告4_ADC采样控制电路
实验内容
1.利用QuartusⅡ,在书本例7-2(P244)的基础上参考《KHF-4型实验指导书》实验十一进行修改,为其建立工程文件,进行文本编辑输入和仿真测试,给出仿真波形,并进行硬件测试
实验步骤
1.用VHDL文本输入方法完成ADCINT.vhdl的有限状态机的设计,创建project,编译、仿真,给出时序波形图。
2.ADC0809各引脚及其功能示意图如下所示
转换流程:
<1>CLK为转换时钟输入端口(500KHz)
<2>8路通道地址选择ADD-C/B/A控制模拟通道IN[7..0]地址,ALE锁存
<3>START上升沿启动转换
<4>EOC为低电平则转换继续,高电平时转换结束
<5>此时OE置为高电平,转换好的数据由LOCK锁存并通过D[7..0]输出
2.引脚锁定,编程下载,进行硬件测试
实验结果及分析
1.Vhdl文本输入所得仿真波形
2.原理图输入法设计及其仿真波形
1.由仿真波形可以看出,有限状态机的设计符合预期
2.调节电位器,通过改变模拟输入量,可在数码管SEG1和SEG2上看到转换的结果,输出范围从00~FF,同时OUTA(13~7)、OUTA (6~0)所对应的各LED灯按二进制取值不同亮灭情况不同。
实验过程中所遇到的问题及相应的解决方法
1.时序仿真的时候由于EOC的周期取值过小,导致得不到预期的结果,有限状态机的状态总是停留在cs:s2,或者在OE的高电平期间,ALE、START、LOCK1会有多个短暂的脉冲,时序已不正确。经调整EOC的周期,问题得以解决。
2.在进行FPGA硬件测试时,刚开始编程下载后数码管只显示FF,调节电位器,显示的值并没有改变。重新编程下载,数码管显示的是另一个值,经仔细检查仍不得其因。最后只得将课本例7-2的ADC0809状态机的设计代码整合进ADCINT.vhdl,也就是改变状态机的设计。再次编程下载,调节电位器,数码管和LED灯可以正常工作,随输入的改变而改变输出值。

使用ADC0809的AD转换实验

使用ADC0809的AD转换实验

实验二 使用ADC0809的A/D 转换实验一、实验目的加深理解逐次逼近法模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D 输入程序的设计和调试方法。

二、预备知识逐次逼近法A/D 也称逐次比较法A/D 。

它由结果寄存器、D/A 、比较器和置位控制逻辑等部件组成,如图5-1所示。

图5-1三、实验内容1 、实验原理本实验采用 ADC0809 做 A/D 转换实验。

ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D 器件,转换时间约100us ,转换精度为±1/512,适用于多路数据采集系统。

ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。

IN-026msb2-1212-220IN-1272-3192-418IN-2282-582-615IN-312-714lsb2-817IN-42E OC7IN-53ADD-A 25IN-64ADD-B 24ADD-C 23IN-75ALE22ref(-)16E NABL E 9ST ART 6ref(+)12CLOCK 10UB43ADC0809123UB42A 74L S02456UB42B 74L S02E B4122U/16VCB41103RB41510IORIOWVCCADD0ADD1ADD2GNDGNDGNDVre f+5VIN6IN7IN1IN2IN3IN4IN5D7D0D1D2D3D4D5D6E OC/EOCIN0CS_0809CLK_080912UA32A 74L S04WA5110K VCCGNDRA51100V1Y61MHZ图中ADC0809的CLK 信号接CLK=,基准电压Vref(+)接Vcc 。

一般在实际应用系统中应该接精确+5V ,以提高转换精度,ADC0809片选信号0809CS 和/IOW 、/IOR 经逻辑组合后,去控制ADC0809的ALE 、START 、ENABLE 信号。

ADC0809模数转换器的使用详解与程序

ADC0809模数转换器的使用详解与程序

ADC0809模数转换器的使用详解与程序作者:佚名来源:本站原创点击数:32 更新时间:2010年06月12日【字体:大中小】带我们的王老师刚评上硕导了,下学期开始带研究生了。

从他那里了解到每做一次实验或者实践,应该把它用规范的格式记录下来,一来自己可以日后查看,二来同学间可以相互交流,共通过进步,甚为必要。

现将本次实验记录如下。

实验名称:根据光强控制外围器件的通断。

实验原理;使用AD芯片将太阳能电池产生的光生伏打电压转化为数字信号,再通过单片机处理后,在数码管上显示电压,同时根据设定电压伐值,控制外围器件的通断。

实验所需的设备:51单片机烧写器一个,电脑一台,数字式示波器一个,数字式万用表一个实验所需的元件:太阳能电池一片,单片机一片,1k排阻一个,四位连体的数码管一个,排针若干排,导线,万用版一块,焊锡。

实验前的理论准备;能熟练使用51单片机,示波器,keil软件,isp下载软件,看懂AD0 809的英文pdf说明实验的难点:难点一就是AD0809芯片的使用。

难点二就是将AD0809产生的0~256的数字换算成0~5.000的精确度,而又不至于溢出出错。

难点三就是以上的理论准备全部系自学,呵呵下面着重说明AD0809的使用难点。

ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

1.主要特性1)8路8位A/D转换器,即分辨率8位。

2)具有转换起停控制端。

3)转换时间为100μs4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW。

2.内部结构ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近3.外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。

adc0809实验报告

adc0809实验报告

adc0809实验报告adc0809实验报告引言:在现代科技发展的今天,模拟信号与数字信号的转换已经成为了一个非常重要的领域。

而ADC(Analog-to-Digital Converter)芯片的应用则是实现这种转换的重要手段之一。

本实验旨在通过使用ADC0809芯片,对模拟信号进行采样和转换,进而实现模拟信号的数字化处理。

一、实验目的本实验的主要目的是通过使用ADC0809芯片,掌握模拟信号的数字化转换原理和方法,并能够进行模拟信号的采样和转换。

二、实验器材1. ADC0809芯片2. 电压源3. 示波器4. 电阻、电容等元器件5. 电路板等实验设备三、实验原理ADC0809芯片是一种8位的逐次逼近型模数转换器。

它通过对模拟信号进行采样,再经过一系列的比较和逼近,最终将模拟信号转换为相应的8位数字信号。

四、实验步骤1. 搭建实验电路:根据实验要求,将ADC0809芯片与其他元器件连接起来,形成完整的电路。

2. 设置电压源:根据实验需要,设置适当的电压源,以提供模拟信号的输入。

3. 连接示波器:将示波器与ADC0809芯片的输出端连接,以便观察数字信号的波形。

4. 运行实验:通过控制电路中的时钟信号,使ADC0809芯片开始对模拟信号进行采样和转换。

5. 观察结果:通过示波器观察数字信号的波形,并记录下相应的数据。

五、实验结果与分析通过实验观察和记录,我们可以得到一系列的数字信号数据。

通过对这些数据的分析和处理,我们可以得到模拟信号的数字化表示。

同时,我们还可以通过对数字信号的波形进行分析,了解模拟信号在转换过程中可能出现的误差和失真情况。

六、实验总结通过本次实验,我们深入了解了ADC0809芯片的工作原理和应用方法。

通过实际操作和观察,我们掌握了模拟信号的数字化转换技术。

同时,通过对实验结果的分析和总结,我们对模拟信号的数字化处理有了更为深入的理解。

七、实验心得本次实验对于我们来说是一次非常有意义的实践活动。

(最新整理)测控电路课后习题.(DOC)

(最新整理)测控电路课后习题.(DOC)
换; (3) 量程的变换; (4) 选取所需的信号的能力,信号与噪声的分离,不同频率信号的分离等; (5) 对信号进行处理与运算,如求平均值、差值、峰值、绝对值,求导数、积分等、非线
性环节的线性化处理、逻辑判断等。 1-9 为什么要采用闭环控制系统?试述闭环控制系统的基本组成及各组成部分的作用。
在开环系统中传递函数的任何变化将引起输出的变化。其次,不可避免地会有扰动因素作 用在被控对象上,引起输出的变化.利用传感器对扰动进行测量,通过测量电路在设定上引入一 定修正,可在一定程度上减小扰动的影响,但是这种控制方式同样不能达到很高的精度.一是对
测控电路课后习题.(DOC)
扰动的测量误差影响控制精度。二是扰动模型的不精确性影响控制精度。比较好的方法是采用 闭环控制。
闭环控制系统的基本组成见图 X1-3.它的主要特点是用传感器直接测量输出量,将它反馈 到输入端与设定值相比较,当发现它们之间有差异时,进行调节。这里系统和扰动的传递函数 对输出基本没有影响,影响系统控制精度的主要是传感器和比较电路的精度.在图 X1-3 中,传 感器反馈信号与设定信号之差不直接送到放大电路,而先经过一个校正电路.这主要考虑从发 现输出量变化到执行控制需要一段时间,为了提高响应速度常引入微分环节。另外,当输出量 在扰动影响下作周期变化时,由于控制作用的滞后,可能产生振荡。为了防止振荡,需要引入 适当的积分环节.在实际电路中,往往比较电路的输出先经放大再送入校正电路,然后再次放 大。图 X1-3 为原理性构成。
测控电路课后习题.(DOC)
测控电路课后习题.(DOC)
编辑整理:
尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对 文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(测控电路课后习题.(DOC)) 的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步 的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以 下为测控电路课后习题.(DOC)的全部内容。

基于51的控制的ADC0809仿真

基于51的控制的ADC0809仿真

摘要现今大多数的数据都是以电压形式进行采集,并数字化然后进行处理,如何进行多路的电压采集并数字化就显的有实际意义。

以8052单片机作为控制器,用8255进行并行口扩展,实现对ADC0809和LCD1602进行控制,从而实现多路电压的采集和显示。

将8路开关组成选择电路,来选择用以采集和显示的通道。

该设计能简单快速的实现8路电压的低精度的采集和显示。

具有很好的操作性。

proteus作为一款优秀的数字仿真软件,不但可以传统的数字仿真,还可以数模混合仿真,从而能在验证好设计在进行系统搭建,减少开发时间。

关键词51;单片机;8255;电压采集;ADC0809 ;LCD1602绪论随着信息技术的普及,越来越来越多的信号都是以数字的形式进行采集和处理。

因为数字相对模拟信号具有很多优点。

数字信号具有保密性好,抗干扰能力强的有点,同时由于数字信号处理技术的发展,数字信号的处理变得更加快速和高效。

而由于现实世界由传感器采集到的数据多为模拟的电压信号,因此,模拟的数字化转换就很有意义。

51单片机作为最成功的8位单片机,具有指令丰富,速度快,价格低,片上资源丰富等特点,能轻易胜任一般的数据采集的控制器。

ADC0809是一款具有8个模拟输入通到的8位逐次逼近型AD转换器,可以满足多路数据的低精度采集。

LCD1602是16*2的字符型工业液晶。

可以轻易满足显示要求的不高的场所。

由于LCD1602加上ADC0809和8路开关,所需要的I/O明显多于51单片机所能提供的数量。

所以采用了8255并行扩展芯片对I/O口扩展,以达到需要。

由于现今数字IC设计的复杂性,如果没在进行设计验证下时进行系统搭建,会在后期调试上的浪费时间。

Proteus能对大部分数字电路或则数模混合电路进行仿真。

从而减少后期调试的时间该设计所需要的主要器件有8051单片机,8055并行扩展芯片,ADC0809,LCD1602,开关。

设计总体如图。

左边第一个U1为8051,由于软件允许,省去了复位,时钟,电源电路。

基于51单片机 ADC0808(ADC0809)多通道数字电压表74HC595(74 LS595)移位寄存器

基于51单片机 ADC0808(ADC0809)多通道数字电压表74HC595(74 LS595)移位寄存器

多路数据采集系统摘要本系统利用现场信号产生器给八路数据采集器(ADC0809)进行提供信号,通过模数转换把哪一路数据多少传送给单片机,通过单片机程序处理显示。

采集方式利用循环采集和选择采集两种,显示部分用四位一体共阳数码管。

一.系统原理ADC0809是CMOS工艺、采用逐次逼近法的8位A/D转换芯片,28引脚DIP(双列直插式封装)封装,可以进行8路模拟量到数字量的变换。

利用单片机可以对8路进行循环采集显示,要对信号进行选择采集,只对单片机外围加入按键利用按键判别选取哪一路进行数据采集。

通过单片机P3.0~P3.3进行对ADC0809提供时钟信号还有启动转换信号,读取信号等。

P3.5~P3.8经74LS373(带三态缓冲输出的8D触发器)进行选择通道(如图1、图2)。

(此处选择74LS373是因为选择通道是不能太快,否则会出错)。

由P1口进行接收采集到的数据。

通过P0进行段选输出到数码管,由P2口低四位进行位选。

P2高四位对按键信号输入处理选择哪个通道。

图1 ADC0809通道选择表图2 74LS47功能图图3 系统原理框图二.系统程序框图系统为了提高模拟信号—采样—量化—数字信号的过程的量化误差,通过程序的计算提高精度。

由于ADC0809只有八位数据输出,最大值为255,所以再显示前在单片机中要对ADC0809输出的数据进行以下处理。

显示值=ADC0809输出值/255*输入值如果输入5V电压,后面输入值就是500。

提供仿真图和仿真程序三.系统原理图原理图中八个数据采集口都悬空,接入想要采集模拟信号。

四.系统PCB图五.系统主要操作与性能(1)循环采样速率:50ms(2)电压采样精度:0.01V(3)再选择哪个通道时,要把哪个通道的按键一直按住就可以显示出你要的哪个通道的数据。

(4)不选择任一通道时,就会让它自已自动循环显示。

课程设计报告ADC0809控制

课程设计报告ADC0809控制

单片机控制ADC0809模数转换及显示的设计【摘要】传感器的作用是将不易检测的非电量信号转换为易于检测的电信号,如电压、电流、电荷等,为了实现系统自动化和智能化,就需要有中央处理器对外界信号进行分析并作出相应的处理,而CPU属于数字系统,只能用于处理数字信号,这就需要将模拟信号转换成数字信号来处理,因此,信号采集与处理系统的设计与研究有着十分重要的意义。

一、设计目的1.学习操作数字电路设计实验开发系统,掌握数据采集工作原理及应用。

2.掌握proteus和单片机C语言设计方法。

3.学习掌握单片机设计的全过程。

二、设计内容本课程设计是利用51单片机设计一个数据采集系统,并用4位数码管显示输入的电压。

选用ADC0809芯片作为AD转换电路,设计中把输入的电压量转换成数字量进行显示。

设计具体要求如下:1. 在proteus中绘制电路原理图;2. 熟练掌握单片机C语言,编写控制程序;3. 利用proteus仿真所编写的程序,模拟验证所编写的模块功能;4. 整理设计内容,编写设计说明书。

三、设计方案(包括器件选择、工作流程框图)本课程设计的基本要求就是用单片机控制ADC0809的模拟采集并将采集的电压值显示在四位数码管上,为了使设计功能更加完善,可以为最小系统添加按键模块,因为ADC0809模数转换器有八路模拟采集通道,为了充分利用系统资源,可以通过添加按键模块来控制采集通道,实现多路通道分时采集。

同时,在实际工程中,比如自动化、智能化控制系统中,往往需要有根据外界输入的情况对其作出智能化反馈,使系统实现良好的人机交互。

该设计实现当输入电压大于或者小于一定范围的时候,LED灯亮。

总体框图:图 1 系统设计总体方案框图1、AT89C51单片机简介本课程设计的要求比较简单,所以可以选择使用比较简单的MCS-51系列的AT89C51单片机即可。

其特点如下:图 2 AT89C51 引脚图●8位CPU,即CPU一次可以处理8为数据。

使用ADC0809制作数字电压表

使用ADC0809制作数字电压表
{
LCD1602_WrCom(0x38); //8位数据,双列,5*7字形
LCD1602_WrCom(0x0c); //开启显示屏,关光标,光标不闪烁
LCD1602_WrCom(0x06); //显示地址递增,即写一个数据后,显示位置右移一位
LCD1602_WrCom(0x01); //清屏
LCD1602_WrCom(0x80); //先写入空白,不然不能直接写第二行
LCD1602_WrCom(0x80+pos); //显示地址设为80H+起始位置
else
LCD1602_WrCom(0x80+0x40+pos); //显示地址设为80H+起始位置
LCD1602_Delay(5);
LCD1602_WrData(txt);
return 0;
}
uchar LCD1602_ShowNum(uchar line, ucharpos,uintnum)
for(i=0;i<5;i++)
{
if(num/tenPower || zero || i==4)
{
LCD1602_WrData('0'+num/tenPower);
zero=1;
}
else
{
LCD1602_WrData(' ');
}
LCD1602_Delay(1);
num%=tenPower;
tenPower/=10;
Delay(5);
DCSTARTPIN=1 ;
Delay(20);
DCSTARTPIN=0;
while(DCEOCPIN==0)
;

ADC0809数字电压表报告

ADC0809数字电压表报告

摘要数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。

较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。

A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。

数据处理则由芯片STC89C52来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外它还控制着ADC0809芯片工作。

此数字电压表可以测量0-5V的1路模拟直流输入电压值,并通过一个四位一体的7段数码管显示出来。

关键字:STC89C52、ADC0809、数字电压表、A/D转换一、设计任务与要求1.1 设计任务基于单片机制作一个简易数字电压表,利用ADC0809芯片将电位器102的电阻值转换为电压值显示在数码管上。

1.2 设计要求(1)以STC89C52系列单片机为核心器件组成一个简单的直流数字电压表;(2)采用1路模拟量输入,能够测量0-5V之间的直流电压;(3)电压显示用4位一体的共阴级LED数码管显示,至少能够显示两位小数;(4)A/D转换采用ADC0809实现,与单片机的接口为P1口和P3口部分引脚。

LED数码管的段码输入由并行端口P0产生,位码输入用并行端口P2高四位产生。

二、方案设计2.1 硬件设计2.1.1单片机模块设计单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理,主要由单片机、时钟电路、复位电路组成。

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器,其引脚如下图所示:STC89C52引脚图2.1.2 P0口上拉电阻一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态,必须在IC外部另接一电阻。

数字电路有三种状态:高电平、低电平、和高阻状态,有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻排阻消除高阻状态。

proteus课程设计--AD0809

proteus课程设计--AD0809

proteus课程设计--AD0809理与显示。

本设计显示采用4位数码管(共阴),利用*****单片机自带外部中断INT0,INT1来实现数据采集通道的转换,使用滑动变阻器作为采集的信息源。

采用Proteus和Keil uvision3为开发工具,软件设计采用模块化编程。

关键字:*****、电压采集、*****、proteus11)系统总体设计方案及实现方框图以AD0808模数转换器和*****单片机为核心,进行实时电压数据采集,数据处理与显示。

本设计显示采用4位数码管(共阴),利用*****单片机自带外部中断INT0,INT1来实现数据采集通道的转换,使用滑动变阻器作为采集的信息源。

电源模块显示模块采集数据***** 单片机独立按键模拟数据系统设计方框图2)硬件设计:显示模块:LED数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。

LED数码管根据LED 的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。

图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。

引脚图本设计采用4位共阴数码管,其内部结构原理如下图2共阴极LED数码管的内部结构原理图LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位。

共阴数码管显示数字对应的二进制电平信号如下图A/D转换器:1、*****的逻辑结构*****是8位逐次逼近型A/D转换器。

它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成(见下图)。

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

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

利用51单片机与ADC0809和数码管设计数字电压表

利用51单片机与ADC0809和数码管设计数字电压表

利用51单片机与ADC0809和数码管设计数字电压表一、课题功能描述:利用单片机AT89C51 芯片与ADC0809 芯片设计一个数字电压表,能够测量0―5V 之间的直流电压,三位数码显示。

二、程序设计本实验采用AT89C51 单片机芯片配合 ADC0809 模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1 所示。

该电路通过 ADC0809 芯片采样输入口AI0 输入的0~5V 的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7 传送给 AT89C51 芯片的F0口。

AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过P1 口传送给数码管。

同时它还通过其三位 I/O 口 P3.0、P3.1、P3.2 产生位片选信号,控制数码管的亮灭。

另外,AT89C51 还控制着 ADC0809 的工作。

其ALE管脚为 ADC0809提供了 1MHZ 工作的时钟脉冲;P2.3 控制 ADC0809 的地址锁存端(ALE); P2.4 控制 ADC0809 的启动端(START); P2.5 控制 ADC0809 的输出允许端(OE); P3.7 控制 ADC0809 的转换结束信号(EOC)。

电路原理图如下:三、器件清单:1 . AT89S51 芯片 1块2 . ADC0809 芯片 1块3 . 74HC245 芯片 1块4 . 数码管 1个5 . 6MHZ 晶振 1个6 . 30pF 电容 2个7 . 10uF 电解电容 1个8 . 复位电容 1个9 . 510Ω电阻 8个10. 10KΩ电阻 1个11. 导线若干四、程序设计1、主程序设计由于ADC0809 在进行A/D转换时需要有CKL 信号,而此时的 ADC0809 的CLK 是连接在 AT89C51 单片机的30管脚,也就是要求从30管脚输出CLK 信号供图1-2主程序流程图ADC0809 使用。

基于Proteus的多路信号监测系统仿真_杜峰

基于Proteus的多路信号监测系统仿真_杜峰

第32卷第2期2013年2月绵阳师范学院学报Journal of Mianyang Normal University Vol.32No.2Feb.,2013收稿日期:2012-10-26作者简介:杜峰(1980-),男,助教,硕士,主要研究方向:汽车电子控制系统嵌入式开发.E -mail :dufeng123dufeng@126.com基于Proteus 的多路信号监测系统仿真杜峰1,袁显举2,姚立影1,赵永先1(1.绵阳师范学院交通运输与管理学院,四川绵阳621000;2.华南理工大学,广东广州510641)摘要:为满足生产实践的需要,对生产过程中各项重要的运行参数进行实时监测,在Proteus 环境下,采用微控制器、模数转换器、发光二极管和液晶显示器,搭建了一套生产运行参数的监测系统,在Keil 中进行模块化程序设计,通过与二者的联合程序调试,成功对系统进行了仿真,达到了预期效果.关键词:仿真;信号监测;液晶显示;Proteus中图分类号:TP274.2文献标识码:A 文章编号:1672-612x (2013)02-0032-060引言在自动化生产过程中,需要对许许多多电参量及非电参量进行监测,鉴于电压信号传输的便捷些,对于这些电参量及非电参量,通常都是将其转换成电压信号来进行监测处理,力、速度、位移、加速度、湿度、温度、电荷、电流等,通过相应的传感器及电压变换装置将其转换成为0 5V 的电压信号,从而可以利用微控制器对其进行自动检测,再通过相应的数据处理和单位变换,恢复参量的实际数值来进行显示,生产过程的监测对于自动化生产具有很大的帮助作用[1].论文采用经典51单片机,通过ADC0809扩展八路AD 转换通道,对八个生产参数进行不间断监测,并在LCD 上显示参数值,对每一参数设置限定值,如果越限,则进行报警.1系统分析AT89S52通过ADC0809扩展八通道AD 转换,ADC0809转换时钟由单片机定时器0中断产生,选择定时计数器方式2工作,自动装初值,通道数据读取由ADC0809的EOC 引脚在转换结束时通过非门74HC04产生低电平触发单片机外部0中断,读取通道数据并保存在相应通道的存储单元里,主程序调用数据显示子程序滚动显示各通道数值,并负责报警判断,在通道超出预置值时,点亮红色LED 灯报警[2].ADC0809的时钟频率要求最小10KHz ,通常采用640KHz ,它决定了模数转换的速度,在实际的硬件设计中,如果要求信号的实时性,则最好采用硬时钟,本系统中因通道信号的转换和数据的读取都是通过中断对外部数据存储器的操作来实现的,故地址锁存信号输出端ALE 亦不能提供可靠的时钟信号,通过ALE二分频电路提供时钟源的方法亦不可取[3],于是系统采用单片机C /T0中断产生时钟源,但由于ADC0809数据的读入采用的是中断方式,制约了定时器为ADC0809提供的时钟频率的提高,仿真系统采用10KHz ,定时器0工作在方式2,自动重装初值TH0=TL0=256-50.通过外部中断,读取并更新信号通道存储区数据,同时启动下一通道的AD 转换,主程序调用数据处理及显示子程序循环监测各通道信号数据并判断是否超限报警.2锁存器74HC573功能仿真随着单片机技术的发展,许多外围电路,如AD 、DA 和PWM 等功能模块,都被集成在单片机中,不用像最初那样来扩展,但是像锁存器74HC573、驱动芯片74HC244及三八译码器等,其功能、原理及与控制器的接口仍然是嵌入式开发的基础,必须牢固掌握.论文通过锁存器74HC573选中模数转换器ADC0809的转换通道来实现多路转换[4],下面在Proteus 环境下对锁存器74HC573的功能进行仿真,以分析其与单片机的接口电路设计.DOI:10.16276/51-1670/g.2013.02.017Proteus 是英国Labcenter Electronics 公司的EDA 工具软件,是目前世界上最先进、最完整的嵌入式系统设计与仿真软件平台.它基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;拥有超过27000个仿真器件,多样的激励源,丰富的虚拟仪器,生动的仿真显示,高级图形仿真功能;支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR 、ARM 、8086、MSP430、Cortex 和DSP 系列处理器等,并且支持当前流行的单片机开发环境,实现了电路的互动仿真和软件代码级的实时调试,配合其中的示波器和逻辑分析仪等虚拟仪器能够观察输入输出结果.74HC573锁存器的真值表见表1.表174HC573真值表Tab.1Truth table of 74HC573Output ControlLatch EnableData Output L H H H L H L L L L X Q0HXXZH =HIGH Level L =LOW LevelQ0=Level of output before steady -state input conditions were established.Z =High Impedance X =Don't Care.在proteus 环境下加入74HC573模型,加入调试工具LOGICSTATE 和LOGICPROBE ,即可对锁存器的功能进行仿真[5],当Output Control 是数据输出控制端,能实现芯片三态输出,高电平时,输出端为高阻状态,如图1所示,当OE 端为高电平时,无论LE 状态是高还是低,输出端均无信号,即为高阻状态.图1OE (Output Control )端功能仿真Fig.1Simulation of OE's functionOutput Control 为低电平,则允许数据正常输出,如果Latch Enable 端同时为高电平,则输出与输入随动,两端电平一致,如图2示,Output Control 端为低电平时,如果Latch Enable 某一刻从高电平跳变为低电平,则锁存器将跳变时刻的数据状态锁存在输出端,输出端不在随输入端而变化,如图3.图2未锁存的状态Fig.2Unlatched state 图3锁存功能仿真Fig.3Simulation of latching·33·杜峰等:基于Proteus 的多路信号监测系统仿真第2期3硬件设计系统通过74HC573连接ADC0809模数转换器的通道选择端A 、B 、C ,在单片机发出写指令启动转换时,ALE 引脚从高到低的跳变触发74HC573将通道选中并启动模数转换,在转换结束时ADC0809模数转换器EOC 端出现高电平经74HC04反相触发单片机外部中断,中断子程序将转换的信号数据读取到相应的存储区,供主程序进行后续处理[6,7],电路原理如图4.图4硬件原理图Fig.4Chematic diagram of Hardwares原理图下方是八路电压信号,并分别使用电压表显示通道当前的电压值,以与LCD 监测值做对比验证.LCD 显示数据由P1口提供,RS 、RW 、E 端分别由P3.0、P3.1和P3.2控制,P3.5端负责报警灯点亮,当检测电压值超限时,P3.5置低电平点亮红色LED 灯报警.4软件设计采用模块化编程,建立五个文件:incdef.h ,1602.c ,delay.asm ,datatransformdisplay.c ,main.c ,定义显示数据全局变量disp [20]和ADC0809通道地址指针数组xdata *ADC [8]={0x7ff8,…,0x7fff },分别对应0-7通道,通过指针来访问.incdef.h 头文件主要进行数据类型定义、数据端口定义、函数声明、添加头文件等,作为头文件添加在其他C 文件中,以简化程序;1602.c 包含了LCD 的初始化、写命令、写数据和等待LCD 空闲的几个子程序;datatransformdisplay.c 有两个子程序构成,一个完成数据十进制的转换,另一个是LCD 数据显示子程序;de-lay.asm 延时子程序,是为LCD 的工作时序专门写的汇编代码,以实现精确延时;main.c 主要来显示通道信号数据并判断报警,另有定时计数器0和外部中断1的中断服务程序,这里对所有通道报警设置为4.3V ,根据不同通道的信号类型,可以很方便的对各个通道分别进行不同的报警设置[8].为了防止采样更新与数据显示发生错乱,每次采样中断响应后就关闭中断,待主程序把正在处理的通道显示完毕后再打开采样中断.·43·第32卷绵阳师范学院学报(自然科学版)4.1KeilC 全局变量的使用由于采用模块化程序设计,几个c 程序文件需要访问同一个变量,在主程序main.c 中定义了数组disp [20]用来存储欲显示在LCD 显示屏上的内容,有不变的部分,在程序启动的时候写入,其中通道数及通道信号数据是可变的,要实时更新,就需要datatransformdisplay.c 中的两个子程序访问,进行数据十进制转换及单位变换和显示.于是在incdef.h 中对其进行外部声明,然后将此头文件添加到每个c 文件里[9].KeilC 文件使用全局变量容易产生难以察觉的错误,对全局变量的使用有以下四点建议:1.尽量少用,最好不用;2.使用中断,要明确寄存器组;3.在主程序外面只对全局变量做声明,不做定义,否则编译出现重定义的错误;4.使用全局变量出错时,可以给它指定一个地址(不能冲突).4.2延时及十进制转换程序由于LCD 工作有严格的工作时序,对延时的精度要求较高,稍有不慎就无法正常显示,于是采用汇编编写精确的延时程序,delay.asm 的编写涉及到c 语言与汇编的混合编程,C 函数delay (i ,j ),第一个参数i传递给当前工作寄存器组的R7,参数j 传递给R5,汇编程序通过引用这两个寄存器来使用数据,delay.asm 程序如下:?PR ?_DELAY ?DELAY SEGMENT CODE PUBLIC _DELAY //_DELAY 表示有参数传递RSEG ?PR ?_DELAY ?DELAY _DELAY :D1:MOV A ,R7DJNZ R7,$MOV R7,A DJNZ R5,D1RETEND十进制转换程序将通道信号数据转换至小数点后两位数字并送人显示区,每一位数字前加48是为了与LCD 显示编码对应.void datatransform (uchar temp ){double temp1;temp1=temp*5/255;disp [13]=48+(uchar )(temp1);//整数位disp [15]=48+((uchar )(temp1*10)%10);//小数点后第一位数字disp [16]=48+((uint )(temp1*100)%10);//小数点后第二位数字}5系统仿真5.1Proteus 与Keil 联合仿真设置首先把Proteus 安装目录下VDM51.dll 链接文件复制到Keil 安装目录的\C51\BIN 目录下,然后修改Keil 安装目录下Tools.ini 文件,在C51字段加入TDRV5=BIN \VDM51.DLL ("Proteus 51MCU Driver")并保存,TDRV 序号不要与其他的重复,接着打开Proteus ,在下拉菜单Debug 中选择Use remote debug monitor ,最后打开Keil 软件,点击project /option for target ‘target 1’,在对话框中做图5所示的设置,这样一切就绪,当在Keil 环境下调试程序时,Proteus 的仿真电路也会一起动作[10].·53·杜峰等:基于Proteus 的多路信号监测系统仿真第2期图5联合仿真Keil 设置Fig.5Settings of Keil for co -simulation5.2仿真结果LCD 显示屏第一行指示通道信号类型,这里是电压,可以根据信号类型,进行不同的显示,相应的采样数据要进行单位变换,从电压转换成物理量的实际数值.某一刻,CH1电压为4.5V ,CH2通道电压3.00V ,系统检测电压分别为4.49V 和3.00V ,仿真结果如图6、图7所示,其中通道CH1电压值超过了设定的4.3V 上限,故左侧的红色LED 点亮报警.图6CH1仿真图Fig.6Simulation of CH1图7CH2仿真图Fig.7Simulation of CH2某一刻,第八通道CH7电压为1.5V ,系统检测电压分别为1.50V ,仿真结果如图8所示.6结束语论文在Proteus 环境下,采用AT89S52、模数转换器ADC0809、发光二极管和液晶显示器,搭建了一套生产运行参数的监测系统,对八个生产运行参数进行监测,通过模块化程序设计,精简了程序,提高了代码的可维护性,成功对系统进行了仿真,信号检测、LCD 显示及LED 报警功能均正常,达到了预期效果,有一定的实用价值.·63·第32卷绵阳师范学院学报(自然科学版)图8CH8仿真图Fig.8Simulation of CH8参考文献:[1]汤三,韩红培.基于DS18B20和AT89C2051单片机的温度控制系统设计[J ].许昌学院学报,2009,28(2):51-53.[2]郑玉甫,肖强,张椿玲.基于VB 的蓄电池电压监测系统平台[J ].自动化与仪表,2006(5):26-28.[3]张毅刚,彭喜源,谭晓昀,等.MCS -51单片机应用设计[M ].哈尔滨:哈尔滨工业大学出版社,2002.[4]刘文武.16路抢答器电路改进设计[J ].绵阳师范学院学报,2011,30(11):51-54.[5]Labcenter Electronics Ltd ,PROTEUS VSM HELP [Z ].http ://www.labcenter.co.uk /index.cfm ,2012.[6]李毅,余少辉,周步洲.基于DS18B20的测温系统设计[J ].电子技术(上海),2009(1):11-13.[7]Ping Li ,Yu -cai Zhou ,Xiang -jun Zeng ,Ting -fang Yang.A Design of the Temperature Test System Based on Grouping DS18B20[C ].2nd IEEE Conference on Industrial Electronics and Applications (ICIEA 2007),2007:188-191.[8]马忠梅,籍顺心,张凯,等.单片机的C 语言应用程序设计[M ].北京:北京航空航天大学出版社,2004.[9]伍冯洁,谢陈跃,谢斌.Proteus 与Keil 在单片机开放性实验中的应用[J ].电子测量技术,2008,31(6):100-103.[10]张艳玲.Keil 与Proteus 在高职单片机教学中的应用[J ].机械管理开发,2011(5):180-181.Simulation of Multi -channel Signal MonitoringSystem Based on ProteusDU Feng 1,YUAN Xian -ju 2,YAO Li -ying 1,ZHAO Yong -xian 1(School of Transportation Management ,Mianyang Normal University ,Mianyang ,Sichuan 621000)Abstract :The important parameters of the process of production will be real -time monitored in accordance with the requirement of manufacturing.With the software of Proteus ,by using microcontroller 、ADC0809、LED and LCD ,the monitoring system is set up.By simultaneously debugging with Keil and Proteus ,simulation of the system achieves success in the virtual environment of Proteus.Key words :Simulation ;signal monitoring ;LCD ;Proteus·73·杜峰等:基于Proteus 的多路信号监测系统仿真第2期。

用状态机实现ADC0809的采样控制电路

用状态机实现ADC0809的采样控制电路

实验二用状态机实现ADC0809的采样控制电路一、实验目的:1.学习用状态机对A/D转换器ADC0809的采样控制电路的实现。

二、实验仪器1.PC机一台2. KHF-5 CPLD/FPGA实验开发系统一套。

三、实验要求1.查阅ADC0809芯片资料。

2.预习实验内容。

四、原理说明:ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。

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

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

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

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

五、实验内容及实验步骤1、利用quartus2进行文本编辑输入和仿真测试;给出仿真波形。

最后进行引脚锁定并进行测试,硬件验证对ADC0809的控制功能。

2、建议引脚锁定为:oe为p18。

ale为p19。

ina0--ina7为p24 p25 p26p27 p28 p29 p30 p31。

adda addb addc分别对应芯片管脚p36 p37 p38。

eoc为p39。

ck(08096时钟)为p40。

Inclk(状态机时钟)为p80。

Start引脚和ale短接,因此共用p19。

采样数据用数码管seg1,seg2显示:seg1的a,b,c,d,e,f,g段 -------161,162,163,164,166,167,168;seg2的a,b,c,d,e,f,g段 ------ 170,172,173,174,175,176,177。

单片机测控电路实训报告

单片机测控电路实训报告

目录一、实训的总体情况 (2)1、实训时间 (2)2、实训地点 (2)3、实训目的与任务 (2)4、实训基本要求 (2)5、实训项目 (2)二、实训项目具体介绍 (3)1、矩阵键盘输入,LED点阵显示 (3)2、脉宽调制(PWM)输出 (6)3、环形脉冲分配 (9)4、A/D转换 (13)三、心得体会 (15)四、参考文献 (16)一、实训的总体情况1、实训时间:2012年6月25日——7月13日,每周一至周五,上午8:30——11:50。

2、实训地点:应用技术学院117室(编写、调试程序在学院318室)。

3、实训目的与任务:目的:是使我们了解常用接口器件及与单片机的连接方法和工作原理。

任务:通过老师讲解实际生产中常用的单片机测控接口电路,以项目开发的形式让我们自己设计、制作具体的典型接口电路,实现特定的测控功能,从而培养我们的实际操作应用能力。

4、实训基本要求:1) 熟悉常用的单片机接口器件;2) 掌握单片机测控电路的设计方法;3) 学会接口器件驱动程序的编写;4) 能对自己设计的系统进行调试和错误排查;5) 记录制作调试过程,撰写实习报告。

5、实训项目:1)矩阵键盘输入,LED点阵显示;2)脉宽调制(PWM)输出;3)环形脉冲分配;4) A/D转换。

二、实训项目具体介绍(1)、矩阵键盘输入,LED点阵显示1、项目名称:矩阵键盘输入,LED点阵显示2、项目要求:用3×3的键盘控制8×8的LED模块,每按一个键显示一个特定的字符。

(我设计显示的字符依次为飞、上、天、王、H、E、L、P、!。

)3、硬件电路图设计思路:实验室给的4×4的键盘,但是只需要用3×3就行了。

我想着用单片机来采集按键信号,并用查表方式以8×8的LED模块显示。

所以硬件电路只需要单片机芯片、8×8的LED矩阵模块和4×4的键盘连接即可组成。

4、硬件电路仿真图:5、软件程序流程图及设计说明:我用单片机的P1.0~P1.3接收行信号,P1.4~P1.7接收列信号,P2端口做为高电平输出,P0口作为低电平。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

测控电路大作业说明书
专业:学号:姓名:
设计要求:利用传感器输出电压(0~5mv),放大电路,滤波电路,ADC电路,单片机,LED 显示压力值(电压值)
课题的具体要求如下:
1、方案总体设计与论证
2、系统硬件电路设计:简易数字电压表测量电路由A/D转换、数据处理及显示控制等组
成,A/D转换由集成电路0808完成,显示采用四位数码管
3、系统流程图设计,汇编程序编写:包括初始化程序、主程序、显示子程序、模/数转
换测量子程序等
4、调试及性能分析:采用KELL编译器进行源程序编译及仿真测试,同时进行硬件电路
的设计制作,在Proteus软件里进行硬件仿真,最后进行端口电压的对比测试设计思路
根据设计要求,选择AT89C52单片机作为核心控制器件。

A/D转换采用ADC0808实现。


单片机的接口为P0和P3端口。

电压显示采用4位一体的LED数码管
LED数码管的段码输入,由并行端口P1产生;位码输入,由并行端口P2低四位
产生
5' ADC0809对模拟量输入信号进行转换,通过判断EOC(P3.1引脚)来确定转换是否
完成,若EOC为0,则继续等待;若EOC为1,则把OE置位,将转换完成的数据存储到
P1中
电路图:
程序如下:#include<reg52.h>
unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char dispbuf[4];
unsigned int i;
unsigned int j;
unsigned char getdata;
unsigned int temp;
unsigned int temp1;
unsigned char count;
unsigned char d;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P17=P1^7;
void TimeInitial();
void Delay(unsigned int i);
void TimeInitial()
{ TMOD=0x10;
TH1=(65536-200)/256;
TL1=(65536-200)%256;
EA=1;
ET1=1;
TR1=1;
}
void Delay(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=0;j<125;j++)
;
}
void Display()
{
P1=dispbitcode[dispbuf[3]];
P20=0;P21=1; P22=1; P23=1;
Delay(10); P1=0x00;
P1=dispbitcode[dispbuf[2]];
P17=1;
P20=1; P21=0; P22=1; P23=1;
Delay(10); P1=0x00;
P1=dispbitcode[dispbuf[1]];
P20=1;P21=1;P22=0; P23=1;
Delay(10); P1=0x00;
P1=dispbitcode[dispbuf[0]];
P20=1;P21=1;P22=1;P23=0;
Delay(10); P1=0x00;
}
void main()
{
TimeInitial();
while(1)
{
P34=0;
P35=0;
P36=0;
ST=0;
while(EOC==1);//查询转换结束
{
OE=1;
getdata=P0;
OE=0;
temp=getdata*1.0/255*500;
dispbuf[0]=temp%10;
dispbuf[1]=temp/10%10;
dispbuf[2]=temp/100%10;
dispbuf[3]=temp/1000;
Display();
ST=0;
OE=0;
ST=1;
}
}
}
void t1(void) interrupt 3 using 0
{
TH1=(65536-200)/256;
TL1=(65536-200)%256;
CLK=~CLK;
}
6 系统仿真及调试
首先采用Keil uVision3编译器进行源程序编译及仿真调试,调试好程序后将目标
文件导入Proteus进行软件调试。

调试的主要任务是排查错误,错误主要包括逻辑错误
和功能错误,这些错误有些事显性的,而有些事隐形的。

可以通过仿真开发系统来发
现并逐步改正。

在Proteus ISIS编辑窗口中单击开始仿真按钮,4位LED数码管显示相应的电压值。

当开始调试,滑动变阻器RV1的阻值调至最小位置时,LED显示0.000,正确显示数值;
把RV1调至中间位置时,LED显示2.476,同样正确读出数据;当把RV1阻值调至最大
位置时,LED显示4.972,正确读出数据。

证明该简易数字电压表合格。

感想:
这是由程老师任教的《测控电路》课程的大作业,我的设计题目——简易数字电压表。

经过一个星期的努力,我们基本上按要求完成了该次任务。

在设计过程中,我们以实现系统的电路简单,功能完善,使用快捷为目的进行设计。

但是由于一些方面条件的限制,所设计的方案仍然存在一些不足(题目中要求使用ADC0809转换器在Proteus里面不能进行仿真,我们最后选择了ADC0808型转换器)),亟待改进。

因为第一次接触单片机类的设计,在设计过程中叶出现了一些问题,之前自己学习
的专业知识掌握的不够好,对电路的理解不是很透彻,设计的电路布局布线不是非常合理,理论联系实际的能力还有待加强。

由于ADC0809在Proteus里面不能进行仿真,在
转换器的选用时因为不熟悉元件我们走了很多弯路,耽误了整个设计的进程。

还有其他
一些方面的不足,都有待在以后的学习设计中进行改进。

通过实践,我对C语言和单片机有了更进一步的认识和理解,并且学会了Proteus和Keil软件的基本使用,掌握了从器件的需求、功能模块的划分、原理图的设计和绘制、电路图仿真、程序设计及其仿真调试的流程,积累了硬件设计的经验。

在此还要衷心感谢各位老师的指导及同学和组员给予的帮助,我会继续努力!。

相关文档
最新文档