第1章课题概述1.1课题的设计内容与要求本课题要求设计一个以单片机为核心的多路数据采集系统。
本系统八路模拟量输入,范围为0---5V。
它要求对八个通道的模拟量进行巡回采样,再将每个采集到的数据经过A/D工程量转换后,以十进制数在LED显示器上显示,并能够通过键盘操作切换显示不同通道的采样值。
在LED显示器上,我们可以看到具体的数字电压——精确到百分位,具体的通道。
在键盘切换时,切换相应的通道,就应该显示该通道的数值。
比如,选择了4通道,显示屏上显示出4, 3.45V。
1.2课题的设计目的和意义随着时代的时代的进步,单片机已经普及到我们的生活,工作,科研各个领域,已经成为一项交为成熟的技术。
同时随着人们的生活水平的提高,单片机控制无疑是人们追求的目标之一,它所给人们带来的方便是不可否定的。
因此,它吸引了广大的从事电子设计人员的学习。
将计算机应用于实时控制、在线动态测量等系统时,其控制或者测量的对象往往是一些连续变化的模拟量,如温度、压力、流量、位移、速度以及连续变化的电量。
当计算机与外部设备直接交流有关物理量方面的信息时,通常需要将检测到的模拟量信号转换成数字信号交给计算机处理,而计算机输出的数字信号又需要转换成模拟信号以便对执行机构进行控制。
本课题的设计就是要对模拟量转变为数字量的研究。
熟练掌握模拟量和数字量之间的转换,进而了解工程中是如何运用单片机进行工程控制。
它还可以帮助我们进一步检验和学习单片机,单片机的编程,LED的输出控制。
第2章总体设计方案2.1 总体思路由于本课题是多路数据的采集,可以寻找传感器(如温度传感器,压敏传感器)来充当模拟信号,将此信号进行放大,滤波,采样保持,经过模/数转换,得到数字信号,将其数字信号送给单片机。
其中模数转换芯片可以选用A/D0809芯片。
单片机把采集到的数据进行相关的处理,如二进制转换为十进制,个位、小数位的显示等。
这些都是通过软件来设计的。
单片机把处理好的数据送给地址锁存,然后由显示器显示。
2.2 单片机概述和主要功能单片机是将CPU,RAM、ROM、定时器/计数器、输入/输出接口电路、中断、串行通信接口等主要计算机部件集成在一块大规模集成电路芯片上,组成单片微型计算机。
它有两种基本的结构形式:一种是普林斯顿;一种是哈副结构。
它的体积小、功能全、价格低等特点赢得了广泛的使用。
单片机的种类也很多。
有ATMEL的ATMEL89系列;INTEL公司的MCS—51;Philips电子公司的MCS-51;WinBond公司的Mcs-51;Motorola 生产的MC6805系列等等。
各个公司生产的单片机互不相融,都有自己的特点。
其中要以Inter公司生产的MCS-51应用得最多。
本课题实现的功能是:(1)能够将采集到的模拟信号;(2)能够进行模/数转换;(3)能够进行十进制数的显示;(4)有选择通道和循环显示通道的功能。
2.3 总体设计框图2.4 系统工作原理以单片机为核心,通过各种控制电路进行控制。
在外设电路中,设置了时钟电路和复位电路。
外围电路将采集到的数据经过A/D转换后,送给单片机P0口。
单片机将P0口中接收到的数据进行存储,整理、变换后,从P1口送出。
送出的数据经过锁存芯片进行锁存,最后由LED显示。
LED至少需要4个。
切换通道的实现是根据外部中断源来实现的。
本课题采用的是中断源INT1。
中断信号的产生,是通过按纽开关开关来做的。
将八路开关通过一个或非门,再与中断源INT1相连。
检测中断信号是通过软件来实现的。
一旦出现了中断信号,程序就会优先执行中断相关的程序。
第3章 系统的硬件设计3.1 单片机的选择根据初步确定的方案,和满足设计的要求,本课题选用Inter 公司生产的MCS —8051单片机。
它与其他单片机对比主要有如下优点:1、片内程序存储器采用闪速存储器,使得程序写入更加方便;2、它的体积小,会使整个硬件体积变小;3、良好的性能保证了设计的成功。
3.2 MCS —51单片机的管脚及其功能MCS 单片机都采用40引脚的双列直插封装方式。
图3—1为引脚排列图, 40条引脚说明如下:1、主电源引脚Vss 和Vcc ① Vss 接地 ② Vcc 正常操作时为+5伏电源2、外接晶振引脚XTAL1和XTAL2 ① XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。
当采用外部振荡器时,此引脚接地。
② XTAL2内部振荡电路反相放大器的输出端。
是外接晶体的另一端。
当采用外部振荡器时,此引脚接外部振荡源。
3、控制或与其它电源复用引脚RST/VPD ,ALE/PROG ,PSEN 和EA /Vpp① RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位 在Vcc 掉电期间,此引脚可接 图3—1 8051引脚排列图P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD 9RXD P3.010TXD P3.111INT0 P3.212INT1 P3.313T0 P3.414T1 P3.515WR P3.616RD P3.717XTAL218XTAL119VSS 20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/VPP 31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC 408031 8051 8751上备用电源,由VPD 向内部提供备用电源,以保持内部RAM 中的数据。
② ALE/PROG 正常操作时为ALE 功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE 引脚以不变的频率(振荡器频率的61)周期性地发出正脉冲信号。
因此,它可用作对外输出的时钟,或用于定时目的。
但要注意,每当访问外部数据存储器时,将跳过一个ALE 脉冲,ALE 端可以驱动(吸收或输出电流)八个LSTTL 电路。
对于EPROM 型单片机,在EPROM 编程期间,此引脚接收编程脉冲(PROG 功能)。
③ PSEN 外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,PSEN 在每个机器周期内两次有效。
PSEN 同样可以驱动八LSTTL 输入。
④ EA /Vpp 、 EA /Vpp 为内部程序存储器和外部程序存储器选择端。
当EA /Vpp 为高电平时,访问内部程序存储器,当EA /Vpp 为低电平时,则访问外部程序存储器。
对于EPROM 型单片机,在EPROM 编程期间,此引脚上加21伏EPROM 编程电源(Vpp )。
4、输入/输出引脚P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。
① P0口(P0.0 - P0.7)是一个8位漏极开路型双向I/O 口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL 负载。
② P1口(P1.0 - P1.7)是一个带有内部提升电阻的8位准双向I/O 口。
能驱动(吸收或输出电流)四个LSTTL 负载。
③ P2口(P2.0 - P2.7)是一个带有内部提升电阻的8位准双向I/O 口,在访问外部存储器时,它输出高8位地址。
P2口可以驱动(吸收或输出电流)四个LSTTL 负载。
④ P3口(P3.0 - P3.7)是一个带有内部提升电阻的8位准双向I/O 口。
能驱动(吸收或输出电流)四个LSTTL 负载。
P3口还用于第二功能请参看表2-1表 3-1 P3口的第二功能3.3 单片机端口的分配表3—2 单片机端口的分配3.4 时钟电路设计单片机工作的时间基准是由时钟电路提供的。
在单片机XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。
电路中,电容器C1和电容器C2对振荡频率有微调的作用。
他们的值通常取30PF。
石英晶体取12MHZ。
其中的电路图如图3—2所示。
图3—2 时钟电路3.5 复位电路的设计单片机的RST管脚为主机提供了一个外部复位信号输入端口。
复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。
单片机的复位方式由上电自动复位和手动复位两种。
电阻、电容器件的参考值为:R1=200欧R2=1000欧C3=22U F如图3—3图3—3复位电路图3.6 数据采集电路的设计数据采集电路由A/D0809模数转换器、74LS373缓冲器、两个JK触发器组成。
模拟信号的采集是由A/D0809转换来负责的。
当他采集完数据之后向单片机发出信号,当单片机接收到该信号之后,就从A/D0809中获取。
具体采集的方式有三种:一是查询,二是中断,三是延时等待。
本次采用延时等待。
具体的语句为:MOV @DPTR,AMOV A,@DPTR3.7 显示电路的设计3.7.1 LED介绍单片机应用系统中,通常都需要进行人机对话。
这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果等。
显示器、键盘电路就是用于完成人机对话活动的人机通道。
常用的LED数码管显示器由7个发光二极管组成7段LED显示器,其排列形状如图3—4 所示。
此外Dp用于显示小数点。
通过7个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其他符号。
图3—4 LED图LED共有两种接法。
一种是共阴极;一种是共阳极。
3.7.2 LED的驱动电路驱动电路有四个LED显示器、74LS244锁存器、8051单片机组成。
显示采用动态显示。
其中显示信号从8051单片机的P1口输出,经过74LS244锁存。
74LS的输入端口是与8051的P1口相连的。
它的输出端口是与4个LED显示器的段控位相连接的。
也就是说它控制着四个显示器的段码。
那么LED的位控制是由哪个端口控制的呢?在设计中我采用的是用P2口的前四位来进行输出控制的。
图3—7 显示电路3.7.3字型码的定义由于系统LED显示使用的是共阴极的显示器,而显示器不能直接识别十进制和别的进制。
因此需要将数据转换为与十进制对应的数据来进行显示,如表3—3。
在本课题中,它的对应码为:3FH、06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH3.8 通道切换电路的设计人们切换是通过按键来确定的,选择自己所要显示的通道。
选择信号的检查是通过8051的外部中断INT1来确定的。
其中八个按键与一个与非门相连,由与非门产生逻辑信号,送给INT1位置。
图形如下:图3—8 通道切换电路图第4章系统的软件设计4.1总程序流程图4.2各子程序设计4.2.1 A/D转换子程序TEST: MOV R0,#70H ;定义采集数据存储器位置MOV R5,#08 ;通道循环参数MOV DPTR,#0CFA0H ;数据指向端口地址LOOP: MOVX @DPTR,AMOV R4,#8FH ;延时子程序LOOP11: DJNZ R4,LOOP11MOV R4,#0FHLOOP22: DJNZ R4,LOOP22MOVX A,@DPTRMOV @R0,A ; 把采集数据送到指定位置INC R0 ;移动存储位置INC DPTR ;移动指针MOV 7BH,R5DJNZ R5,LOOP ; 判定采集八通道4.2.2八路开关选择控制子程序LPP: MOV A,P3 ; 采集开关信号MOV R2,#0FFH ; 初始化RL APP: RR A ; 右移INC R2ANL A,#0EFH ;信号位置判定CJNE A,#0,PP ;转移判定MOV A,R2MOV 7BH,A ;数据采集通道号存储ADD A,#70H ; 数据地址传送MOV R1,A4.2.3二进制转换BCD码子程序TUNBCD: MOV A,@R1 ;255/51=5.0MOV B,#51DIV ABMOV 7AH,A ; 个位数存储MOV A,CLR F0SUBB A,#10MUL ABMOV B,#51DIV ABJB F0,LOOP2ADD A,#5LOOP2: MOV 79H,A ; 小数点后第一位MOV A,BCLR F0SUBB A,#1AHMOV F0,CMOV A,#10MUL ABMOV B,#51DIV ABJB F0,LOOP3ADD A,#5LOOP3: MOV 78H,A ;小数点后第二位RET4.2.4单路显示控制子程序DISP1: MOV SP,#60HLP: MOV R5,#50H ;设置调用显示次数,使显示稳定ACALL DIS ;调用显示模块DJNZ R5,LP4.2.5八路循环显示控制子程序DISP2:MOV SP,#60HLP: MOV R5,#50 ;设置调用显示次数,使显示稳定ACALL DIS ;调用显示模块DJNZ R5,LPMOV R6,#0F4H ; 延时DL1: MOV R7,#0A9HDL2: DJNZ R7,DL2DJNZ R6,DL1INC R1INC 7BH ;通道信号送入寄存器DJNZ R3,XUNHUAN ; 循环调用4.2.6 显示子程序DIS: MOV R0,#78H ;送入数据存储地址MOV R4,#0FEH ;位扫描信号MOV R2,#04H ;数据位数送入DIS2: MOV DPTR,#TAB ;数码管表首地址MOV A,@R0MOVC A,@A+DPTR ;对应字符调用CJNE R2,#2,QQ ;小数点处理ADD A,#80HQQ: MOV DPTR,#0CFA8H ;采集数据地址MOVX @DPTR,AMOV A,R4 ;采集位信号MOV P1,ALCALL DAY ;延时调用INC R0 ; 地址移位RL A ; 位信号移位MOV R4,ADJNZ R2,DIS2 ; 判断结束RET4.2.7 延时子程序DAY: MOV R6,#04HD1; MOV R7,#248D2: NOPNOPDJNZ R7, D2DJNZ R6, D1RET第5章运行与调试系统的调试和运行,先将编写好的程序写成源程序文件,然后经过汇编后生成目标文件,用仿真实验台进行调试。