第九章
80C51单片微机应用系统
实例
9,1 水表、电能表数据采集系统
数据采集系统设计的主要内容通常包含硬件 (连同单片微
机在内的全部电子线路 ),软件 (包括监控管理程序及各功能模
块应用软件 ) 及结构工艺等三大部分。由于对象提供的数据形式
,五花八门,,若是模拟量,则要通过 A/D转换器得到数据;
若是脉冲量,则需通过 I/O引脚对其计数后再通过计算得到数据。
而对于流量、功率等参数,则往往需通过传感器或专用模块输
出脉冲或数据。
1,水表数据采集系统
该系统包括脉冲式水表, 水表数据采集器, 掌上电脑,
水表数据集中器, 远程抄表终端, 后台计算机管理软件等 。 水
表数据采集器采集居民楼单元内居民的用水量 。 具有采集 24户
居民水表数据的能力 。
水表表计是对水的流量进行计量。表计中指针轴随着水
流而转动,其各个指针轴转一圈分别代表用水量为 0.01度,0.1
度,1度等等。在相应指计轴处安装一个霍尔元件 (或干簧管 ),
就可实现指针轴转一圈输出一个脉冲,单片微机通过对脉冲个
数的记录,就可以计算出实际用水量。水表数据采集器可以同
时记录 24户或 32户居民水表的脉冲数,进而记录各用户的用水
量,通过通信接口把水表数据上传至管理部门。
居民水表数据采集系统分为居民楼单元级, 小区管理级
及自来水公司等三级, 其结构示意如图 图 9–1所示 。 在每一个
单元按装水表数据采集器, 用于采集该单元内用户水表的数据 。
图 9–2 水表数据采集器原理框图中包含了单片微机和各功能部
件 。
采用 RS485总线方式实现小区内 水表数据采集器 的网络
通信 。
在 水表数据采集器 内部同时还配置了 RS-232接口, 可实
现与掌上机的通信, 以便进行现场参数设置和水表数据抄录 。
水表数据采集器主程序流程框图示于 图 9-3。
在小区物业管理部门安装计算机终端或水表数据集中器
,用于对小区内所有居民水表计量数据进行统计, 打印, 以便
进行水费的收缴管理 。 还可进一步通过公用电话网或无线短消
息平台向自来水公司发送 用户用水数据信息 。
水表数据集中器的存储器扩展原理见 图 9–4所示 。 单片微
机采用台湾华帮公司的 78E58单片微机, 其内部包含 32K Flash存
储器, 与 80C52兼容, 但增加了一个特别的可位寻址的 4位 I/O口
(端口 4) 和两个外部中断 。 因数据量比较大, 故扩展了 128KB的
数据存储器 628128。 由于 628128具有 17根地址线, 所以除了采用
78E58的 16根地址线 A0~ A15与 628128相连, 另外应用 P1口的一根
I/O口线 P1.0与 628128的 A16相连, 作为, 体选,, 当 P1.0=0时,
寻扯 628128中的 64K数据存储器, 当 P1.0=1时, 寻址 628128的另
一半 64K数据存储器 。
水表数据集中器与掌上电脑或 PC机通信和扩展 RS-485总线
的原理图示于 图 9–5。 MAX232实现 CMOS(TTL) 逻辑与 RS-232逻辑
转换,是 PC机与单片微机通信接口芯片,一般与单片微机串行口
的发送 /接收端相连。 AD485芯片则用于实现 RS485总线联网,由
于 78E58内部只有一个串行口,所以采用 78E58的 P1.1和 P1.3来虚
拟 485串行通信,用 P1.2来控制 RS485数据传输方向。
2.电能表数据采集系统
本系统分为三级结构, 见 图 9-6。
(1)采集终端:对多达 20户居民电能表的用电量进行采集,
实现单元集抄系统功能;
(2) 台区集中器:通过电力线载波方式, 将多达 2000户居民
用户电能表数据集中传送到小区配电房的集中器上实现台区集抄
系统功能 ;
(3) 局端工作站,通过掌上机或电话通讯终端或 GSM网把电
能表数据上传到电力局的上端计算机,实现集抄系统功能。
经过改装后的脉冲电能表或全电子电能表把用户的用电量
转化为电脉冲送入采集终端, 采集终端将通过计数和计算后得出
的数据经由局域网信道送到集中器, 集中器再通过城域网信道将
数据送至供电管理中心 。 电能表数据采集终端由单片微机, 脉冲
信号采集处理电路, 低压电力载波通讯电路等部分构成 。 用户表
选用全电子式单相电能表或带脉冲输出的感应式电能表, 各用户
表的脉冲信号输出经过电路整形, 再送入单片微机进行实时处理,
显示各用户电能表的上月电量, 和本月当前抄见电量等数据 。 一
个数据采集终端最多可以采集处理 22个用户电能表的脉冲信号 。
电能表数据采集终端通过 RS-485总线收发器 (如 MAX485)
与集中器进行半双工异步串行数据通信 。
由于采集终端要处理和保存大量的数据,仅仅依靠 CPU
内部的 RAM是不够的,所以需要外加存储器。为了简化设计,
提高系统的可靠性,而且考虑需要有在掉电时也不丢失数据的能
力,所以在电能表数据采集终端中使用了串行 E2PROM。
9,2 无总线单片微机应用系统
1﹒ AT89C2051 Flash单片微机
AT89C1051/2051/4051单片微机和 MCS-51兼容,片内有
1K/2K/4K字节闪速存储器。具有 15根 I/O口线,一个 16位定时
器 /计数器,三个中断源; P1口可吸收 20mA电流并能直接驱动
LED显示器,其中 P1.2~ P1.7提供内部上拉电阻,P1.0和 P1.1要
求外部加上拉电阻; P3.0~ P3.5,P3.7是带有内部上拉电阻的 7
个双向 I/O引脚。芯片为 20引脚的 DIP封装。
2﹒ 应用 AT89C2051的交通灯智能管理系统
设计一个智能交通灯管理系统。要求如下:
假设十字路口有两组交通灯, 每一组各有红, 黄, 绿三
种颜色的指示灯, 分别管理通道 A和通道 B。 A为主通道 。
? 如果两个车道都有车,则轮流放行,其中 A道绿灯 30s。 B道绿
灯 15s。
? 通道放行管理:如果某个通道无车, 而另一车道有车, 那么
有车的通道放行 。 如果无车的通道有车了, 则有车的通道立刻恢
复正常的交通灯进行管理 。
? 如果两个通道都没有车, 那么两个通道交通灯状态保持不变 。
? 如有紧急车辆通过, 应立即禁止普通车辆通行 ( 即 A,B车道均
亮红灯 ), 紧急车辆通过后, 恢复原来的信号灯状态, 且原先的
计时时间累计 。 要求采取中断方式, 用按键中断模拟有紧急车辆
通过 。
? 在从绿灯切换为红灯时, 应有 5s的黄灯点亮时间 。
智能交通灯管理系统的硬件设计如 图 9–7所示 。 应用
P1.0~ P1.5共 6根 I/O口线控制 A车道和 B车道 6个指示灯, P3.0输
入 A车道是否有车信息, P3.1输入 B车道是否有车信息, P3.2输
入是否有紧急车辆信息 。 定时器 /计数器作为通行时间定时器 。
基本软件程序如下:;P1.0=0,A车道红灯点亮;P1.1=0,A车道绿灯点亮;P1.2=0,A车道黄灯点亮;P1.3=0,B车道红灯点亮;P1.4=0,B车道绿灯点亮;P1.5=0,B车道黄灯点亮;P3.0=0,A车道有车;P3.1=0,B车道有车;P3.2=0,有紧急车通过
s_ok BIT 20H.0
ORG 0000H
SJMP MAIN
ORG 000BH
AJMP SECOND
ORG 0030H
MAIN,MOV SP,#60H ;设堆栈指针
CLR EA ;关中断
MOV TMOD,#01H ;设 T0为方式 1
MOV TL0,#0B0H ;设 T0时间常数 (100ms)
MOV TH0,#3CH
SETB ET0 ;允许定时器 /计数器 T0中断
SETB PT0 ; T0中断为高优先级
SETB EA ;开中断
SETB TR0 ;启动定时器 /计数器 T0
MOV R0,#10 ; 100ms计数次数
TEST,MOV P3,#0FFH ;设 P3口为输入方式
MOV A,P3 ; 读 A,B车道的状态
JB ACC.2,EMERG_CAR ;有紧急车辆 通过,;转 EMERG_CAR
JB ACC.0,CAR_0 ; A道有车, 转 CAR_0
JB ACC.1,CAR_1 ; B道有车, 转 CAR_1
SJMP TEST ;无车, 则继续等待
NORMAI:ACALL A_GREEN ; A道通行 30s
ACALL YELLOW ;黄灯 5s
ACALL A_RED ; B道通行 15s
AJMP TEST;紧急车处理子程序;;;;;;;;;;;;;;;;;;
EMERG_CAR,MOV A,#00001001B; A道, B道红灯亮
MOV P1,A
AJMP TEST
CAR_0,JB ACC.1,NORMAL ; A,B道均有车
ACALL A_GREEN ; A道有车,立即放行
AJMP TEST
CAR_1,ACALL A_RED ; B道有车,立即放行
AJMP TEST;秒计数子程序;;;;;;;;;;;;;;;;;;;;;
SECOND:CLR EA
CLR S_OK
DEC R0
MOV A,R0
JZ SECOND_1
SJMP SECOND_2
SECOND_1,MOV R0,#10
SETB S_OK
SECOND_2,MOV TH0,#3CH
MOV TL0,#0BFH
SETB EA
RETI;A车道绿灯, B车道红灯
A_GREEN:
MOV A,#00001010B ;A车道绿灯亮, B车道红灯亮
MOV P1,A
MOV R1,#30 ;亮灯时间为 30s
TLP,JNB S_OK,TLP ;判 1s定时是否完成
CLR S_OK
DJNZ R1,TLP ;判 30s定时是否完成
RET; A车道黄灯 5s,B车道黄灯 5s
YELLOW,MOV A,#00100100b
MOV P1,A ; A,B车道黄灯亮
MOV R1,#05 ;黄灯亮 5s
TLP1,JNB S_OK,TLP1 ;1s定时是否完成
CLR S_OK
DJNZ R1,TLP1 ;5s定时是否完成
RET;A车道红灯, B车道绿灯
A_RED:
MOV A,#00010001B
MOV P1,A ; B车道绿灯亮, A车道红灯亮
MOV R1#15 ; 亮灯时间为 15s
TLP2,JNB S_OK,TLP2 ; 1s定时是否完成
CLR S_OK
DJNZ R1,TLP2 ; 15s定时是否完成
RET
END
谢 谢!
图 9–1 水表数据集中抄录系统示意图
图 9–2 水表数据采集器原理框图
图 9- 3 水表数据采集器主程序流程图
图 9-4 集中器存储器扩展
图 9-5 集中器串行通信及串行总线
图 9–6 电能表数据集中抄录系统示意图
供电管理中心
集中器 集中器 集中器
采集终端 采集终端
全电子电能表脉冲电能表
……
……
…… 全电子电能表
城域网信道
脉冲信号
局域网信道
图 9–7 AT89C2051交通灯智能管理系统原理框图
80C51单片微机应用系统
实例
9,1 水表、电能表数据采集系统
数据采集系统设计的主要内容通常包含硬件 (连同单片微
机在内的全部电子线路 ),软件 (包括监控管理程序及各功能模
块应用软件 ) 及结构工艺等三大部分。由于对象提供的数据形式
,五花八门,,若是模拟量,则要通过 A/D转换器得到数据;
若是脉冲量,则需通过 I/O引脚对其计数后再通过计算得到数据。
而对于流量、功率等参数,则往往需通过传感器或专用模块输
出脉冲或数据。
1,水表数据采集系统
该系统包括脉冲式水表, 水表数据采集器, 掌上电脑,
水表数据集中器, 远程抄表终端, 后台计算机管理软件等 。 水
表数据采集器采集居民楼单元内居民的用水量 。 具有采集 24户
居民水表数据的能力 。
水表表计是对水的流量进行计量。表计中指针轴随着水
流而转动,其各个指针轴转一圈分别代表用水量为 0.01度,0.1
度,1度等等。在相应指计轴处安装一个霍尔元件 (或干簧管 ),
就可实现指针轴转一圈输出一个脉冲,单片微机通过对脉冲个
数的记录,就可以计算出实际用水量。水表数据采集器可以同
时记录 24户或 32户居民水表的脉冲数,进而记录各用户的用水
量,通过通信接口把水表数据上传至管理部门。
居民水表数据采集系统分为居民楼单元级, 小区管理级
及自来水公司等三级, 其结构示意如图 图 9–1所示 。 在每一个
单元按装水表数据采集器, 用于采集该单元内用户水表的数据 。
图 9–2 水表数据采集器原理框图中包含了单片微机和各功能部
件 。
采用 RS485总线方式实现小区内 水表数据采集器 的网络
通信 。
在 水表数据采集器 内部同时还配置了 RS-232接口, 可实
现与掌上机的通信, 以便进行现场参数设置和水表数据抄录 。
水表数据采集器主程序流程框图示于 图 9-3。
在小区物业管理部门安装计算机终端或水表数据集中器
,用于对小区内所有居民水表计量数据进行统计, 打印, 以便
进行水费的收缴管理 。 还可进一步通过公用电话网或无线短消
息平台向自来水公司发送 用户用水数据信息 。
水表数据集中器的存储器扩展原理见 图 9–4所示 。 单片微
机采用台湾华帮公司的 78E58单片微机, 其内部包含 32K Flash存
储器, 与 80C52兼容, 但增加了一个特别的可位寻址的 4位 I/O口
(端口 4) 和两个外部中断 。 因数据量比较大, 故扩展了 128KB的
数据存储器 628128。 由于 628128具有 17根地址线, 所以除了采用
78E58的 16根地址线 A0~ A15与 628128相连, 另外应用 P1口的一根
I/O口线 P1.0与 628128的 A16相连, 作为, 体选,, 当 P1.0=0时,
寻扯 628128中的 64K数据存储器, 当 P1.0=1时, 寻址 628128的另
一半 64K数据存储器 。
水表数据集中器与掌上电脑或 PC机通信和扩展 RS-485总线
的原理图示于 图 9–5。 MAX232实现 CMOS(TTL) 逻辑与 RS-232逻辑
转换,是 PC机与单片微机通信接口芯片,一般与单片微机串行口
的发送 /接收端相连。 AD485芯片则用于实现 RS485总线联网,由
于 78E58内部只有一个串行口,所以采用 78E58的 P1.1和 P1.3来虚
拟 485串行通信,用 P1.2来控制 RS485数据传输方向。
2.电能表数据采集系统
本系统分为三级结构, 见 图 9-6。
(1)采集终端:对多达 20户居民电能表的用电量进行采集,
实现单元集抄系统功能;
(2) 台区集中器:通过电力线载波方式, 将多达 2000户居民
用户电能表数据集中传送到小区配电房的集中器上实现台区集抄
系统功能 ;
(3) 局端工作站,通过掌上机或电话通讯终端或 GSM网把电
能表数据上传到电力局的上端计算机,实现集抄系统功能。
经过改装后的脉冲电能表或全电子电能表把用户的用电量
转化为电脉冲送入采集终端, 采集终端将通过计数和计算后得出
的数据经由局域网信道送到集中器, 集中器再通过城域网信道将
数据送至供电管理中心 。 电能表数据采集终端由单片微机, 脉冲
信号采集处理电路, 低压电力载波通讯电路等部分构成 。 用户表
选用全电子式单相电能表或带脉冲输出的感应式电能表, 各用户
表的脉冲信号输出经过电路整形, 再送入单片微机进行实时处理,
显示各用户电能表的上月电量, 和本月当前抄见电量等数据 。 一
个数据采集终端最多可以采集处理 22个用户电能表的脉冲信号 。
电能表数据采集终端通过 RS-485总线收发器 (如 MAX485)
与集中器进行半双工异步串行数据通信 。
由于采集终端要处理和保存大量的数据,仅仅依靠 CPU
内部的 RAM是不够的,所以需要外加存储器。为了简化设计,
提高系统的可靠性,而且考虑需要有在掉电时也不丢失数据的能
力,所以在电能表数据采集终端中使用了串行 E2PROM。
9,2 无总线单片微机应用系统
1﹒ AT89C2051 Flash单片微机
AT89C1051/2051/4051单片微机和 MCS-51兼容,片内有
1K/2K/4K字节闪速存储器。具有 15根 I/O口线,一个 16位定时
器 /计数器,三个中断源; P1口可吸收 20mA电流并能直接驱动
LED显示器,其中 P1.2~ P1.7提供内部上拉电阻,P1.0和 P1.1要
求外部加上拉电阻; P3.0~ P3.5,P3.7是带有内部上拉电阻的 7
个双向 I/O引脚。芯片为 20引脚的 DIP封装。
2﹒ 应用 AT89C2051的交通灯智能管理系统
设计一个智能交通灯管理系统。要求如下:
假设十字路口有两组交通灯, 每一组各有红, 黄, 绿三
种颜色的指示灯, 分别管理通道 A和通道 B。 A为主通道 。
? 如果两个车道都有车,则轮流放行,其中 A道绿灯 30s。 B道绿
灯 15s。
? 通道放行管理:如果某个通道无车, 而另一车道有车, 那么
有车的通道放行 。 如果无车的通道有车了, 则有车的通道立刻恢
复正常的交通灯进行管理 。
? 如果两个通道都没有车, 那么两个通道交通灯状态保持不变 。
? 如有紧急车辆通过, 应立即禁止普通车辆通行 ( 即 A,B车道均
亮红灯 ), 紧急车辆通过后, 恢复原来的信号灯状态, 且原先的
计时时间累计 。 要求采取中断方式, 用按键中断模拟有紧急车辆
通过 。
? 在从绿灯切换为红灯时, 应有 5s的黄灯点亮时间 。
智能交通灯管理系统的硬件设计如 图 9–7所示 。 应用
P1.0~ P1.5共 6根 I/O口线控制 A车道和 B车道 6个指示灯, P3.0输
入 A车道是否有车信息, P3.1输入 B车道是否有车信息, P3.2输
入是否有紧急车辆信息 。 定时器 /计数器作为通行时间定时器 。
基本软件程序如下:;P1.0=0,A车道红灯点亮;P1.1=0,A车道绿灯点亮;P1.2=0,A车道黄灯点亮;P1.3=0,B车道红灯点亮;P1.4=0,B车道绿灯点亮;P1.5=0,B车道黄灯点亮;P3.0=0,A车道有车;P3.1=0,B车道有车;P3.2=0,有紧急车通过
s_ok BIT 20H.0
ORG 0000H
SJMP MAIN
ORG 000BH
AJMP SECOND
ORG 0030H
MAIN,MOV SP,#60H ;设堆栈指针
CLR EA ;关中断
MOV TMOD,#01H ;设 T0为方式 1
MOV TL0,#0B0H ;设 T0时间常数 (100ms)
MOV TH0,#3CH
SETB ET0 ;允许定时器 /计数器 T0中断
SETB PT0 ; T0中断为高优先级
SETB EA ;开中断
SETB TR0 ;启动定时器 /计数器 T0
MOV R0,#10 ; 100ms计数次数
TEST,MOV P3,#0FFH ;设 P3口为输入方式
MOV A,P3 ; 读 A,B车道的状态
JB ACC.2,EMERG_CAR ;有紧急车辆 通过,;转 EMERG_CAR
JB ACC.0,CAR_0 ; A道有车, 转 CAR_0
JB ACC.1,CAR_1 ; B道有车, 转 CAR_1
SJMP TEST ;无车, 则继续等待
NORMAI:ACALL A_GREEN ; A道通行 30s
ACALL YELLOW ;黄灯 5s
ACALL A_RED ; B道通行 15s
AJMP TEST;紧急车处理子程序;;;;;;;;;;;;;;;;;;
EMERG_CAR,MOV A,#00001001B; A道, B道红灯亮
MOV P1,A
AJMP TEST
CAR_0,JB ACC.1,NORMAL ; A,B道均有车
ACALL A_GREEN ; A道有车,立即放行
AJMP TEST
CAR_1,ACALL A_RED ; B道有车,立即放行
AJMP TEST;秒计数子程序;;;;;;;;;;;;;;;;;;;;;
SECOND:CLR EA
CLR S_OK
DEC R0
MOV A,R0
JZ SECOND_1
SJMP SECOND_2
SECOND_1,MOV R0,#10
SETB S_OK
SECOND_2,MOV TH0,#3CH
MOV TL0,#0BFH
SETB EA
RETI;A车道绿灯, B车道红灯
A_GREEN:
MOV A,#00001010B ;A车道绿灯亮, B车道红灯亮
MOV P1,A
MOV R1,#30 ;亮灯时间为 30s
TLP,JNB S_OK,TLP ;判 1s定时是否完成
CLR S_OK
DJNZ R1,TLP ;判 30s定时是否完成
RET; A车道黄灯 5s,B车道黄灯 5s
YELLOW,MOV A,#00100100b
MOV P1,A ; A,B车道黄灯亮
MOV R1,#05 ;黄灯亮 5s
TLP1,JNB S_OK,TLP1 ;1s定时是否完成
CLR S_OK
DJNZ R1,TLP1 ;5s定时是否完成
RET;A车道红灯, B车道绿灯
A_RED:
MOV A,#00010001B
MOV P1,A ; B车道绿灯亮, A车道红灯亮
MOV R1#15 ; 亮灯时间为 15s
TLP2,JNB S_OK,TLP2 ; 1s定时是否完成
CLR S_OK
DJNZ R1,TLP2 ; 15s定时是否完成
RET
END
谢 谢!
图 9–1 水表数据集中抄录系统示意图
图 9–2 水表数据采集器原理框图
图 9- 3 水表数据采集器主程序流程图
图 9-4 集中器存储器扩展
图 9-5 集中器串行通信及串行总线
图 9–6 电能表数据集中抄录系统示意图
供电管理中心
集中器 集中器 集中器
采集终端 采集终端
全电子电能表脉冲电能表
……
……
…… 全电子电能表
城域网信道
脉冲信号
局域网信道
图 9–7 AT89C2051交通灯智能管理系统原理框图