多路数据采集Word文档格式.docx
《多路数据采集Word文档格式.docx》由会员分享,可在线阅读,更多相关《多路数据采集Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
切换通道的实现是根据外部中断源来实现的。
本课题采用的是中断源INT1。
中断信号的产生,是通过按纽开关开关来做的。
将八路开关通过一个或非门,再与中断源INT1相连。
检测中断信号是通过软件来实现的。
一旦出现了中断信号,程序就会优先执行中断相关的程序。
第3章系统的硬件设计
单片机的选择
根据初步确定的方案,和满足设计的要求,本课题选用Inter公司生产的MCS—8051单片机。
它与其他单片机对比主要有如下优点:
1、片内程序存储器采用闪速存储器,使得程序写入更加方便;
2、它的体积小,会使整个硬件体积变小;
3、良好的性能保证了设计的成功。
MCS—51单片机的管脚及其功能
MCS单片机都采用40引脚的双列直插封装方式。
图3—1为引脚排列图,40条引脚说明如下:
1、主电源引脚Vss和Vcc
①Vss接地
②Vcc正常操作时为+5伏电源
2、外接晶振引脚XTAL1和XTAL2
①XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。
当采用外部振荡器时,此引脚接地。
②XTAL2内部振荡电路反相放大器的输出端。
是外接晶体的另一端。
当采用外部振荡器时,此引脚接外部振荡源。
3、控制或与其它电源复用引脚RST/VPD,ALE/
,
和
/Vpp
①RST/VPD当振荡器运行时,在此引脚上出现两个机器周期的高电平
(由低到高跳变),将使单片机复位
在Vcc掉电期间,此引脚可接图3—18051引脚排列图
上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。
②ALE/
正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE引脚以不变的频率(振荡器频率的
)周期性地发出正脉冲信号。
因此,它可用作对外输出的时钟,或用于定时目的。
但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲,ALE端可以驱动(吸收或输出电流)八个LSTTL电路。
对于EPROM型单片机,在EPROM编程期间,此引脚接收编程脉冲(
功能)。
③
外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,
在每个机器周期内两次有效。
同样可以驱动八LSTTL输入。
④
/Vpp、
/Vpp为内部程序存储器和外部程序存储器选择端。
当
/Vpp为高电平时,访问内部程序存储器,当
/Vpp为低电平时,则访问外部程序存储器。
对于EPROM型单片机,在EPROM编程期间,此引脚上加21伏EPROM编程电源(Vpp)。
4、输入/输出引脚-,-,-,-。
①P0口(-)是一个8位漏极开路型双向I/O口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。
②P1口(-)是一个带有内部提升电阻的8位准双向I/O口。
能驱动(吸收或输出电流)四个LSTTL负载。
。
③P2口(-)是一个带有内部提升电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。
P2口可以驱动(吸收或输出电流)四个LSTTL负载。
④P3口(-)是一个带有内部提升电阻的8位准双向I/O口。
P3口还用于第二功能请参看表2-1
表3-1P3口的第二功能
端口功能
第二功能
RXD---串行输入(数据接收)口
TXD---串行输出(数据发送)口
---外部中断0输入线
---外部中断1输入线
T0---定时器0外部输入
T1---定时器1外部输入
---外部数据存储器写选通信号输出
---外部数据存储器读选通信号输入
单片机端口的分配
表3—2单片机端口的分配
I/O端口分配
作用
方式
~~
接收A/D转换的数据
输入
送数据到锁存器中
输出
控制LED1的位选端
控制LED2的位选端
控制LED3的位选端
控制LED4的位选端
接收外部中断信号
时钟电路设计
单片机工作的时间基准是由时钟电路提供的。
在单片机XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。
电路中,电容器C1和电容器C2对振荡频率有微调的作用。
他们的值通常取30PF。
石英晶体取12MHZ。
其中的电路图如图3—2所示。
图3—2时钟电路
复位电路的设计
单片机的RST管脚为主机提供了一个外部复位信号输入端口。
复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。
单片机的复位方式由上电自动复位和手动复位两种。
电阻、电容器件的参考值为:
R1=200欧
R2=1000欧
C3=22UF
如图3—3
图3—3复位电路图
数据采集电路的设计
数据采集电路由A/D0809模数转换器、74LS373缓冲器、两个JK触发器组成。
模拟信号的采集是由A/D0809转换来负责的。
当他采集完数据之后向单片机发出信号,当单片机接收到该信号之后,就从A/D0809中获取。
具体采集的方式有三种:
一是查询,二是中断,三是延时等待。
本次采用延时等待。
具体的语句为:
MOV@DPTR,A
MOVA,@DPTR
显示电路的设计
LED介绍
单片机应用系统中,通常都需要进行人机对话。
这
包括人对应用系统的状态干预与数据输入,以及应用
系统向人们显示运行状态与运行结果等。
显示器、键盘电路就是用于完成人机对话活动的人机通道。
常用的LED数码管显示器由7个发光二极管组成7段LED显示器,其排列形状如图3—4所示。
此外Dp用于显示小数点。
通过7个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其他符号。
图3—4LED图
LED共有两种接法。
一种是共阴极;
一种是共阳极。
3.7.2LED的驱动电路
驱动电路有四个LED显示器、74LS244锁存器、8051单片机组成。
显示采用动态显示。
其中显示信号从8051单片机的P1口输出,经过74LS244锁存。
74LS的输入端口是与8051的P1口相连的。
它的输出端口是与4个LED显示器的段控位相连接的。
也就是说它控制着四个显示器的段码。
那么LED的位控制是由哪个端口控制的呢?
在设计中我采用的是用P2口的前四位来进行输出控制的。
图3—7显示电路
字型码的定义
由于系统LED显示使用的是共阴极的显示器,而显示器不能直接识别十进制和别的进制。
因此需要将数据转换为与十进制对应的数据来进行显示,如表3—3。
表3—3LED显示器十六进制数的字形代码
显示字符
共阴极段码
共阳极段码
共极段码
3FH
C0H
8
7FH
80H
1
06H
F9H
9
6FH
90H
2
5BH
A4H
A
77H
88H
3
4FH
B0H
b
7CH
83H
4
66H
99H
C
39H
C6H
5
6DH
92H
d
5EH
A1H
6
7DH
82H
E
79H
86H
7
07H
F8H
F
71H
8EH
在本课题中,它的对应码为:
3FH、06H5BH4FH66H6DH7DH07H7FH6FH
通道切换电路的设计
人们切换是通过按键来确定的,选择自己所要显示的通道。
选择信号的检查是通过8051的外部中断INT1来确定的。
其中八个按键与一个与非门相连,由与非门产生逻辑信号,送给INT1位置。
图形如下:
图3—8通道切换电路图
第4章系统的软件设计
4.1总程序流程图
4.2各子程序设计
4.2.1A/D转换子程序
TEST:
MOVR0,#70H;
定义采集数据存储器位置
MOVR5,#08;
通道循环参数
MOVDPTR,#0CFA0H;
数据指向端口地址
LOOP:
MOVX@DPTR,A
MOVR4,#8FH;
延时子程序
LOOP11:
DJNZR4,LOOP11
MOVR4,#0FH
LOOP22:
DJNZR4,LOOP22
MOVXA,@DPTR
MOV@R0,A;
把采集数据送到指定位置
INCR0;
移动存储位置
INCDPTR;
移动指针
MOV7BH,R5
DJNZR5,LOOP;
判定采集八通道
4.2.2八路开关选择控制子程序
LPP:
MOVA,P3;
采集开关信号
MOVR2,#0FFH;
初始化
RLA
PP:
RRA;
右移
INCR2
ANLA,#0EFH;
信号位置判定
CJNEA,#0,PP;
转移判定
MOVA,R2
MOV7BH,A;
数据采集通道号存储
ADDA,#70H;
数据地址传送
MOVR1,A
4.2.3二进制转换BCD码子程序
TUNBCD:
MOVA,@R1;
255/51=
MOVB,#51
DIVAB
MOV7AH,A;
个位数存储
MOVA,
CLRF0
SUBBA,#10
MULAB
MOVB,#51
JBF0,LOOP2
ADDA,#5
LOOP2:
MOV79H,A;
小数点后第一位
MOVA,B
SUBBA,#1AH
MOVF0,C
MOVA,#10
JBF0,LOOP3
LOOP3:
MOV78H,A;
小数点后第二位
RET
4.2.4单路显示控制子程序
DISP1:
MOVSP,#60H
LP:
MOVR5,#50H;
设置调用显示次数,使显示稳定
ACALLDIS;
调用显示模块
DJNZR5,LP
4.2.5八路循环显示控制子程序
DISP2:
MOVSP,#60H
MOVR5,#50;
设置调用显示次数,使显示稳定
ACALLDIS;
调用显示模块
DJNZR5,LP
MOVR6,#0F4H;
延时
DL1:
MOVR7,#0A9H
DL2:
DJNZR7,DL2
DJNZR6,DL1
INCR1
INC7BH;
通道信号送入寄存器
DJNZR3,XUNHUAN;
循环调用
4.2.6显示子程序
DIS:
MOVR0,#78H;
送入数据存储地址
MOVR4,#0FEH;
位扫描信号
MOVR2,#04H;
数据位数送入
DIS2:
MOVDPTR,#TAB;
数码管表首地址
MOVA,@R0
MOVCA,@A+DPTR;
对应字符调用
CJNER2,#2,QQ;
小数点处理
ADDA,#80H
QQ:
MOVDPTR,#0CFA8H;
采集数据地址
MOVA,R4;
采集位信号
MOVP1,A
LCALLDAY;
延时调用
INCR0;
地址移位
RLA;
位信号移位
MOVR4,A
DJNZR2,DIS2;
判断结束
RET
4.2.7延时子程序
DAY:
MOVR6,#04H
D1;
MOVR7,#248
D2:
NOP
NOP
DJNZR7,D2
DJNZR6,D1
第5章运行与调试
系统的调试和运行,先将编写好的程序写成源程序文件,然后经过汇编后生成目标文件,用仿真实验台进行调试。
(1)系统启动后,显示器处于数据循环采集状态。
从0通道到7通道循环显示数据。
具体显示数据结果如下:
0,1,2,3,4,5,6,7
(2)当切换按纽按下时,系统就响应相应的中断程序,显示出该单通道的数据。
如按下0按纽,就立即出现0
(3)当复位按键SA按下时,系统返回到初始状态。
第6章总结
经过将近两周的单片机课程设计,终于完成了我的多路数据采集系统的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟从这次设计中学到了不少的知识,高兴之余不得不深思呀!
在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。
在本次设计中,我认识最深的是硬件的作用和单片机在我们生活中的作用感。
其中对A/D0809的认识,7LS244的认识、单片机接口的认识。
在设计中,我翻阅了各方面的资料,从多方面查询他们的功能。
从其中我学到单片机接口的知识,和它对各类事情的控制。
同时也被它强大的微处理能力所震撼。
我想,随着社会的发展,单片机必将成为人类社会不可缺少的重要科技之一。
我们应该努力学习单片机知识,为社会作出贡献。
最后我要感谢含辛茹苦、默默支持我的指导老师们,特别要感谢周向红老师。
这两周以来,她不持辛苦,时时刻刻监督、指导着我,让我从其中学到了许多的知识。
真的很感谢她。
我今天的成功离不开老师的功劳。
我一定要在今后认真的学习来报答老师的栽培。
参考文献
1、《单片机应用系统设计》何立民编北航出版社
2、《单片机原理及应用》王迎旭主编机械工业出版社
3、《51系列单片机设计实例》楼然苗等编北航出版社
4、《51单片机应用系统开发典型实例》戴家等编中国电力出版社
5、《单片微型计算机原理及接口技术》陈光东等编
附录
A、系统原理图
B、程序清单
ORG0000H;
程序存放地址
MAIN:
MOVA,P2
JZMAIN1;
跳至MAIN1
MAIN2
MAIN1:
LCALLTEST;
调用子程序TEST
MOVP3,#0FFH;
给P3口输入“1”
LCALLLPP;
调用子程序LPP
LCALLTUNBCD;
调用子程序TUNBCD
LCALLDISP1;
调用子程序DISP1
LJMPMAIN1;
跳转至MAIN1
MAIN2:
LCALLTEST
MOVR3,#08H
MOV7BH,#00H
MOVR1,#70H
XUNHUAN:
LCALLTUNBCD;
LCALLDISP2;
调用子程序DISP2
LJMPMAIN2;
跳转至MAIN2
MOVA,P3
MOVR2,#0FFH;
给R2口置“1”
RLA;
A中内容左循环
RRA;
A中内容右循环
INCR2;
R2中内容加1
ANLA,#0EFH
CJNEA,#0,PP
MOV7BH,A
ADDA,#70H
RET
定义采集数据存储器位置
MOVR5,#08;
通道循环参数
MOVDPTR,#0CFA0H;
数据指向端口地址
MOVR4,#8FH;
延时子程序
DJNZR4,LOOP11
MOVR4,#0FH
MOVXA,@DPTR
MOV@R0,A;
把采集数据送到指定位置
INCR0;
INCDPTR;
DJNZR5,LOOP;
判定采集八通道
MOVA,@R1;
255/51=
MOVB,#51
MOV7AH,A;
个位数存储位置
MOV79H,A;
小数点后第一位
MOV78H,A;
小数点后第二位
MOVR5,#50H;
调用显示模块
MOVSP,#60H
LP:
MOVR5,#50;
MOVR6,#0F4H;
延时
INC7BH;
DJNZR3,XUNHUAN;
循环调用
MOVR0,#78H;
MOVR4,#0FEH;
MOVR2,#04H;
数据位数送入
MOVDPTR,#TAB;
MOVCA,@A+DPTR;
CJNER2,#2,QQ;
ADDA,#80H
QQ:
MOVX@DPTR,A
MOVA,R4;
MOVP1,A
LCALLDAY弹;
INCR0;
地址移位
RLA
DJNZR2,DIS2;
判断结束
DAY:
MOVR6,#04H;
延时
D1:
MOVR7,#248
NOP
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;
数码表
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
END