多通道数据采集系统课程设计报告.docx
《多通道数据采集系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《多通道数据采集系统课程设计报告.docx(24页珍藏版)》请在冰豆网上搜索。
多通道数据采集系统课程设计报告
多通道数据采集系统的课程设计报告
姓名:
_________
学号:
___________
班级:
___________
指导老师:
_______
授课老师:
_______
时间:
2014年1月14日
摘要......................................
1.设计内容与要求..........................
2.系统分析................................
3.硬件设计................................
4.关键模块设计与分析......................
4.1.0809数据转换模块.....................
4.2.7279显示模块.........................
4.3.7279键盘模块.........................
5.实验电路................................
6.系统流程图..............................
7.实验感想................................
8.参考文献................................
9.程序代码................................
摘要
模数转换器即A/D转换器或简称ADC,通常是一个模拟信号转变成数字信号的电子元件。
模数转换器是工业测量和控制等领域中的重要器件。
按设计架构将它们分为5种基本的类型:
Sigma-del型、ta型、逐次逼近型、子范围型、管线型。
在这5种类型ADC中,逐次逼近型应用广泛高性价比和低功耗等优点是它在直流和低频信号的测量中有着较为突出的表现。
本文探讨了逐次逼近型ADC0809的工作原理及其特性并结合AT80C52单片机介绍了逐次逼近型ADC0809在工程中的实际应用。
Abstract:
ADCA/DconverterorADC,usuallyreferstoananalogsignalintoadigitalsignaloftheelectronicelement.ADCistheindustrialmeasurementandcontrolinareassuchasanimportantdevicein.Accordingtothedesignstructuretodividetheminto5basictypes:
TypeSigma-delta,Successiveapproximationtype,Linetype.Inthese5typesofADC,successiveapproximationadvantagesmakeitinDCandlowfrequencysignalmeasurementhasamoreprominentperformance.ThispaperdiscussesthesuccessiveapproximationADC0809workprincipleandcharacteristicsofAT89C52singlechipmicrocomputerisintroducedcombinedwithsuccessiveapproximationADC0809applicationinpracticalengineering.
3硬件系统设计
3.1AT89C52单片机简介
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
兼容MCS52指令系统·8k可反复擦写(>1000次)FlashROM
(1.)32个双向I/O口,256x8bit内部RAM
(2.)3个16位可编程定时/计数器中断
(3.)时钟频率0-24MHz
(4.)2个串行中断,可编程UART串行通道
(5.)2个外部中断源,共6个中断源
(6.)2个读写中断口线,3级加密位
(7.)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能
AT89C52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
AT89C52编程方法如下:
1.在地址线上加上要编程单元的地址信号。
2.在数据线上加上要写入的数据字节。
3.激活相应的控制信号。
4.在高电压编程方式时,将EA/Vpp端加上+12V编程电压。
5.每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。
每个字节写入周期是自身定时的,通常约为1.5ms。
重复1—5步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。
3.2ADC0809模数转换芯片
实验使用ADC00809模数转换器,ADC0809是8通道8位CMOS逐次逼近式A/D转换芯片。
片内有模拟量通道选择开关及相应的通道锁存、译码电路,A/D转换后的数据由三态锁器输出。
由于片内没有时钟需外接时钟信号。
芯片的引脚如图5-1,各引脚功能如下:
IN0~IN7:
八路模拟信号输入端。
ADD-A、ADD-B、ADD-C:
三位地址码输入端。
CLOCK:
外部时钟输入端。
CLOCK输入频率范围在10-1280KHz,典型值为640KHz,此时A/D转换时间为100μS。
51单片机ALE直接或分频后可与CLOCK相连。
本实验CLOCK信号由CPLDLattice3128分频产生(12MHz晶振12分频)。
D0~D7:
数字量输出端。
OE(ENABLE):
A/D转换结果输出允许端。
当OE为高电平时,允许A/D转换结果从D0-D7输出。
ALE:
地址锁存允许信号输入端。
八路模拟通道地址由A、B、C输入,在ALE信号有效时将地址锁存。
START:
启动A/D转换信号输入端。
当START端输入一个正脉冲时,将进行A/D转换。
EOC:
A/D转换结束信号输出端。
当A/D转换结束后,EOC输出高电平。
Vref(+)、Vref(-):
正负基准电压输入端。
基准正电压的典型值为+5V。
图1.2ADC0809时序图
3.2HD7279A芯片介绍
HD7279A是一片具串行接口的,可同时驱动8位共阴式数码管的智能显示驱动芯片,该芯片同时还可以连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能。
1.主要特性
(1).串行接口,无需外围元件可直接驱动LED。
(2).各位独立控制译码/不译码及消隐和闪烁属性。
(3).(循环)左移/(循环)右移指令。
(4).具有段寻址指令,方便控制独立LED。
(5).64键键盘控制器,内含去抖动电路。
2.引脚说明:
VDD:
正电源VSS:
地
CS:
片选CLK:
时钟输入端
DATA:
串行数据输入/输出端CLK0:
振荡输出端
KEY:
按键有效输出端RES:
复位端
SG-SA:
段g—段a驱动输出
DP:
小数点驱动输出DIG0-7:
数位0-7驱动输出
RC:
RC振荡器连接端
3.HD7279A硬件电路:
注意:
(1).HD7279A应连接共阴式数码管。
(2).应用中,无需用到的键盘和数码管可以不连接。
(3).应用中,串入DP及SA—SG连接的8只电阻为200欧。
(4).应用中,8只下拉电阻和8只键盘连接位选线DIG0-DIG7的电阻,应遵从一定的比例关系,典型值为10倍,下拉电阻的取值范围是10K—100K,位选电阻的取值围是1K—10K。
(5).HD7279A需要一外接的RC振荡电路以供系统工作,其典型值分别为R=1.5KΩ,C=15pF。
(6).HD7279A的RESET复位端在一般应用情况下,可以直接与正电源连接,在需要较高可靠性的情况下,可以连接一外部的复位电路,或直接由MCU(单片机)控制。
在上电或RESET端由低电平变为高电平后,HD7279A大约需要经过18-25MS的时间才会进入正常工作状态。
4.控制指令
HD7279A的控制指令分为二大类——纯指令和带有数据的指令。
主要控制指令如下:
A.纯指令
(1).复位(清除)指令A4H
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
0
1
0
0
当HD7279A收到该指令后,将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。
执行该指令后,芯片所处的状态与系统上电后所处的状态一样。
(2).左移指令A1H
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
0
0
0
1
例如,原显示为:
4
2
5
2
L
P
3
9
其中第2位‘3’和第4位‘L’为闪烁显示。
执行了左移指令后,显示变为:
2
5
2
L
P
3
9
第2位‘9’和第4位‘P’为闪烁显示。
(3).右移指令A0H
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
0
0
0
0
与左移指令类似,但所做移动为自左向右移动,移动后,最左边一位为空
B.带有数据的指令
(1).下载数据且按方式0译码
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
1
0
0
0
0
a2
a1
a0
DP
X
X
X
d3
d2
d1
d0
命令由二字节组成,前半部分为指令,其中a2,a1,a0为位地址。
d0-d3为数据,收到此指令时,按以下规则进行译码。
小数点的显示由DP位控制:
DP=1时,小数点显示,DP=0时,小数点不显示。
(2).下载数据且按方式1译码
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
1
1
0
0
1
a2
a1
a0
DP
X
X
X
d3
d2
d1
d0
此指令与上一条指令其本相同,所不同的是译码方式。
(3).下载数据但不译码
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
1
0
0
1
0
a2
a1
a0
DP
A
B
C
D
E
F
G
其中,a2,a1,a0为位地址,A-G和DP为显示数据,分别对应7段LED数码管的各段。
当相应的数据位为‘1’时,该段点亮,否则不亮。
此指令灵活,通过造字形表,可以显示用户所需的字符。
(4).闪烁控制88H
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
1
0
0
0
1
0
0
0
d8
d7
d6
d5
d4
d3
d2
d1
此命令控制各个数码管的闪烁属性,d1—d8分别对应数码管1-8。
0=闪烁,1=不闪烁。
开机后,缺省的状态为各位均不闪烁。
(5).读键盘数据指令15H
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
1
0
1
0
1
d7
d6
d5
d4
d3
d2
d1
d0
该指令从HD7279A读出当前的按键代码。
前一个字节015H为指令代码,而后一个字节d0-d7则为HD7279A返回的按键代码,其范围是00H-3FH(无键按下时为FFH)。
当HD7279A检测到有效的按键时,KEY引脚从高电平变为低电平,并一直保持到按键结束。
在此期间,如果HD7279A接收到‘读键盘数据指令’,则输出当前按键的键盘‘码;如果在收到‘读键盘指令’时没有有效按键,HD7‘79A将输出FFH。
5.串行接口的时序图。
A、HD7279A的指令结构类型:
(1)、不带数据的纯指令,指令的宽度为8个BIT。
即微处理器需发送8个CLK脉冲。
(2)、带有数据的指令,宽度为16个BIT,即微处理器需发送16个CLK脉冲。
(3)、读取键盘数据指令,宽度为16个BIT,前8个为微处理器发送到HD7279A的指令,后8个BIT为HD7279A返回的键盘代码。
执行此指令时,HD7279A的DATA端在第9个CLK脉冲的上升沿变为输出状态,并与第16个脉冲的下降沿恢复为输入状态,等待接收下一个指令。
B、串行接口的时序图:
(1).纯指令
T1=50us;T2=8us;T3=8us
(2).带数据指令
T4=25us
(3).读键盘指令
T5=25us;T6=8us;T7=8us
5、实验电路
图1.3ADC0809模拟转换电路
数字显示电路部分电路
7.实验体会
在本次课程设计中,我们通过专业课的学习,进一步深入了解了51单片机的内部结构及工作原理,把理论与实际相结合,使我对单片机的学习产生了更浓厚的兴趣。
其中,在ADC0809以及HD7279A的学习中,提高了查阅资料、分析资料的能力。
8.参考资料
单片微型计算机原理、接口及应用(第3版)北京邮电大学出版社徐惠民安德宁丁玉珍
单片机原理实验指导书丁易新编
ADHEXDATA050H
DBUFDATA060H
BIT_COUNTDATA070H
TIMERDATA072H
TIMER1DATA073H
TIMER2DATA074H
DATA_INDATA020H
DATA_OUTDATA021H
CLKBITP1.6
DATBITP1.7
ORG0000H
LJMPMAIN
ORG0003H
LJMPITROU
ORG0100H
MAIN:
CLRIT0;低电平触发,7279key接外中断0
SETBEX0;开外中断0
SETBEA;开总中断
MOVR0,#00
AAA:
LCALLZHUAN
INCR0
CJNER0,#6,AAA
LJMPMAIN
ZHUAN:
CLRA
SETBP1.7
MOVR0,#DBUF
MOVDPH,#02fH;A/D
MOVDPL,R0
NOP
NOP
NOP
MOVX@DPTR,A;启动转换
JNBP1.7,$
NOP
NOP
NOP
MOVXA,@DPTR;读入结果
NOP
NOP
NOP
MOVR7,A
MOVADHEX,A
CALLMUL500;ADHEX*500/256
CALLHB2;转换成bcd
CALLTODISP;拆开显示
NOP
CALLDISPLAY
CALLDELAY2S
RET
DISPLAY:
ANLP2,#00H;CS7279有效
MOVDATA_OUT,#10100100B;A4H,复位命令
CALLSEND
MOVDATA_OUT,#11001000B;译码方式0,0位显示
CALLSEND
MOVDATA_OUT,DBUF
CALLSEND
MOVDATA_OUT,#11001001B;译码方式0,1位显示
CALLSEND
MOVDATA_OUT,DBUF+1
CALLSEND
MOVDATA_OUT,#11001010B;译码方式0,2位显示
CALLSEND
MOVDATA_OUT,DBUF+2
CALLSEND
MOVDATA_OUT,#11001110B;译码方式0,5位显示通道号
CALLSEND
MOVDATA_OUT,R0
CALLSEND
MOVP2,#0FFH;CS7279无效
RET
SEND:
MOVBIT_COUNT,#8;发送字符子程序
ANLP2,#00H
CALLLONG_DELAY
SEND_LOOP:
MOVC,DATA_OUT.7
MOVDAT,C
SETBCLK
MOVA,DATA_OUT
RLA
MOVDATA_OUT,A
CALLSHORT_DELAY
CLRCLK
CALLSHORT_DELAY
DJNZBIT_COUNT,SEND_LOOP
CLRDAT
RET
DELAY:
MOVTIMER,#4
AA0:
MOVTIMER1,#0
AA1:
MOVTIMER2,#0
AA2:
DJNZTIMER2,AA2
DJNZTIMER1,AA1
DJNZTIMER,AA0
RET
/*功能:
单字节二进制无符号数乘500(1f4H=100H+0f4H)
入口条件:
被乘数在R7中。
;出口信息:
乘积在R4、R5、R6中(R6低八位)。
*/
MUL500:
MOVA,#0f4H;计算R3乘R7
MOVB,R7
MULAB
MOVR5,B;暂存部分积
MOVR6,A
MOVA,R7
ADDA,B
MOVR5,A
CLRA
RLCA
MOVR4,A
CLRC
MOVA,R6
SUBBA,#80H
JCRETURN
CLRC
MOVA,R5
ADDA,#1
MOVR5,A
MOVA,R4
ADDCA,#0
MOVR4,A
RETURN:
RET
/*功能:
双字节十六进制整数转换成双字节BCD码整数
入口条件:
待转换的双字节十六进制整数在R6、R7中。
出口信息:
转换后的三字节BCD码整数在R3、R4、R5中。
*/
HB2:
MOVA,R4
MOVR6,A
MOVA,R5
MOVR7,A
CLRA;BCD码初始化
MOVR3,A
MOVR4,A
MOVR5,A
MOVR2,#10H;转换双字节十六进制整数
HB3:
MOVA,R7;从高端移出待转换数的一位到CY中
RLCA
MOVR7,A
MOVA,R6
RLCA
MOVR6,A
MOVA,R5;bcd码带进位自身相加,相当于乘2
ADDCA,R5
DAA;十进制调整
MOVR5,A
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
MOVA,R3
ADDCA,R3
MOVR3,A;双字节十六进制数的万位数不超过6,不用调整
DJNZR2,HB3;处理完16bit
RET
TODISP:
MOVA,R4
ORLA,#80H
MOVDBUF+2,A
MOVA,R5
SWAPA
ANLA,#0FH
MOVDBUF+1,A
MOVA,R5
ANLA,#0FH
MOVDBUF,A
RET
/*中断服务程序*/
ITROU:
ANLP2,#00H;CS7279有效
MOVDATA_OUT,#15H;送读键盘指令
CALLSEND
LCALLRESE
MOVP2,#0FFH;CS7279无效
LCALLZHUAN1
RETI
/*读键盘程序*/
RESE:
MOV28H,#0
MOVR2,#08H
SETBDAT
ACALLLONG_DELAY
R_LOOP:
SETBCLK
ACALLSHORT_DELAY
MOVA,28H
RLA
MOV028H,A
MOVC,DAT
MOV