31
第 10 第 第第第第 第第第第第第 10.3 第第第第第第 第第第第 10.3.1 数数数数数数数数数数数数 1 数数数数数数数数数 数 10-1 数数数数数数数数 AT89C51 数数数数 数数数数数 数 数数数数数数数数数数数数数 。。

10.3 单片机开发系统应用实例

  • 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

Page 1: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

10.3 单片机开发系统应用实例

10.3.1 数据采集与显示电路的设计 1 .系统硬件电路的设计 图 10-1 为数据采集与显示 AT89C51 单片机系统的

电路原理图。下面对各部分电路予以说明。

Page 2: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

1) 模拟量采集电路 8 路模拟量采集由 A/D 转换器 ADC0809 完成,它

具有 8 路模拟输入端,传感器检测的信号经模拟电路( 略 ) 转换成 0 ~ 5 V 的直流信号后送给 ADC0809 ,地址线 (A 、 B 、 C 端 ) 决定对哪一路模拟输入作 A/D

转换。 2)  8 路开关故障信号检测 8 路开关量信号采用中断查询相结合的方法检测。

Page 3: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

3) 显示电路 正常的模拟量显示和故障信息显示采用 4 位共阳极

LED 数码显示电路,显示内容由串行口输出给串入并出移位寄存器 74LS164 ,驱动数码管显示,采用动态扫描方法逐位显示相关内容,显示的位数由 P3.3 ~ P3.

6 口控制。 4) 其它电路 上电复位电路,外晶振电路如图 10-1 所示。

Page 4: 10.3   单片机开发系统应用实例

第 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

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 数据采集显示电路原理图

Page 5: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

2 .系统软件设计 1) 主程序 主程序完成的功能是初始化,然后循环调用显示

子程序和模拟量测量子程序,对每一通道的模拟量进行采集并循环显示通道号和采集数据,每个通道显示时间为 1 s 。其程序流程图如图 10-2 所示。

Page 6: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

图 10-2 主程序流程图

¿ª ʼ

³õʼ»¯

开中断INT0

µ÷ÏÔʾ×Ó³ÌÐò

µ÷²âÁ¿×Ó³ÌÐò

Page 7: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

2) 中断服务子程序 中断服务子程序主要用于判断故障源,并显示相应

的故障信息。故障信息只用数码管的后两位表示,故障信息码是固定的,存在于固定的内存单元中。其程序流程图如图 10-3 所示。

Page 8: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

图 10-3 中断服务程序流程图

Page 9: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

3) 显示子程序 显示子程序功能是显示某一模拟量输入通道的通道

号和对应的采集数据,而并不显示开关量故障信息码。采用动态扫描法实现 4 位数码管的数据显示。采样所得的 A/D 转换数据存放在 60H ~ 67H 内存单元中,采集数据在显示时需转换成十进制 BCD 码,其个位、十位、百位分别存放在 68H ~ 6AH 内存单元中,对应通道号存放在 7BH 单元中。寄存器 R0 用作显示数据地址指针。动态扫描周期为 20 ms 。其程序流程图如图 10-4 所示。

Page 10: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用 ¿ª ʼ

ÖÃͨµÀºÅ£¬Êý¾ÝµØÖ·³õÖµ

ÏÔʾÊý¾Ýת»»³ÉBCDÂë

Öö¯Ì¬É¨ÃèÖÜÆÚ20 ms

4λLED¶¯Ì¬É¨ÃèÒ»´Î

20 msµ½·ñ £¿

ÿ·ÏÔʾ1sµ½·ñ £¿

ͨµÀºÅ£¬Êý¾ÝµØÖ·Ôö1

8·ÏÔʾÍê·ñ £¿

ᵠȯ

Y

Y

Y

N

N

N

图 10-4 显示子程序流程图

Page 11: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

4) 模拟量测量子程序 模拟量测量子程序的功能是控制 A/D 转换器 0809 对

8 路模拟量输入电压信号进行 A/D 转换,并将转换数据存入 60H ~ 67H 单元中。其程序流程图如图 10-5 所示。

Page 12: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用 ¿ª ʼ

Æô¶¯²âÊÔ

¶Áת»»½á¹û

´æÈëÄÚ´æµ¥Ôª

ͨµÀºÅÔö1

ͨµÀÊýСÓÚ8 £¿

¹Ø±ÕA/Dת»»

ᵠȯ

A/Dת»»½áÊø £¿N

Y

Y

N

图 10-5 测量子程序

Page 13: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

程序如下: ORG 0000H

AJMP INITZ ;跳至主程序 ORG 0003H ;外中断 0 中断入口地址 AJMP FLTRT ;转外中断 0 子程序 NOP

 

****** 主程序 ******

 

Page 14: 10.3   单片机开发系统应用实例

第 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

Page 15: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

MOV SP , #15H ;置堆栈指针 SETB EA ;开中断 SETB EX0 ;允许外中断 0 中断 CLR IT0 ;外中断 0 为电平触发WAITX : LCALL CLST ;循环测量一次 LCALL XSZC ;循环显示数据一次

AJMP WAITX ;返回 WAITX 循环

****** 测量子程序 ******

Page 16: 10.3   单片机开发系统应用实例

第 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 启动

Page 17: 10.3   单片机开发系统应用实例

第 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

;采集结束了吗?没有结束则采集下一个通道

Page 18: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

MOV P2 , #00H ;一次测量结束 RET ;子程序返回 

****** 显示子程序 *******

 

XSZC : MOV R0 , #60H ;显示数据地址初值

MOV 6BH , #00H ;置通道号初值

Page 19: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

XSZC1 : MOV R3 , #32H ;扫描频率 MOV A , @R0

;显示数据转换为三位 BCD 码 MOV B , #100

DIV AB

MOV 6AH , A ;百位 BCD 码存于 6AH 中

Page 20: 10.3   单片机开发系统应用实例

第 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 ;关闭通道号显示位

Page 21: 10.3   单片机开发系统应用实例

第 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 ;取十位显示数据显示

Page 22: 10.3   单片机开发系统应用实例

第 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

Page 23: 10.3   单片机开发系统应用实例

第 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

Page 24: 10.3   单片机开发系统应用实例

第 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 ;循环显示一次结束,返回

Page 25: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

YS1 : MOV R2 , #0AH ; 1 ms 延时子程序YS11 : MOV R6 , #0CH

YS12 : DJNZ R6 , YS12

DJNZ R2 , YS11

RET

 

****** 中断服务程序 ******

 

Page 26: 10.3   单片机开发系统应用实例

第 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 ;判断故障源

Page 27: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

INC R0 ;改变故障码偏移地址 INC R0

JB P1.1 , DLC1

INC R0

INC R0

JB P1.6 , DLC1

INC R0

INC R0

Page 28: 10.3   单片机开发系统应用实例

第 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 ;输出故障信息段码

Page 29: 10.3   单片机开发系统应用实例

第 10章 单片机系统的开发与应用

JNB TI , $ ;等待输出结束 CLR P3.3 ;显示故障信息低位 CLR TI

LCALL YS1 ;延时 1 ms

SETB P3.3

INC R0

MOV A , R0

MOVC A , @A+DPTR ;取出故障信息段码高位

Page 30: 10.3   单片机开发系统应用实例

第 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

Page 31: 10.3   单片机开发系统应用实例

第 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