Upload
min
View
104
Download
4
Embed Size (px)
DESCRIPTION
10.3 单片机开发系统应用实例. 10.3.1 数据采集与显示电路的设计 1 .系统硬件电路的设计 图 10-1 为数据采集与显示 AT89C51 单片机系统的电路原理图。下面对各部分电路予以说明。. 1) 模拟量采集电路 8 路模拟量采集由 A/D 转换器 ADC0809 完成,它具有 8 路模拟输入端,传感器检测的信号经模拟电路 ( 略 ) 转换成 0 ~ 5 V 的直流信号后送给 ADC0809 ,地址线 (A 、 B 、 C 端 ) 决定对哪一路模拟输入作 A/D 转换。 2) 8 路开关故障信号检测 - PowerPoint PPT Presentation
Citation preview
第 10章 单片机系统的开发与应用
10.3 单片机开发系统应用实例
10.3.1 数据采集与显示电路的设计 1 .系统硬件电路的设计 图 10-1 为数据采集与显示 AT89C51 单片机系统的
电路原理图。下面对各部分电路予以说明。
第 10章 单片机系统的开发与应用
1) 模拟量采集电路 8 路模拟量采集由 A/D 转换器 ADC0809 完成,它
具有 8 路模拟输入端,传感器检测的信号经模拟电路( 略 ) 转换成 0 ~ 5 V 的直流信号后送给 ADC0809 ,地址线 (A 、 B 、 C 端 ) 决定对哪一路模拟输入作 A/D
转换。 2) 8 路开关故障信号检测 8 路开关量信号采用中断查询相结合的方法检测。
第 10章 单片机系统的开发与应用
3) 显示电路 正常的模拟量显示和故障信息显示采用 4 位共阳极
LED 数码显示电路,显示内容由串行口输出给串入并出移位寄存器 74LS164 ,驱动数码管显示,采用动态扫描方法逐位显示相关内容,显示的位数由 P3.3 ~ P3.
6 口控制。 4) 其它电路 上电复位电路,外晶振电路如图 10-1 所示。
第 10章 单片机系统的开发与应用
P1.0
P1.7
¡
VCC
P0.0
P0.7
¡
D0
D3
D7
¡ ¡
IN0
IN3
IN7
¡ ¡
140241 12
P2.5P2.4P2.3P2.2P2.1P2.0P3.7
OESTARTALECBAEOC
ALE CLK
VCC
V£«
GND
V£
5 V
5 V
Ä£ÄâÊäÈë (0¡«5 V)
ADC0809AT89C51
&
¡Ý1
¡Ý1
XTAL2
XTAL16MHz
30 F
30 F
Q0
Q6
abcdefg
abcdefg
abcdefg
abcdefg
¡ VCC
CLK5A8H
CLE
P3.3
P3.4P3.5P3.6RSTVSS
74LS1615.1 k 5.1 k 5.1 k 5.1 k
ͨµÀºÅ °Ùλ ʮλ ¸öλ 510¡Á75 V
RXD
TXD
0INT
5 V
8.2 k
10 F
8·ÊäÈ뿪¹ØÁ¿
图 10-1 数据采集显示电路原理图
第 10章 单片机系统的开发与应用
2 .系统软件设计 1) 主程序 主程序完成的功能是初始化,然后循环调用显示
子程序和模拟量测量子程序,对每一通道的模拟量进行采集并循环显示通道号和采集数据,每个通道显示时间为 1 s 。其程序流程图如图 10-2 所示。
第 10章 单片机系统的开发与应用
图 10-2 主程序流程图
¿ª ʼ
³õʼ»¯
开中断INT0
µ÷ÏÔʾ×Ó³ÌÐò
µ÷²âÁ¿×Ó³ÌÐò
第 10章 单片机系统的开发与应用
2) 中断服务子程序 中断服务子程序主要用于判断故障源,并显示相应
的故障信息。故障信息只用数码管的后两位表示,故障信息码是固定的,存在于固定的内存单元中。其程序流程图如图 10-3 所示。
第 10章 单片机系统的开发与应用
图 10-3 中断服务程序流程图
第 10章 单片机系统的开发与应用
3) 显示子程序 显示子程序功能是显示某一模拟量输入通道的通道
号和对应的采集数据,而并不显示开关量故障信息码。采用动态扫描法实现 4 位数码管的数据显示。采样所得的 A/D 转换数据存放在 60H ~ 67H 内存单元中,采集数据在显示时需转换成十进制 BCD 码,其个位、十位、百位分别存放在 68H ~ 6AH 内存单元中,对应通道号存放在 7BH 单元中。寄存器 R0 用作显示数据地址指针。动态扫描周期为 20 ms 。其程序流程图如图 10-4 所示。
第 10章 单片机系统的开发与应用 ¿ª ʼ
ÖÃͨµÀºÅ£¬Êý¾ÝµØÖ·³õÖµ
ÏÔʾÊý¾Ýת»»³ÉBCDÂë
Öö¯Ì¬É¨ÃèÖÜÆÚ20 ms
4λLED¶¯Ì¬É¨ÃèÒ»´Î
20 msµ½·ñ £¿
ÿ·ÏÔʾ1sµ½·ñ £¿
ͨµÀºÅ£¬Êý¾ÝµØÖ·Ôö1
8·ÏÔʾÍê·ñ £¿
·µ »Ø
Y
Y
Y
N
N
N
图 10-4 显示子程序流程图
第 10章 单片机系统的开发与应用
4) 模拟量测量子程序 模拟量测量子程序的功能是控制 A/D 转换器 0809 对
8 路模拟量输入电压信号进行 A/D 转换,并将转换数据存入 60H ~ 67H 单元中。其程序流程图如图 10-5 所示。
第 10章 单片机系统的开发与应用 ¿ª ʼ
Æô¶¯²âÊÔ
¶Áת»»½á¹û
´æÈëÄÚ´æµ¥Ôª
ͨµÀºÅÔö1
ͨµÀÊýСÓÚ8 £¿
¹Ø±ÕA/Dת»»
·µ »Ø
A/Dת»»½áÊø £¿N
Y
Y
N
图 10-5 测量子程序
第 10章 单片机系统的开发与应用
程序如下: ORG 0000H
AJMP INITZ ;跳至主程序 ORG 0003H ;外中断 0 中断入口地址 AJMP FLTRT ;转外中断 0 子程序 NOP
****** 主程序 ******
第 10章 单片机系统的开发与应用
ORG 0052H
INITZ : CLR A
MOV P2 , A ; A/D 转换准备
MOV R0 , #7FH ;内存循环清零 (00H ~ 7FH)
RAMX : MOV @R0 , A
DJNZ R0 , RAMX
MOV TCON , A ;定时器 0 停止计数
MOV TMOD , #01H ;定时器 0 工作方式 1
MOV SCON , #00H ;串行口工作在方式 0
第 10章 单片机系统的开发与应用
MOV SP , #15H ;置堆栈指针 SETB EA ;开中断 SETB EX0 ;允许外中断 0 中断 CLR IT0 ;外中断 0 为电平触发WAITX : LCALL CLST ;循环测量一次 LCALL XSZC ;循环显示数据一次
AJMP WAITX ;返回 WAITX 循环
****** 测量子程序 ******
第 10章 单片机系统的开发与应用
CLST : CLR A
MOV R0 , #60H ;测量值存放首址 MOV R7 , #00H ;置初始通道号CLST1 : MOV A , R7
MOV P2 , A ;输出通道地址 SETB P2.3 ;锁存通道地址 SETB P2.4 ; A/D 启动准备 NOP ;延时 2 μs
CLR P2.4 ; A/D 启动
第 10章 单片机系统的开发与应用
JNB P3.7 , $ ;等待转换结束 SETB P2.5 ;允许 0809 数据输出 MOV A , P0 ;读入 A/D 转换值 MOV @R0 , A ;存入内存 CLR P2.5 ;关闭 0809 输出 INC R0 ;内存地址,通道号增 1
INC R7
CJNE R7 , #08H , CLST1
;采集结束了吗?没有结束则采集下一个通道
第 10章 单片机系统的开发与应用
MOV P2 , #00H ;一次测量结束 RET ;子程序返回
****** 显示子程序 *******
XSZC : MOV R0 , #60H ;显示数据地址初值
MOV 6BH , #00H ;置通道号初值
第 10章 单片机系统的开发与应用
XSZC1 : MOV R3 , #32H ;扫描频率 MOV A , @R0
;显示数据转换为三位 BCD 码 MOV B , #100
DIV AB
MOV 6AH , A ;百位 BCD 码存于 6AH 中
第 10章 单片机系统的开发与应用
MOV A , #10
XCH A , B
DIV AB
MOV 69H , A ;存十位 BCD 码
MOV 68H , B ;存个位 BCD 码
XSZC2: MOV TH0 , #27H ;扫描周期由 T0 定时 2
0 ms
MOV TL0 , #10H
SETB TR0 ;启动 T0
SETB P3.6 ;关闭通道号显示位
第 10章 单片机系统的开发与应用
MOV A , 68H ;取出各位显示数据
MOV DPTR , #MAB ;显示段码首址
MOVC A , @A+DPTR
MOV SBUF , A ;显示数据由串行口输出
JNB TI , $ ;等待传送结束
CLR P3.3 ;显示个位
CLR TI ;清除 TI
LCALL YS1 ;调延时 1 ms 子程序
SETB P3.3 ;消去个位显示
MOV A , 69H ;取十位显示数据显示
第 10章 单片机系统的开发与应用
MOV A , @A+DPTR
MOV SBUF , A
JNB TI , $
CLR P3.4
CLR TI
LCALL YS1
SETB P3.4
MOV A , 6AH ;取百位显示数据显示
MOVC A , @A+DPTR
MOV SBUF , A
第 10章 单片机系统的开发与应用
JNB TI , $
CLR P3.5
CLR TI
LCALL YS1
SETB P3.5
MOV A , 6BH ;取通道号显示 MOVC A , @A+DPTR
MOV SBUF , A
JNB TI , $
CLR P3.6
CLR TI
LCALL YS1
第 10章 单片机系统的开发与应用
SETB P3.6
JNB TF0 , $ ;是否到 20 ms ?若不到则等待
CLR TR0 ;关闭定时器 T0
DJNZ R3 , XSZC2 ; 1 s 不到继续显示该通道数据
INC R0 ;显示下一个通道数据
INC 6BH
MOV A , 6BH
CJNE A , #08H , XSZC1
;八个通道显示一次吗?没有则继续
RET ;循环显示一次结束,返回
第 10章 单片机系统的开发与应用
YS1 : MOV R2 , #0AH ; 1 ms 延时子程序YS11 : MOV R6 , #0CH
YS12 : DJNZ R6 , YS12
DJNZ R2 , YS11
RET
****** 中断服务程序 ******
第 10章 单片机系统的开发与应用
FLTRT : CLR EX0 ;关中断 CLR EA
JNB P3.2 , FLTRT1
;真的有中断请求吗?有,转移
JNB P3.2 , FLTRT1
RETI ;没有中断,退出FLTRT1 : MOV R0 , #00H ;置故障码偏移地址 CLR TR0 ;关定时器 T0
CLR TI ;清除 TI 标志 JB P1.0 , DLC1 ;判断故障源
第 10章 单片机系统的开发与应用
INC R0 ;改变故障码偏移地址 INC R0
JB P1.1 , DLC1
INC R0
INC R0
JB P1.6 , DLC1
INC R0
INC R0
第 10章 单片机系统的开发与应用
DLC1 : MOV A , R0 ;取出故障码偏移地址 SETB P3.5 ;关闭高两位数码管 SETB P3.6
MOV TH0 , #27H ;定时器 T0 定时 20 ms
MOV TL0 , #10H
SETB TRO ;启动 T0
MOV DPTR , #MCD ;置故障信息段码首址 MOVC A , @A+DPTR ;取出故障信息段码低位 MOV SBUF , A ;输出故障信息段码
第 10章 单片机系统的开发与应用
JNB TI , $ ;等待输出结束 CLR P3.3 ;显示故障信息低位 CLR TI
LCALL YS1 ;延时 1 ms
SETB P3.3
INC R0
MOV A , R0
MOVC A , @A+DPTR ;取出故障信息段码高位
第 10章 单片机系统的开发与应用
MOV SBUF , A ;输出故障信息段码高位 JNB TI , $
CLR P3.4 ;显示故障信息段码高位 CLR TI
LCALL YS1 ;延时 1 ms
SETB P3.4
JNB TF0 , $ ;等待 20 ms 结束 CLR TR0 ;关闭 T0
AJMP DLC1 ;循环显示故障信息 END
第 10章 单片机系统的开发与应用
LED数码显示管共阳段码表,分别对应 0~ 9。
CLR TR0 ;关闭 T0
AJMP DLC1 ;循环显示故障信息MAB : DB 0C0H , 0F9H , 0A4H , 0B0H
;共阳数码管段码表,分别对应 0~ 9
DB 99H , 92H , 82H , 0F8H , 80H , 90H
MCD : DB LED 数码显示管用故障信息段码表,根据需要编制 ( 略 )
END