|
|
| 例一:一个液晶显示的数字式电脑温度计 |
| |
| 液晶显示器分很多种类,按显示方式可分为段式,行点阵式和全点阵式。 段式与数码管类似,行点阵式一般是英文字符,全点阵式可显示任何信息, 如汉字、图形、图表等。这里我们介绍一种八段式四位LCD显示器,该显 示器内置驱动器,串行数据传送,使用非常方便。原理图如下图: |
| |
| |
| 下图是长沙太阳人科技开发有限公司生产的4位带串行接口的液晶显示模块SMS0403 的外部引线简图: |
| |
| |
| 有关该模块的具体参数,请查看该。此例中使用的温度传感器为美国DALLAS公司生产的单总线式数字温度传感器。该传感器本站有其详细的资料可供下载。此例稍加改动,即可做成温控器。 |
| |
| 下载驱动该模块的源程序LCD.PLM |
| |
| 例2: LED显示电脑电子钟 |
| |
| |
| |
| |
| 本例介绍一种用LED制作的电脑电子钟(电脑万年历)。 原理图如下图所示: |
| |
| |
| 上图中,CPU选用的是AT89C2051,时钟芯片选用的是Dallas公司的DS1302, 温度传感器选用的是Dallas公司的数字温度传感器DS1820,显示驱动芯片 选用的是德州仪器公司的TPIC6B595,也可选用与其兼容的芯片NC595或 国产的AMT9595。整个电子钟用两个键来调节时间和日期。一个是位选 键,一个是数字调节键。按一下位选键,头两位数字开始闪动,进入设 定调节状态,此时按数字调节键,当前闪动位的数字就可改变。全部参 数调节完后,五秒钟内没有任何键按下,则数字停止闪动,退出设定调 节状态。源程序清单如下(无温度显示程序): |
| |
| start:do; $include(reg51.dcl) declare (sclk,io,rst) bit at (0b3h) register; /* p33,p34,p35 */ declare (command,data,n,temp1,num) byte; declare a(9) byte; declare ab(6) byte; declare aco(11) byte constant (0fdh,60h,0dah,0f2h,66h,0b6h,0beh, 0e0h,0feh,0f6h,00h); declare week(11) byte constant (0edh,028h,0dch,7ch,39h,75h,0f5h, 2ch,0fdh,7dh,00h); declare da literally 'p15',clk literally 'p16',ale literally 'p17', mk literally 'p11',sk literally 'p12'; clear:procedure; sclk=0;io=0;rst=0; end clear; send1302:procedure(comm); declare (i,comm) byte; do i=0 to 7; comm=scr(comm,1); io=cy; call time(1); sclk=0; call time(1); sclk=1; end; end send1302; wbyt1:procedure(com,dat);/*字节写过程*/ declare (com,dat) byte; call clear; rst=1; call send1302(com); call send1302(dat); call clear; end wbyt1; wbyt8:procedure;/*时钟多字节突发模式写过程*/ declare j byte; call clear; a(7)=A(6);a(6)=a(0); rst=1; call send1302(command); do j=1 to 8; call send1302(a(j)); end; call clear; end wbyt8; RBYT1:PROCEDURE; DECLARE I BYTE; CALL CLEAR; RST=1; call send1302(0c1h); IO=1; DO I=0 TO 7; SCLK=1; SCLK=0; CY=IO; N=SCR(N,1); END; A(8)=N; CALL CLEAR; END RBYT1; send595:procedure; declare k byte; do k=0 to 7; data=scr(data,1); da=cy; clk=1; clk=0; end; end send595; send595_1:procedure; declare k byte; do k=0 to 7; data=scr(data,1); da1=cy; clk1=1; clk1=0; end; end send595_1; rb1:procedure(abc,j); DECLARE (I,j,abc) BYTE; CALL CLEAR; RST=1; call send1302(abc); IO=1; DO I=0 TO 7; SCLK=1; SCLK=0; CY=IO; N=SCR(N,1); END; ab(j)=N; ab(j)=dec(ab(j)); CALL CLEAR; end rb1; rbyt6:procedure; call rb1(0f1h,0); call rb1(0f3h,1); call rb1(0f5h,2); call rb1(0f7h,3); call rb1(0f9h,4); call rb1(0fbh,5); call rb1(0fdh,6); end rbyt6; wbyt6:procedure; call wbyt1(8eh,0); /* write enable */ call wbyt1(0f0h,ab(0)); call wbyt1(0f2h,ab(1)); call wbyt1(0f4h,ab(2)); call wbyt1(0f6h,ab(3)); call wbyt1(0f8h,ab(4)); call wbyt1(0fah,ab(5)); call wbyt1(0fch,ab(6)); call wbyt1(8eh,80h); /* write disable */ end wbyt6; rbyt8:procedure;/*时钟多字节突发模式读过程*/ declare (i,j) byte; call clear; rst=1; call send1302(command); io=1; do j=1 to 8; do i=0 to 7; sclk=1; call time(1); sclk=0; cy=io; n=scr(n,1); end; a(j)=n; end; call clear; a(0)=a(6);a(6)=A(7); a(0)=a(0) and 0fh; if a(0)>6 then a(0)=0; CALL RBYT1; if (a(1)=0 and a(2)=0 and a(3)=0) then do; do num=0 to 35; call time(250); end; temp1=1; end; if temp1=1 then do; temp1=0; ab(4)=ab(4)+1; if ab(4)>99h then do; ab(4)=0; ab(5)=ab(5)+1; if ab(5)>99h then ab(5)=0; end; call wbyt6; end; end rbyt8; display:procedure; /*jieya,yima,fasong*/ declare (i,n,m) byte; n=a(0) and 0fh; /* send week */ data=week(n); call send595; n=a(4); /* send date */ n=n and 0fh; data=aco(n); call send595; n=a(4); n=shr(n,4); data=aco(n); call send595; do i=1 to 3; /* send second,minute,hour */ n=a(i); n=n and 0fh; data=aco(n); call send595; n=a(i); n=shr(n,4); data=aco(n); call send595; end; do i=5 to 6; /* send month,year */ n=a(i); n=n and 0fh; data=aco(n); call send595; n=a(i); n=shr(n,4); data=aco(n); call send595; end; n=a(8); /* send 19 or 20 */ n=n and 0fh; data=aco(n); call send595; n=a(8); n=shr(n,4); data=aco(n); call send595; do m=0 to 5; n=ab(m); n=n and 0fh; data=aco(n); call send595_1; n=ab(m); n=shr(n,4); data=aco(n);新语文学习 call send595_1; end; ale=0; ale=1; end display; beginset:procedure; a(0)=06h;a(1)=58h;a(2)=59h;a(3)=23h; a(4)=30h;a(5)=06h;a(6)=97h;a(7)=00; a(8)=19h; /* set date/time (1997,7,1,8:00:00,week 3) */ call wbyt1(8eh,0); /* write enable*/ call wbyt1(80h,00h);/* start colock */ call wbyt1(0beh,0abh);/*两个二极管与8K电阻串联充电*/ command=0beh; /* write colock/date */ call wbyt8; call wbyt1(0c0h,a(8)); call wbyt1(8eh,80h); /* set write protect bit */ end beginset; key:procedure; declare (i,time1,k1,tem) byte; call time(100); k1=7;time1=30; if mk=0 then do; do while time1>0; week: if k1=0 then do; do i=0 to 5; /* call hz(a(0)); */ end; do i=0 to 3; /* call hz0; */ end; end; tem=a(k1); if k1=7 then tem=a(8); a(k1)=0aah; if k1=7 then a(8)=0aah; call display; call time(254); call time (254); a(k1)=tem; if k1=7 then a(8)=tem; call display; call time(254); call time(254); call time(254); time1=time1-1; if mk=0 then do;call time(100); /*MOD KEY PROCESS*/ TIME1=30; IF MK=0 THEN DO; k1=k1-1; DO WHILE K1=0FFH; K1=7; END; END; end; IF SK=0 THEN DO;CALL TIME(100); /*SET KEY PROCESS*/ TIME1=30; IF SK=0 THEN DO; tem=tem+1; tem=dec(tem); DO CASE K1; DO WHILE tem=7;/*week*/ tem=0; END; DO WHILE tem=60H;/*scond*/ tem=0; END; DO WHILE tem=60H;/*minute*/ tem=0; END; DO WHILE tem=24H;/*hour*/ tem=0; END; DO WHILE tem=32H;/*date*/ tem=1; END; DO WHILE tem=13H;/*month*/ tem=1; END; DO while tem=100h; /* YEAR */ tem=00; END; DO WHILE TEM>=21H; tem=19H; END; END; A(K1)=tem; if k1=7 then a(8)=tem; END; END; END; END; end key; main$program: mk=1;sk=1;temp1=0;num=0;p32=1; if sk=0 then call beginset; clk=0;da=0;ale=1; loop: do while mk=1 ; if a(0)>6 then a(0)=0; command=0bfh; call rbyt8; call display; do while mk=0; call key; call wbyt1(8eh,0); command=0beh; call wbyt8; call wbyt1(0C0H,A(8)); call wbyt1(8eh,80h); end; end; goto loop; end start; |
| |
| 例3:一个6位LED、4个按键的显示板 |
| |
| 按键和显示是单片机系统的基本输入输出部件,下面介绍一个由74LS164驱动的6位数码管和4个按键组成的通用仪表面板。 原理图如下图所示: |
| |
| |
| 其线路板图如下图所示: |
| |
| |
| 注:此板中多了三个LED发光管,这三个发光管是分别接在IC4,IC5,IC6 的13脚(Q7,数据 串出脚)上的 |
| 例四:智能电机转速计数器 |
| |
| 本电路由AT89C51单片机、CD4511、LCD数码管、磁敏霍尔元件等组成。电路工作原理。 用磁敏元件作为传感器。在无外磁场时,磁敏传感器的OUT端输出+4.35V(1电平),当电机转动一圈时,带动小磁铁N从磁敏传感器上掠过一次,传感器在外加磁场的作用下,输出一次+0.05V(0电平)脉冲信号,在程序中设INT0为边沿触发,OUT端这一变化通过INT0送至AT89C51,产生一次中断,使累加器A自动加1。计数一次。电机每转动一圈,产生一次中断,累加器加1。当软件计数器T0定时1s时,将计数值送LED显示,LED显示的数值即当前电机每秒钟转速。由于采用软件定时,定时误差值比常规硬件定时器小得多。CD4511是BCD—七段LED锁存/译码/驱动器。当LE为低电平时,将加在A、B、C、D端的数据译成段驱动信号,经限流电阻送到数码管的段控制线上。当LE为高电平时,驱动信号被锁存在CD4511的输出端,实现静态显示。因CD4511输出为高电平有效,故选用共阴极数码管。D1为工作指示灯,供调试用。 |
| |
| 本电路的调试分软件和硬件两部分。建议先检查传感器是否工作,这可从D1的显示看出。LED显示就要借助软件了。本文附有调试程序ts.Asm。单步执行该程序,如果数码管显示的不是789,那么硬件一定有问题,请仔细检查。当确信硬件无误后,便可录入main.Asm程序,仿真调试通过后,将程序写入AT89C51中,电路设计就完成了。 |
| |
| 本系统能在0~999转/s范围内对电机转动进行正确计数,满足了生产的需要。将电路稍加改动,还可以扩展为脉冲频率计等。 |
| |
| 例五:自制学生坐姿矫正仪 |
| |
| 《电子报》曾介绍过用普通电子电路制作的学生视力保护小装置,受其启发笔者用单片机加少许元件构成了一个简单实用的学生坐姿矫正仪。硬件电路见附图。 |
| |
| 采用AT89C2051单片机控制。P3.7口输出大约38kHz的脉冲信号,驱动红外发光管LED1。接收管PTR1是一体化的红外接收头。安装时让红外发光管和接收头构成反射式传感器。当学生的坐姿不正确,即头离书本太近时,LED1发出的38kHz红外光被学生的头部或脸部反射回来,照到PTR1上。由于接收头的中心频率是38kHz,所以接收头PTR1输出低电平,将单片机的P1.3脚拉低。经内部程序判断后在单片机的P3.4口输出100ms的高电平,驱动蜂鸣器发声,提醒学生改正坐姿。 |
| |
| 单片机的定时器T0工作于方式2来产生大约38kHz的方波信号。程序用FRANKLIN C15编写。程序清单如下: |
| |
| #include<reg51.H> #define uchar unsigned char #define uint unsigned int sbit p3_7=p3^7; sbit p3_4=p3^4; sbit p1_3=p1^3; /*50ms延时子程序*/ void delay(uint ms) { uchar t; while(ms-) {for(t=0;t<125;t++= {;}; = = /*T0中断程序*/ timer 0 () interrupt1 using 1{ TH0=0×00;TL0=0×E6;P3_7=!P3_7;} /*主程序*/ main() { TMOD=O×02;EA=1;ET0=1;TR0=1;TH0=0×00;TL0=0×E6; while(1);{ while(p1_3=1) p3_4=1; delay(2); p3_4=1;} } |
| |
| 例六:用89C2051控制摩托车报警系统 ——摩托车防盗报警系统维修后感 |
| |
| 笔者花了二百元左右买回一只摩托车防盗报警系统装在车上,非常方便。该系统有防盗设定、寻车求救、启动暖车、解除防盗等四项功能。但用了不到一个月,报警喇叭就会无故“嘀嘀”响个不停,所有功能完全消失,联系厂家无果,只能自己修。经分析,系统由四部分组成,结构如图1所示。 |
| |
| 经查,除信号处理电路外,其他电路功能正常。信号处理电路用的是台湾义隆的EM78P156AP单片机,其原理图如图2。 |
| |
| 在用遥控器控制时,PT2272的VT脚输出暂存高电平,相应的数据输出端D1~D4输出锁存高电平。单片机判断VT信号,再根据D1~D4的状态输出相应的信号。 |
| |
| 1. 若D1为高电平,报警一次,L、R闪一次,三秒钟后进入防盗状态。此时,若反馈电路(振动信号,锁头正电)有信号,则报警一次,若五秒钟内仍有反馈信号,则连续报警,直至用遥控器解除。 2. 若D2为高电平,报警二次,L、R闪二次,熄火继电器动作一次,防盗解除。 3. 若D3为高电平,锁头正电继电器吸合,同时启动继电器吸合两秒钟。若此时仍然按住遥控器,则启动继电器保持吸合,直到放开遥控器。 4. 若D4为高电平,则报警十六次,同时L、R闪十六次。 弄清了以上工作方式,笔者便着手用89C2051单片机替代EM78P156AP,程序流程见图3,接线如图4。 |
| 说明: |
| |
| 系统时钟:11.0592MHz;输入为高电平有效;输出为低电平有效。 |
| |
| 程序清单略。 |
| |
| 系统调试: 焊一块89C2051电路板;将继电器的驱动管PNP换成NPN,略改电路;拆下EM78P156AP,用排线引出需要的I/O口线并与892051电路板连接;将电路接到12V稳压电源上,按动遥控器,检查继电器吸合情况,一切正常后再接到摩托车上。 |
| 永磁铁氧体 |
| 读者亦可购买配件(无线遥控发射接收组件、振动传感器、报警器、其他元器件)自己组装系统。 |
| |
| |
| |
| 《电子报》1999年第46期登载了笔者撰写的《TSD-2视频运动检测器》一文,得到了读者的广泛关注和对产品的一致肯定。现在,我们应用单片机控制技术,做了较大的改进,使其更具可靠性、实用性和普及性。 |
| |
| 一、视频运动检测报警器的功能 |
| |
| 视频运动检测属于安全监控系统中的报警设备,功效与红外微波双鉴探测器没有多大区别。红外、微波等传统探测器受环境因素影响很大、抗干扰能力差、误报率很高,造成值班人员不必要的紧张。视频运动检测报警器使用时是串联在摄像头到视频监视器的视频信号线上的,它根据视频取样报警,即在监视器屏幕上根据图像内容开辟若干个长方形的隐形警戒区(如画面上的门窗、保险柜等重要部位),当监视器现场有异常情况发生时(如灯光、火情、烟雾、物体的移动等),可使警戒区窗口内图像的亮度、对比度及图像内容(即信号幅度)产生变化,当变化超过设定的安全值时,即可发出报警信号。 |
| |
| 改型后的微电脑视频运动检测报警器有如下功能: |
| |
| 1.每路摄像头的视频信号可以通过运动检测报警器在监视器屏幕上设置四个视频报警警戒窗口。这四个警戒窗口可由单片机控制,在屏幕范围内任意移动。2.当四个警戒窗口中的任何一个窗口被触发报警后,该警戒区窗口将在屏幕上发生闪动,提示已被触发。3.具有报警继电器输出,报警时间由单片机控制可调。4.具有报警自动录像接口,可控制录像机自动录像。5.可扩展RS-485数据接口,实现多机联动、远程设置、远程监控等功能。 |
| |
| 二、视频运动检测报警器的工作原理 |
| |
| 微电脑视频运动检测报警器采用模块化设计,每个模块负责处理并实现一个或多个功能,提高了系统的可靠性和应用灵活性。图1为单路台式微电脑视频运动检测报警器电原理图。系统主要由单片机89C51、视频处理模块、警戒窗口发生模块、运动检测模块四部分组成。 |
| |
| 摄像机的全电视信号由视频处理模块TS1827{1}脚,经前置放大电路分成三路,其中一路与{3}脚的复合窗口脉冲混合,放大后直接送到监视器,因此监视器屏幕上显示的图像将会出现四个长方形警戒窗口。第二路信号经同步分离电路分离出行、场同步信号,由{8}、{9}脚输出。第三路经同步头钳位放大电路放大后由{3}脚输出。调节{11}、{12}脚电位器可调节放大电路增益,用于改变报警检测的触发灵敏度。 |
| |
| 警戒窗口脉冲发生模块,用于产生警戒窗口。行、场同步信号由TS1828{1}、{2}脚输入,行、场同步信号由单片机控制经适当延时,产生延迟脉冲混合成复合窗口脉冲(参见图2)。{5}~{8}脚分别为四个警戒窗口的复合脉冲输出,复合窗口脉冲控制电子开关4066,在窗口脉冲到来时打开电子开关,反之断开。因此电子开关输出的仅是窗口范围内的图像信号。{14}脚为四个窗口复合脉冲的总输出,该输出连接到TS1827{3}脚进行摄像头的视频信号与窗口复合脉冲信号叠加。{9}~{13}脚为四个窗口脉冲的单输出控制和复合输出控制。它们连接到单片机I/O口,由单片机在报警状态下,判断哪一路窗口被触发并使其闪动指示。也可由操作按键控制四个窗口在屏幕上的隐含或显示。原理框图如图2。 |
| |
| 每片TS1826运动检测模块可以处理两个警戒窗口的视频信号。由电子开关4066输出的窗口视频信号经滤波器滤除部分高频成分,再经非线性处理,压缩信号的非动态成分,最后进行动态检测。动态检测实际上是一个电平保持电路,它将经过上述处理的静止窗口图像信号的电平长时间保持,然后每隔一定时间与未经保持的同一窗口图像信号电平作比较,若有差别,说明此窗口内图像信号的对比度有变化,由{13}、{14}脚输出报警脉冲,通知单片机有窗口被触发。{10}、{12}脚为上、下限触发电平设置,动态检测所保持的静止窗口图像,信号电平一般为电路工作电压的1/2。上限触发电压可设置为:1/2工作电压至全工作电压;下限触发电压可设置为0V~1/2工作电压。设置这两个电压、工作点时,应使这两点电压和1/2工作电压呈对数关系。距1/2电压差值最大时,触发灵敏度最低;差别最小时触发灵敏度最高。由于视频处理电路的噪声影响将会引起误报,因此,应将上、下限触发电压设置为比较合适的电压值。 |
| |
| 三、单路台式微电脑视频运动检测报警器 |
| |
| 可处理一路摄像头输出视频信号的检测报警(见图1)。 系统采用AT89C51为主控CPU。P2口为功能操作键,可设定警戒窗口在屏幕上的位置、报警定时、报警方式、自动录像等功能。为防止单片机程序死机或跑飞,保证整机可靠工作,还设有看门狗定时器IMP813。 |
| 四、四路壁挂式微电脑视频运动检测报警器 |
| |
| 为了扩展应用范围,发挥模块化设计的优势,我们将四路运动检测电路集成在一块主板上,每路摄像头视频信号均有独立单片机系统控制、检测。操作接口由一片89C51担任,并同时驱动一块16×2液晶显示器作为操作提示及功能菜单显示,接口CPU通过串行总线与其它四路检测控制CPU通信,实现每路检测电路的集中设置、集中操作及外部联网。接口电路如图3所示。 |
柴德有 | |
| 串行通讯的广域防盗报警系统 |
| 作者:徐福成 赵丽华 刘克智 |
| |
| 本文介绍的热释电红外线广域防盗报警器,主机和探头均采用单片机控制,二者间通过串行总线通讯。一台主机原则上可连接多达256个探头。每个探头都有自己的地址码(根据电源供电和用户需要,目前探头的最大数量为32个)。探头由主机集中供电,用电安全、系统简洁。本系统适用于果园、养殖场、蔬菜大棚、鱼塘、仓库、材料场等大面积的防火、防盗监测报警。 |
| |
| 本系统安装简单、节省线材,抗干扰能力强,其自检自查功能保证了系统能正常工作。利用E2PROM自由修改设置,数据在掉电状态可保存100年。此外,系统还有过流保护、定时工作、精确的数码时钟,以及方便的红外线遥控器操作等功能。 |
| |
| 主机工作原理 |
| |
| 主机电路原理如图1所示。右半部分是电源、报警、继电器输出和电流检测电路等。电源电路(图中略)提供5V的Vcc、VDD,以及+12V三组电源,+12V与Vcc、VDD不共地。 |
| |
| 单片机与外部线路通过光耦隔离,保证了单片机可靠、稳定地工作。Vcc和VDD之间通过一个锗二极管隔离。VDD电压4.8V,它在为单片机供电的同时,通过电阻接4节5号充电电池,平时电池处于浮充电状态,一旦停电,由4节充电电池为单片机供电,由于二极管的隔离作用,显示电路不得电,数码管不显示,节省电池的电能。停电时,可以外接12V电瓶为外电路供电,以保证正常报警。在非报警状态下,此电源耗电极小。 |
| |
| 单片机采用AT89C51连接一片X25045(关于X25045的相关介绍见今年《电子报》第7期第十二版),用于储存用户的设置信息(10次报警时间、地点)、提供看门狗和低电压检测等,使单片机工作更加安全可靠。 |
| |
| AT89C51的P0、P2口以及P3口的P3.6、P3.7用于数码显示。平时4个数码管以及两个秒点灯组成时钟显示,以分钟为进位单位,不论白天黑夜均可清晰地观察时间。单片机驱动数码管显示的电路比较多见,此处不再赘述。 |
| |
| P1.5是发码控制脚,通过光耦合放大,将码脉冲信号发送到信号线路上。P1.6控制报警灯继电器的工作状态,继电器的常开触点通过一个单相电源插座接台灯遥控;当设置成灯光参与报警时,熄灭状态的台灯会立即点亮参与报警,尤其在夜间,既是照明灯,又是报警灯。P1.7控制探头供电继电器,通过探头供电与否决定警戒状态的设置与解除,同时用作探头供电电源的过流保护,一旦短路或严重漏电,单片机控制继电器吸合,常闭触点断开,供电停止。P3.2检测探头供电线路的电流,一旦出现过流,单片机执行程序被立即中断,转向执行过流保护,切断供电电路。探头由+12V通过R7和R8、光耦IC5B,经由J2的常闭触点供电。正常情况下,IC5B的输入端无电流,一旦线路短路或严重漏电,探头电流增大,R7两端的电压降增大。当电压超过光耦的输入导通电压时,IC5B输出端由截止变成饱和,P3.2脚由高电平下拉成低电平,单片机执行中断程序,保护电路动作,保护供电电路的安全,同时发出探头过流提示音。2分钟后,单片机尝试恢复供电。如果探头电路恢复正常,供电成功,如果不正常,重复以上保护和提示的过程。 |
| |
| P3.0输出各种报警音频信号,P3.3接收各探头送来的脉冲数字信号。信号线路上的信号经过V2的放大整形后,再经光电耦合到P3.2脚,由P3.2脚读出数据。红外线遥控器发出的遥控信号,经过V1放大后送到P3.4脚,由P3.4读出遥控器发来的数据,单片机按遥控器指令完成相应的工作。利用P3.3和P3.4的外部中断和定时(计数)中断可准确无误地接收信号。 |
| |
| 通过遥控器可以实现:1.当时时间的输入;2.警戒状态的设置和解除;3.警戒状态的定时开启和定时关闭的时间预置;4.探头号码的输入和消除;5.遥控开灯、遥控关灯;6.定时开灯或定时关灯;7.查询已发生过的报警历史记录;8.查询预置的定时时间等操作,比用按钮设置方便得多。 |
| |
| 按钮K1和K2是功能设置开关,作用与遥控器的部分功能相同。可完成4种操作:1.当时时间的输入;2.探头号码的输入和解除;3.灯光报警的设置和解除;4.警戒状态的设置和解除。 探头电路工作原理 |
| |
| 图2是广域防盗报警器的探头电路原理图。控制器采用89C2051,其中P1.0和P1.1是内部精密比较器的同相输入和反相输入端,内藏输出端P3.6在编程时允许使用。本电路中P1.0和P1.1接成输入端悬浮式的比较器;P3.2接收主机发来的脉冲数据,P3.4向主机发出应答和报警脉冲码数据。其它口用于生产时对探头的性能自动检测。 |
| |
| 主机通过CZ1的①、②脚向探头提供11V~11.5V的直流电源,CZ1的③脚是串行通信线。串行通信电路与主机相同。平时,IC3A截止,主机通过R14输出12V电压,V3截止,IC3的①、②脚无电流通过,对应的输出端截止,⑧脚为高电平。当主机输出低电平脉冲数据后,V3饱和,IC3的①、②脚有电流,输出端饱和,P3.2为低电平,产生外部中断,及时接收主机的数据。需要向主机发应答信号时,由P3.4经IC3的③、④、⑤、⑥脚传送到主机。 |
| |
| 热释红外线传感器,接收人体热释红外线信号,经V1和V2两级交流放大送电压比较电路,比较器输入端P1.0、P1.1之间的静态电压由R5、R3对R11两端电压的分压决定,VP1.0高于VP1.1,P3.6输出高电平。有人进入检测范围内,带菲涅尔透镜的传感器输出变化的信号,经过两级交流放大后加在P1.1脚上,使得P3.6输出状态变化。单片机按P3.6输出的交变信号的规律编写算法程序,对P3.6脚的信号计算、分析、判断,去掉干扰信号,核实真正的警情信号后,向主机发送“正常”或“报警”状态数据。 |
| |
| 系统工作原理 |
| |
| 探头与主机通过串行总线连接,所有的探头并联在同一条总线上,每个探头都有自己的号码。探头接入后,通过按钮开关或遥控器向主机输入探头号码,主机将号码排序后储存到E2PROM中。程序进入正常工作后,主机将探头的数量和探头号码通知每个探头,各探头根据本身的号码和其它探头的号码顺序,经过运算确定与主机的通信的时间和方式,其它时间探头全部用于警情检测。 |
| |
| 探头检测到警情,核实后向主机发送报警信号,主机发出报警声,并显示报警探头号码,值班人员便知出事地点。 |
| |
| 如果盗贼切断线路,断点以后的探头不能与主机通信,主机核实后,显示丢失的探头号码并报警。 |
| |
| 一旦探头发现警情、探头本身出现问题,或者总线遭到破坏,主机均可及时发出报警或提示音,显示报警地点或事故状况。 |
| |
| 该报警器的自检、自查功能、过流保护后的自动恢复功能等,是通过软件来完成的。广域报警器主机的程序比较大,不便提供,需要者可与作者联系(E-mail:xpc@cz-user.He.Cninfo.Net)。 |
| |
| 智能LED电子钟的制作 |
| |
| 作者:湖南 李杰 |
| |
| LED电子钟以美观、清晰、便于夜间观看而深受电子爱好者的青睐。采用专用的LED电子钟芯片制作,有时达不到功能要求,需添加辅助电路,电路复杂,不便于电子爱好者自制 |
| |
| 如果采用单片机(89C2051),用软件完成各种功能,则可做出功能各异的智能电子钟,而且电路非常简单。 |
| |
| 图1是一个具有以下功能的电子钟的电路。 1 计时:秒、分、时、天、周、月、年;2 闰年自动判别;3 五路定时输出,可任意关断(最大可到16路);4 时间、月、日交替显示;5 停电、来电自动判别;6 自定任意时刻自动开/关屏;7 三路倒计时(最大可到8路);8 计时精度:误差≤1秒/月(具有微调设置)。 |
| 一、电路原理 |
| |
| 由单片机(89C2051)、LED、K1等组成最基本的单片系统。所有的软件、参数均存放在89C2051的FlashROM和内部RAM中,减少了芯片的数量和整机的电流,延长了备用电源的工作寿命(停电时)。 由于89C2051的内部FlashROM只有2k,RAM只有128个字节,故软件编制时要精炼,一些数据的存放要采用压缩方式,而且CPU要工作在空闲模式下,以降低功耗。LED、BEEP均直接由89C2051驱动。 |
| 键盘采用动态扫描方式查询。所有的查询、设置功能均由K1、K2完成;K3、K4、K5完成倒计时的启动。 |
| |
| 电源在3 3~5V之间均可正常工作。 |
| |
| 软件的流程图见图2。 主程序非常简单,初始化后,CPU便进入空闲模式,等待T1定时中断的到来(25ms一次)。所有的功能模块,均在T1定时中断服务程序中执行。再利用T0定时器对T1定时中断服务程序的执行时间做记录,重置T1定时器常数时加上T0的值即可。这样可以精确地补偿时间误差。 |
| |
| 用AT89C2051控制家用全自动洗碗机 |
| |
边缘化 | 本文介绍一种采用AT89C2051控制的家用全自动洗碗机。重点介绍其如何利用片内精确模拟比较器实现温度检测和多种故障检测。文章给出洗碗机控制器的主要工作流程、硬件框图、温度及故障检测电路图。 |
| |
| 家用全自动洗碗机具有冲洗、标准洗、强洗三种洗涤方式,程序一旦启动便自动地按用户选定的洗涤方式进行洗涤,洗涤结束后自动断电。以标准洗涤为例,其洗涤全过程为:排水(至低水位)→进水至高水位→洗涤→加热洗涤(加热由温度传感器控制,65℃开、75℃关→排水(至低水位)→进水至高水位→清洗1→加热清洗1(加热由温度传感器控制,65℃开、75℃关)→排水(至低水位)→进水至高水位→清洗1→加热清洗1(加热由温度传感器控制,65℃开、75℃关)→排水(至低水位)→结束(发出洗涤结束蜂鸣音并自动断电)。 |
| |
| 洗碗机的硬件框图如图1: |
| |
| 从框图中可以看出,系统需要检测的信号有水开关、门开关、加热继电器、断电开关,开路、短路、高于75℃、低于65℃等多种状态,如何用89C2051实现这些状态的检测呢? 图2是用89C2051控制的家用全自动洗碗机显示、键盘、温度及故障检测电路图。 图中,模拟开关IC1的输入从0~5为100kΩ、620Ω、1 8kΩ、2 4kΩ、3 9kΩ、3 9kΩ,对应于温度传感器开路、短路、高于75℃、低于65℃、门关好及加热器接通的设定值,模拟开关IC2的输入从0~3为温度传感器的输入、4为门开关检测输入、5为加热器检测输入,IC1、IC2的输出端分别接89C2051片内精确模拟比较器的反向输入端AIN1和同向输入端AIN0,比较的结果转移到P3 5输出,单片机的P1 5-P1 7(P3 6除外)控制选择模拟开关IC1、IC2那一路通。 |
| |
| 这样,系统就有效地利用89C2051片内的精确模拟比较器实现了包括温度检测在内的多种状态及故障检测和报警。 |
| |
| 用890C2051控制的数字测温仪 |
| 1999年,第51期,类别:初学之友 |
| |
| 本文通过数字测温仪的设计,讲述单片机系统硬件设计的过程。要求: |
| |
| 1 单点温度测试 2 测温范围:-10℃~50℃ 3 分辨率:0 1℃邮件发原理 4 精度:+0 5℃ 5 采用LED数码显示 |
| 根据上述要求,确定四位数码显示:第一位为符号位,第二、三位为整数位,第四位为小数位;从测温范围和精度看,热敏电阻完全能满足要求。采用热敏电阻与电容器构成单稳电路再经单片机对单稳脉冲宽度计数,查表可求得对应温度。 |
| 根据以上分析,可知输出信号有13个:数码管段选信号8个,数码管位选信号4个,单稳触发信号1个;输入信号1个;单稳脉冲信号。 |
| 因而要求单片机具有14个或大于14个I/O口,且其中8个口驱动能力应在8mA以上。 89C2051具15个I/O口,P1、P3口均能吸收20mA电流,片内有2k程序存储器,2个16位定时计数器,完全满足系统对单片机的要求,加之芯片价格便宜与应用广泛的MCS-51系列单片机完全兼容,因此选89C2051作控制芯片。 |
| 定义P1口为数码管段选输出,由于仅第三位需显示小数点,故其余三位未接h,P3 0~P3 3为数码管的位选信号,P3 5为单稳电路的触发信号输出口,P3 4为单稳脉冲输入口。 |
| |
| 图1为用89C2051控制的数字测温仪的硬件电路图。 从以上设计过程可以看出,单片机系统硬件设计,首先要明确系统要求,确定I/O口线的数量以及对单片机内部资源有无特殊要求,然后选择能满足要求的单片机,定义I/O口,完成硬件设计。 |
| 微电脑催眠器 |
| 作者:成都 夕阳 |
| |
| 一、特点和用途 |
| |
| 1 利用单片机控制,体积小,功耗低;2 用电池供电,使用方便。 本报曾在1998年第33期和1999年第14期登载了两种国外的生物反馈心态调节器,引起读者的极大兴趣。人的大脑在不同的精神状态发射出不同的脑电波,根据生物反馈原理,利用人为制造的类似脑波的δ、θ、α、β波,通过声、光或磁场对大脑进行刺激诱导,改变大脑的活动状态,从而达到调节人们心态的目的。人在睡眠状态时发射δ波,其范围是0 5Hz~4Hz,微电脑催眠器能自动产生与其接近的磁场,诱导大脑进入睡眠状态。 |
| 通过本制作,熟练掌握AT89C2051的定时器的应用以及数据传送指令、条件转移指令等常用的实用编程方法。 |
| 二、工作原理 |
| |
| 原理图如图1所示。D1为AT89C2051型单片机。C1和R1组成D1的上电复位电路,C4、C5为+5V电源滤波电容。D2是四异或门,与R2~R5等组成波形和频率变换电路。该变换电路的原理如下:当D1的P1口输出00H时,D2:A~D2:D的各输出端为低电平,因此A点电压为0V;当P1口输出01H时,D2:A的1脚为高电平,2脚为低电平,因此3脚为高电平,R2~R5的等效电路如图2(a)所示,R3~R5并联电阻约为31 3kΩ,与R2分压后A点电压为0 37V,当P1口输出02H时,D2:B的5脚为高电平,6脚为低电平,因此4脚为高电平,R2~R5的等效电路如图2(b)所示,R2、R4、R5并联电阻为33 88kΩ,与R3分压后A点电压为0 72V。同理,当P1口输出0FH时,D2:A~D2:D全输出高电平,A点电压为5V。P1口输出数据与A点电压的关系见附表。因此加在L1上的电压波形为正弦波。改变D1在其P1口输出信号的时间间隔,即可改变输出正弦波的频率。若时间设定为1小时,频率逐渐从4Hz变到0 5Hz,由L1产生类似δ波的磁场。L1的制作可参考本报1998年合订本下册第90页文章。当然本机还可再附加上电源延时关机电路,以便使用。 |
| |
| 三、软件设计 |
| |
| 这里以产生2Hz的频率为例介绍软件设计方法。P1口P3口均设置为输出状态,用P3 7口线驱动LED。用AT89C2051的内部定时器T0作时间基准,控制P1口输出信号的时间间隔,当P1口输出第16个数据和第32个数据时,将P3 7的状态翻转,从而使LED的闪亮频率与正弦波频率一致。若在A点产生2Hz的正弦波,则必须在P1 0口线输出32Hz的方波(P1 1~P1 4口线输出的方波的频率依次减半)。因此,P1口输出信号的时间间隔为31 25ms,因图1中晶振频率为6MHz,计算出机器周期T=12/fc=2(μs),采用定时器T0,工作于方式2(常数自动装入的8位定时器),产生0 25ms的定时。定时器初值为#82H,T0每中断一次,21H加1,当21H加到#7DH时(十进制125),即到31 25ms。然后更新P1口数据(加1)。 |
| |
| 程序清单如下: ORG 0000H AJMP MAIN ORG 000BH LJMP WTO ORG 30H MAIN:MOV SP,#50H MOV 20H,#0;(向P1口送的数据) MOV P1,#0 ;(31 25ms在WTO中加1ADAU1452) MOV P3,#0 MOV TH0,#82H MOV TH0,#82H MOV TMOD,#02H SETB EA SETB ETO SETB TRO M:MOV P1,20H AJMP M WTO:PUSH ACC PUSH PSW INC 21H MOV A,21H CJNE A,#7DH,TORETI MOV 21H,#0 INC 20H INC 22H MOV A,22H CJNE A,#16,TORETI CPL P3 7 MOV 22H,#0 TORETI:POP PSW POP ACC RETI END |
| 四、系统调试 |
| |
| 软件调试:1 将上面源程序输入PC机以后,以“L07 ASM”文件名存盘。2 运行“MCS51 EXE”调试软件,待屏幕显示调试窗口以后,按<F3>键,调入“L07 ASM”,按<F9>键进行汇编。3 按<ALT>+<F>键,将“L07 ASM”转换成编程器需要的格式的文件。选择“Save OBJ as…”项,按回车键待出现选择窗口后,按<Esc>确定文件名和文件格式。文件格式选“ ROM”,然后存盘。4 按<Esc>键前退一步。5 按<Alt>+<X>键返回DOS系统。 用本报第40期第九版介绍的方法将“L07 ROM”固化到AT89C2051中。 硬件调试:1 检查线路应焊接无误。2 先不插入AT89C2051,接通电源后用短路线分别在D1插座的{12}脚~{16}脚加如附表所示的P1口电压(“1”为+5V,“0”为接地。测量A点电压,当{12}脚接+5V(其余各脚接地)时,A点电压应为0 4V左右,当{13}脚接+5V时,A点电压应为0 7V左右,当{14}脚接+5V时,A点电压应为1 3V左右,当{15}脚接+5V时,“A”点电压应为2 6V左右,若符合要求则D2:A~D2:D工作正常,再按附表中“P1口数据”逐点试验,A点电压应基本符合附表要求。若相差较大,则检查R2~R5的阻值。将写入程序的AT89C2051插入电路中的IC插座上,接通电源后观察LED应闪亮,用指针式万用表测量N15脚电压,指针摆动证明系统工作正常。 |
| |
| 家用防盗报警器 |
| 作者:成都 夕阳 |
| |
| 一、特点和用途 1 用单片机控制,体积小,成本低。2 用红外线收发管做探测器,安装隐蔽,窃贼不易发现。3 探测信号采用脉冲信号,节能且抗干扰。 通过本制作,熟练掌握数据传送指令(MOV)、条件转移指令(CJNE)等的实用编程方法。 |
| 二、工作原理 |
| |
| 原理图如附图所示。D1为AT89C2051型单片机。C1和R1组成D1的上电复位电路,C4、C5为+5V电源滤波电容。D2是六反相器。L1~L6是红外发射管,其负极端接于P1口,P1口设置为输出状态,当P1口为“0”时,L1~L6发光。V1~V6是红外接收管,当接收到红外光时导通,+5V电压通过V1~V6加到反相器4069的输入端,经4069反相为低电平,因此D1的P3 0~P3 5为低电平。发射和接收管分别安装在门和窗口的适当位置,当窃贼入室时遮挡了红外光,接收管截止,反相器输入端为低电平,因此D1的P3 0~P3 5为高电平,当在一定时间内检测到位于不同位置的光束被遮挡(或未被遮挡)时,则由P3 7口输出报警信号。驱动讯响器和红灯,进行声光报警。(当家中无人时,还可以连接电话,自动拨打110或BP机。此功能以后另文介绍。) |
| |
| 三、软件设计 |
| |
| P1口设置为输出状态,直接驱动红外发射管,P3 0~P3 5设置为输入端,检测红外接收管的状态。正常状态的判断标准应根据红外收发管安装位置和监视的目标而定,例如:L1和V1之间正常时有遮挡物,当把该物体移动后为异常,其余红外收发管之间无遮挡为正常,有遮挡时为异常,则当P1口输出00H时,P3口的正常状态数据是#01H。当报警时,从P3 7口输出高低电平间隔1秒的脉冲信号。 |
| |
| 程序清单如下: ORG 0000H AJMP MAIN ORG 000BH LJMP WTO ORG 30H MAIN:MOV SP,#50H MOV 20H,#0 MOV 24H,#0 MOV P3,#0 MOV P1,#0 MOV THO,#6 MOV TLO,#6 MOV TMOD,#02H SETB EA SETB ETO SETB TRO M:MOV P1,#00H MOV A,P3 ANL A,#7EH CJNE A,#7FH,W37 AJMP M WTO:PUSH ACC PUSH PSW INC 22H MOV A,22H CJNE A,#200,TORETI MOV 22H,#0 INC 23H MOV A,23H CJNE A,#10,TORETI ;ls MOV 23H,#0 JNB 00H,WBJ TORETI:POP PSW POP ACC RETI WBJ:CPL P3 7 AJMP TORETI W37:INC 24H CJNE 24H,#10,M SETB 00H AJMP M END |
| |
| 四、系统调试 |
| |
| 软件调试;1 将上面源程序输入PC机以后,以“L06 ASM”文件名存盘。2 运行“MCS51 EXE”调试软件,待屏幕显示调试窗口以后,按<F3>键,调入“L06 ASM”,按<F9>键进行汇编。3 按<ALT>+<E>键将“L06 ASM”转换成编程器需要的格式的文件。选择“Save OBJ as…”项,按回车键待出现选择窗口后,按<Esc>键确定文件名和文件格式。文件格式选“( )ROM”,然后存盘。4 按<Esc>键前退一步。5 按<Alt>+<X>键返回DOS系统。 用以前介绍的方法将“L06 ROM”格式的文件固化在AT89C2051中。 |
| 硬件调试:1 检查线路应焊接无误。2 先不插入AT89C2051,用短路线把D1插座的{12}脚接地,调整L1和V1的安装位置和角度,测量D1插座的2脚电压,L1和V1之间无遮挡时2脚电压约为0V,有遮挡时2脚电压大于4V。用相同方法反复调整其他几对红外收发管的位置和角度。 使D1插座的3、6、7、8、9各脚的电压符合要求。将写入程序的AT89C2051插入电路中的IC插座上,接通电源即可工作。 |
| |
| 微电脑彩灯控制器 |
| 作者:成都 夕阳 |
| |
| 一、特点和用途 |
| |
| 1 用单片机控制,电路简单,制作容易,成本低。2 克服了传统彩灯控制器的通病,即硬件一旦固定,功能就不能改变。3 采用矩阵式输出,使单片机的15根口线可以控制56路彩灯。本控制器在电路不变的条件下,通过更改软件,能极方便地实现各种不同的花样控制。本控制器可以用在广告灯箱控制,大型广告牌背景灯控制,各种“跑灯”“流水灯”控制等场合。 |
| |
| 通过本制作,进一步学习单片机定时器的使用方法,熟练掌握数据传送指令(MOV)、条件转移指令(JBC)等的实用编程方法。 |
| |
| 二、工作原理 |
| |
| 原理图如附图所示。D1为AT89C2051型单片机。C3和R1组成D1的上电复位电路,C1、C2为+5V电源滤波电容。D2是驱动器。从图中可以看出,本彩灯控制器仅由D1、D2和几个外围元件组成,但是它可以驱动56组彩灯且控制规律灵活多变。图中粗实线右边部分是控制执行器件(本例用固态继电器,也可选用可控硅或继电器等)。单片机的控制输出信号由两个I/O完成。采用矩阵式输出方式。由P1口输出8个行驱动信号,由P3口输出7个列驱动信号。如果在P3 0口线上输出高电平时,经过D2反相为低电平,此时为固态继电器SSR1~SSR8导通作好了准备,其中哪一只固态继电器导通取决于P1口的状态。当P1口输出00时,SSR1~SSR8全部熄灭,当P1口输出01H时,在P1 0口线上处于高电平的SSR1导通,由SSR1控制的彩灯(L1)被点亮;当P1口输出02H时,P1 1口线上处于高电平的SSR2导通,由SSR2控制的彩灯(L2)被点亮。以此类推。因此通过编制软件,改变P1口和P3口的状态,达到对彩灯的不同的控制效果。大大减少了硬件的投资,可以达到以不变应万变。 |
| |
| 三、软件设计 |
| |
| 不同的软件实现不同的控制规律,从而达到不同的彩灯显示效果。下面以流水灯为例介绍对前8个灯(L1~L8)控制的软件设计方法。读者掌握了基本方法以后,就可以灵活的变通处理。 控制要求:彩灯全亮1秒→全灭1秒→L1亮1秒→L1、L2亮1秒→L1~L3亮1秒→L1~L4亮1秒……全亮1秒(循环) |
| |
| 程序清单如下: ORG 0000H ;程序入口地址 AJMP MAIN ORG 001BH;定时器TO中 断入口地址 LJMP WTO ORG 30H MAIN:MOV SP,#50H;设置栈 指针 MOV 20H,#0 MOV 21H,#0 MOV P3,#0 MOV P1,#0 MOV THO,#6;TO中断(方式2常数自动装入8位定时器) MOV TL0,#6 MOV TMOD,#02H SETB EA SETB ETO SETB TRO M:MOV P3,#01H MOV P1,#0FHH JNB 08H,$ CLR 08H MOV P3,#00H MOV P1,#00H JNB 08H,$ CLR 08H ACALL DSP AJMP M WTO:PUSH ACC PUSH PSW INC 22H MOV A,22H CJNE A,#200,TORETI MOV 22H,#0 INC 23H MOV A,23H CJNE A,#10,TORETI;Ls MOV 23H,#0 SETB 08H TORETI:POP PSW POP ACC RETI DSP:SETB 00H MOV P1,20H MOV P3,#1 JNB 08H,$ CLR 08H SETB 01H MOV P1,20H JNB 08H,$ CLR 08H SETB 02H MOV P1,20H JNB 08H,$ CLR 08H SETB 03H MOV P1,20H JNB 08H,$ CLR 08H SETB 04H MOV P1,20H JNB 08H,$ CLR 08H SETB 05H MOV P1,20H JNB 08H,$ CLR 08H SETB 06H MOV P1,20H JNB 08H,$ CLR 08H SETB 07H MOV P1,20H MOV 20H,#0 RET END |
| |
| 四、系统调试 |
| |
| 软件调试:1 将上面源程序输入PC机以后,以“L ASM”文件名存盘。2 运行“MCS51 EXE”调试软件,待屏幕显示调试窗口以后,按<F3>键,调入“L ASM”,按<F9>键进行汇编,然后按<F7>键单步运行,在调试窗口的右下角观察P1和P3的状态与软件设计要求完全一致,软件调试结束。3 按<ALT>+<F>键将“L ASM”转换成编程器需要的格式的文件。这一步操作有两种方法,在第40期已经介绍过其中的一种,在此介绍另一种。即:选择“Save OBJ as…”项,按回车键待出现选择窗口后,按<Esc>键确定文件名和文件格式。文件格式选“( )ROM”,然后存盘。4 按<Esc>键前退一步。5 按<Alt>+<X>键返回DOS系统。 |
| |
| 用以前介绍的方法将“L ROM”格式的文件固化在AT89C2051中。 |
| 将AT89C2051插入电路中的IC插座上。当硬件焊接没有错误时,接通电源即可工作。 |
| |
| 用单片机实现的自动拨号器 |
| 作者:甘肃 李冰 |
| |
| 本文介绍的电话自动拨号器以单片机为核心器件,一旦检测到有告警发生,便自动通过电话线拨打你本人的寻呼机,通过附加各种探头,不但可用于气体泄漏、防盗等的报警,稍加改制还可用于无人值守台站的通信设备及电源的故障告警。 |
| |
| 一、基本工作原理 |
| |
| 自动拨号器按功能的不同可分为简易型和可编码型两种。简易型自动拨号器已将BP机号码写入CPU的程序存储器中,具有成本低廉、稳定可靠的特点,缺点是不能人为更改BP机号码,需通过程序写入;可编码型自动拨号器可人为设置、更改BP机号码,但成本较简易型高。以下分别介绍这两种拨号器的工作原理。 |
| |
| (一)简易型自动拨号器 |
| 如图1所示,简易型自动拨号器的核心部件IC1是一片89C2051单片机,这是ATMEL公司生产的带2K字节闪速可编程(PEROM)的低电压CMOS 8位微型控制器,与标准的MCS51型单片机指令集相兼容。89C2051主要特性有:2K字节可编程ROM,128字节RAM,15个I/O端口,2个16位定时器/计数器,5个两级中断源,片内带一个模拟比较器。15个I/O端口中,P1口是8位双向I/O端口,可作普通I/O端口使用,P1 0和P1 1还分别作为片内模拟比较器的同相输入(AIN0)和反相输入(AIN1)端口。P3口的P3 0-P3 5和P3 7是带有内部上拉电阻的7个双向I/O口,P3 6固定用于片内比较器的输出而不可作为普通I/O端口使用。 |
| |
| IC2 PCD3311是飞利浦公司生产的DTMF双音频发生器,可以和所有标准的单片微计算机直接接口,接收二进制码的并行或串行数据,串行数据格式为I2C总线方式。其中D0~D5(8、9、10、{11}、{12}、4脚)为并行数据输出端口,MODE(3脚)端口为工作方式选择,在图1中该端口接成高电平方式,用于输入并行数据;STR(5脚)是数据选通输入端,由89C2051的P1 4控制,TONE(6脚)为DTMF双音频输出端。 |
| |
| 89C2051的P1 1、P1 0可作为各种探头的比较信号输入,P1 4({16}脚)控制PCD3311的数据选通,P3 0-P3 5(2、3、6、7、8、9脚)用于PCD3311并行数据的输入,P3 7用来控制继电器,P1 7控制M0C3041以接通220V交流电源。P1 2可作为其它告警(如防盗开关、红外探头)信号的输入(自动判断P1 2的状态,如从高电平变为低电平即拨号)。图中的虚线部分为告警检测电路,M为探头(如有害气体、温度探头等)。 |
| |
| 其工作原理是:当探头检测到外界媒质发生变化时,表面阻值下降,89C2051同相“+”端输入电压升高,片内模拟比较器输出端P3 6变为高电平,P3 7、P1 7则由低电平变为高电平,通过控制继电器和可控硅,从而接通电话外线和220V交流电源;同时89C2051通过PCD3311向外线发出已写入程序中的BP机号码。220V电源插座可根据不同情况外接各种驱动装置或交流报警器,当P1 2端电平由高转低时,工作原理同上,读者可根据需要自行设计前端的告警检测电路。如不用89C2051的内部模拟比较器,而将P1 2作为告警信号的输入端时,最好外接一个电阻使比较器的“+”端电压小于“-”端电压,以避免P3 6输出高电平而误告警。图2为拨号器软件流程,主程序完调用拨号子程序及控制继电器、可控硅动作。当程序检测到告警信号时,中断子程序将每隔30秒分三次调用拨号子程序,直至告警信号消失。当然,也可通过修改软件设置来反复调用拨号子程序。 |
| |
| 简易型自动拨号器的BP机台号及传呼号码已固定写入程序,均为自动台号码。如电信局127自动台的写入格式为127XXXXXXX(XX为BP机号码)+延时标志。由于其它BP机自动台的传呼格式可能不同于127台,故程序的写入格式也不相同。为防止误拨号(因有些探头在初始加电时表面阻值下降会引起误判断),软件编写时,在程序初始状态加有30秒的延时。按图1连接无误后,可人为使P1 2为低电平,再仔细调节可调电阻R,使BP机能准确地收到拨号信号。需要注意的是,如作为气体泄漏、防盗报警器使用时,应经过有关单位验证,以免产生意外。 |
| |
| 二)可编码的自动拨号器 |
| |
| 如图3所示,与图1相比,主要扩展了键盘,非易失性存储器93C46电路等。核心器件为台湾华邦公司W78E51单片机,W78E51与ATMEL公司的89C51单片机指令、管脚全兼容。与MCS-51系列同类产品相比,主要特点有:时钟频率可达40MHz,独特的加密结构不易解密。93C46是SPI总线接口的串行E2ROM,用来保存从键盘输入的BP机号码,掉电后号码不会丢失。图3中,P1 0-P1 5端口(1、2、3、4、5、6脚)主要用于PCD3311的数据接口,P3 1、P3 3、P3 4、P3 5连接93C46,P2作为键盘的输入接口,P0 7为告警信号输入端,K1为系统复位按钮,K2正常/设置开关(闭合状态下键盘输入才有效),K3为结束按钮。键盘输入完成后,应按一下K3,并将K2置于正常位置,键盘上的“*”号为延时标志键,这与电话机上的“*”键不同,请读者留意。图3的工作原理基本与图1相同,本文不再赘述。 |
| |
| 二、系统扩展 |
| |
| 将图1、图3自动拨号器的电路经过扩展,还可用于通信设备特别是电源设备的故障报警。图4为应用于通信设备故障自动报警的电原理框图。 |
| |
| 与图3相比,主要扩展了一片ADC0809,用于外部模拟电压的采集。ADC0809为8位8路A/D转换芯片,由W78E51的P2 0、P2 1控制ADC0809的选通。模拟量的输入电压标称值为0~5V,而通信电源一般采用交流220V或直流-24、-48V。交流220V可通过整流、稳压后得到标准的5V电压;直流-24、-48V电压的采样可通过极性转换将负电压转换为正电压后再分压得到;W78E51的空余I/O口可作为各种通信设备(如光端机、PCM设备等)的总告警信号输入。在程序中可灵活设置报警阈值,一旦电压过低或过高,W78E51便将ADC0809采样的电压值通过拨号器发送到值班人员的BP机上,从而达到了无人值守的目的。 |
| |