多通道数据采集系统的课程设计报告.docx
《多通道数据采集系统的课程设计报告.docx》由会员分享,可在线阅读,更多相关《多通道数据采集系统的课程设计报告.docx(15页珍藏版)》请在冰点文库上搜索。
![多通道数据采集系统的课程设计报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/21/d58530a7-0a6a-4e29-9ff4-73301b0f4969/d58530a7-0a6a-4e29-9ff4-73301b0f49691.gif)
多通道数据采集系统的课程设计报告
多通道数据采集系统的课程设计报告
姓名:
学号:
班级:
指导老师:
授课老师:
1.1摘要...............................2
1.2系统分析...........................3
1.3系统设计...........................3
1.4程序代码...........................8
2.1实验感想..........................12
2.2参考文献..........................12
1.1摘要
不论对于何种测控系统,数据采集传输模块都是重中之重。
本文主要介绍了基于80C51单片机的多通道数据采集系统,该采集系统以80C51单片机为核心,通过芯片ADC0809,采用查询方式,采集该芯片的模拟量输入信号,并通过智能显示芯片HD7295A,控制驱动8位共阴数码管,将单片机采集到的数据显示出来。
1.2系统分析
在设计系统时首先完成单片机基本电路的设计,包括单片机的复位电路与晶振电路。
再以单片机的P0口作为数据总线,接入ADC0809的数字量输出引脚,而外部模拟量输入信号则通过ADC0809的输入引脚接入单片机,单片机则通过位选信号与读写选通信号,经过与非门电路对其进行连接控制。
同时单片机以PI口的某些引脚作为控制信号与7279相连,用来驱动控制8位共阴数码管,通过软件设将读入的数据显示出来。
在连接电路完成程序设计时,要注意单片机各部分的时序,从而赋予各部分合理的初始化命令。
其系统的模块组成部分如下:
ADC0809
数据
转换
模块
8051
单
片
机
复位
模块
7295
驱动
显示
模块
撤消修改
1.3系统设计
基于单片机的多通道数据采集系统其设计要分为两部分组成,一是硬件电路设计,二是软件设计,故其系统设计分两部分分别介绍。
但是在试验时,我们是利用试验箱进行试验的,故单片机基本电路在实验箱上已被设计好,在实验时仅须注意数码管显示电路与AD转换电路即可。
A.硬件电路设计:
数码管显示电路是利用7295A芯片直接与单片机相连,当接收到单片机的控制指令时,直接驱动8位共阴数码管,显示单片机发送的数据。
HD7279A是一片具有串行接口,可同时驱动8位共阴数码管(或64只独立LED)的智能显示驱动芯片,该芯片还可同时连接多达64键的键盘矩阵。
HD7279A内部含译码器,可直接接受16进制码。
(1)其具体连接电路图如下所示:
注意在实验时,要将系统各跳线器接在初始设置状态(参见附录)(JT40打在左边,JD18打在右边),J2的P3.0,P3.1打在右边。
这样7279才能准确驱动数码管显示单片机发送的数据。
其工作时时序电路如下所示:
(2)AD转换电路:
AD转换电路是利用芯片ADC0809,将其与单片机直接相连。
单片机直接读取经过其转换的数字量信号,再将其发送到7279芯片,驱动数码管直接显示单片机输出的信号。
实验ADC0809电路如下图所示。
实验采用外设与存储器同一编址,在使用中可直接将外设当作数据存储器访问。
第0路ADC地址为2f00H(即:
CSAD信号对应A15~A3为0010111100000)。
EOC(A/D转换结束信号输出端)取反后接单片机P1.7,若采用查询方式完成模/数转换,只需查询P1.7即可。
本实验CLOCK信号由CPLDLattice3128分频产生(12MHz晶振12分频)。
其工作时时序电路如下所示:
B.软件设计:
其软件设计部分主要就是数码管显示部分和AD转换部分的程序设计。
(1)数码管显示程序:
数码管显示电路的时序,其程序流程图为:
程序代码如下:
CLKBITP1.6
DATBITP1.7
CSBITP2.7
ORG000H
JMPSTART
ORG100H
START:
MOVSP,#2FH;定义堆栈
MOVP1,#11011011B;I/O口初始化
MOVR7,#50
START_DELAY:
MOVR6,#255
START_DELAY1:
DJNZR6,START_DELAY1
DJNZR7,START_DELAY
MOVA,#10100100B;发复位指令
CALLSEND
SETBCS
XIANSHI:
MOVA,#10000010b
CALLSEND
MOVA,#00000111b
CALLSEND
MOVA,#10000001b
CALLSEND
MOVA,#00001000b
CALLSEND
MOVA,#10000000b
CALLSEND
MOVA,#00001001b
CALLSEND
hh:
JMPXIANSHI
SEND:
MOVR0,#8
CLRCS
CALLLONG_DELAY
SEND_LOOP:
MOVC,ACC.7
MOVDAT,C
SETBCLK
RLA
CALLSHORT_DELAY
CLRCLK
CALLSHORT_DELAY
DJNZR0,SEND_LOOP
CLRDAT
RET
LONG_DELAY:
MOVR7,#80
DELAY_LOOP:
DJNZR7,DELAY_LOOP
RET
SHORT_DELAY:
MOVR7,#6
SHORT_LP:
DJNZR7,SHORT_LP
RET
END
(2)AD转换程序:
由AD转换的时序电路,其软件流程图如下:
1.4程序代码
ADHEXDATA050H
DBUFDATA060H
BIT_COUNTDATA070H
TIMERDATA072H
TIMER1DATA073H
TIMER2DATA074H
DATA_INDATA020H
DATA_OUTDATA021H
CLKBITP1.6
DATBITP1.7
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
clra
setbp1.7
MOVR0,#DBUF
MOVDPTR,#02f00H;A/D
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
CALLdelay
LJMPMAIN
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
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
LONG_DELAY:
MOVTIMER,#150;延时约200US
DELAY_LOOP:
DJNZTIMER,DELAY_LOOP
RET
SHORT_DELAY:
MOVTIMER,#20;延时约20US
SHORT_LP:
DJNZTIMER,SHORT_LP
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
END
2.1实验感想
通过这次的单片机课程设计,让我我对于51单片机以及汇编语言有了更进一步的了解。
可是也有一些反思,最主要的是汇编语言的编程,习惯了编写C语言,才发现汇编语言编写稍复杂的程序是多么的费劲。
当然汇编也有优点。
2.2参考文献
1.徐惠民安德宁丁玉珍等单片微型计算机原理、接口及应用北京邮电大学出版社2007年8月第三版
2.单片机原理实验指导书2012(含课程设计)安徽工业大学丁易新