多通道数据采集系统的课程设计报告Word格式文档下载.docx
《多通道数据采集系统的课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《多通道数据采集系统的课程设计报告Word格式文档下载.docx(24页珍藏版)》请在冰点文库上搜索。
兼容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
当HD7279A收到该指令后,将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。
执行该指令后,芯片所处的状态与系统上电后所处的状态一样。
(2).左移指令A1H
例如,原显示为:
4
2
5
L
P
3
9
其中第2位‘3’和第4位‘L’为闪烁显示。
执行了左移指令后,显示变为:
第2位‘9’和第4位‘P’为闪烁显示。
(3).右移指令A0H
与左移指令类似,但所做移动为自左向右移动,移动后,最左边一位为空
B.带有数据的指令
(1).下载数据且按方式0译码
a2
a1
a0
DP
X
d3
d2
d1
d0
命令由二字节组成,前半部分为指令,其中a2,a1,a0为位地址。
d0-d3为数据,收到此指令时,按以下规则进行译码。
小数点的显示由DP位控制:
DP=1时,小数点显示,DP=0时,小数点不显示。
(2).下载数据且按方式1译码
此指令与上一条指令其本相同,所不同的是译码方式。
(3).下载数据但不译码
A
B
C
D
E
F
G
其中,a2,a1,a0为位地址,A-G和DP为显示数据,分别对应7段LED数码管的各段。
当相应的数据位为‘1’时,该段点亮,否则不亮。
此指令灵活,通过造字形表,可以显示用户所需的字符。
(4).闪烁控制88H
d8
d7
d6
d5
d4
此命令控制各个数码管的闪烁属性,d1—d8分别对应数码管1-8。
0=闪烁,1=不闪烁。
开机后,缺省的状态为各位均不闪烁。
(5).读键盘数据指令15H
该指令从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
ZHUAN:
CLRA
SETBP1.7
MOVR0,#DBUF
MOVDPH,#02fH;
A/D
MOVDPL,R0
NOP
MOVX@DPTR,A;
启动转换
JNBP1.7,$
MOVXA,@DPTR;
读入结果
MOVR7,A
MOVADHEX,A
CALLMUL500;
ADHEX*500/256
CALLHB2;
转换成bcd
CALLTODISP;
拆开显示
CALLDISPLAY
CALLDELAY2S
RET
DISPLAY:
ANLP2,#00H;
CS7279有效
MOVDATA_OUT,#10100100B;
A4H,复位命令
CALLSEND
MOVDATA_OUT,#11001000B;
译码方式0,0位显示
MOVDATA_OUT,DBUF
CALLSEND
MOVDATA_OUT,#11001001B;
译码方式0,1位显示
MOVDATA_OUT,DBUF+1
MOVDATA_OUT,#11001010B;
译码方式0,2位显示
MOVDATA_OUT,DBUF+2
MOVDATA_OUT,#11001110B;
译码方式0,5位显示通道号
MOVDATA_OUT,R0
MOVP2,#0FFH;
CS7279无效
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
DJNZBIT_COUNT,SEND_LOOP
CLRDAT
DELAY:
MOVTIMER,#4
AA0:
MOVTIMER1,#0
AA1:
MOVTIMER2,#0
AA2:
DJNZTIMER2,AA2
DJNZTIMER1,AA1
DJNZTIMER,AA0
/*功能:
单字节二进制无符号数乘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
RLCA
MOVR4,A
CLRC
MOVA,R6
SUBBA,#80H
JCRETURN
MOVA,R5
ADDA,#1
MOVR5,A
MOVA,R4
ADDCA,#0
MOVR4,A
RETURN:
RET
双字节十六进制整数转换成双字节BCD码整数
待转换的双字节十六进制整数在R6、R7中。
转换后的三字节BCD码整数在R3、R4、R5中。
HB2:
CLRA;
BCD码初始化
MOVR3,A
MOVR4,A
MOVR5,A
MOVR2,#10H;
转换双字节十六进制整数
HB3:
MOVA,R7;
从高端移出待转换数的一位到CY中
RLCA
MOVA,R6
MOVA,R5;
bcd码带进位自身相加,相当于乘2
ADDCA,R5
DAA;
十进制调整
ADDCA,R4
DAA
MOVA,R3
ADDCA,R3
MOVR3,A;
双字节十六进制数的万位数不超过6,不用调整
DJNZR2,HB3;
处理完16bit
RET
TODISP:
ORLA,#80H
MOVDBUF+2,A
SWAPA
ANLA,#0FH
MOVDBUF+1,A
MOVDBUF,A
/*中断服务程序*/
ITROU:
ANLP2,#00H;
MOVDATA_OUT,#15H;
送读键盘指令
LCALLRESE
LCALLZHUAN1
RETI
/*读键盘程序*/
RESE:
MOV28H,#0
MOVR2,#08H
SETBDAT
ACALLLONG_DELAY
R_LOOP:
SETBCLK
ACALLSHORT_DELAY
MOVA,28H
MOV028H,A
MOVC,DAT
MOV