电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

51单片机串口工作方式O在扩展并行输出口中的应用

来源:-- 作者:-- 浏览:1411

标签:

摘要:   一、系统工作原理    下图是一款1分钟-24小时定时时间可调的时间控制器,其印制电路板如右图所示。该控制器以AT89C2051单片机为核心,采用12MHz晶振,用内部定时器TO产生5ms时钟信号,由软件处理成分钟、小时段码数据,从串口RXD(P3.0)、TXD(P3.1)经IC2(74HC164)进行串/并转换后,送四位共阳极数码管Ul~U4的a~h端。显示采用动态扫描

 

  一、系统工作原理
  
  下图是一款1分钟-24小时定时时间可调的时间控制器,其印制电路板如右图所示。该控制器以AT89C2051单片机为核心,采用12MHz晶振,用内部定时器TO产生5ms时钟信号,由软件处理成分钟、小时段码数据,从串口RXD(P3.0)、TXD(P3.1)经IC2(74HC164)进行串/并转换后,送四位共阳极数码管Ul~U4的a~h端。显示采用动态扫描方式,P14~P1.7分别用作小时十位U1、个位U2,分钟十位U3、个位U4的位选,74HC04用作数码管的位驱动。U2的小数点(h段)用作秒闪。控制器以5s为一个显示周期,前3s显示已走时间,后2s显示剩余时间。显示剩余时间时,发光二极管LED1点亮。Sl、S2、S3用于定时时间调整,Sl为设置键Set,S2为小时减键H-、S3为分钟减键M-。Pl.0、Pl.l内部无上拉电阻,所以必须外接上拉电阻。
  
  上电后,P3.7口输出高电平,继电器K得电,触点A、B闭合,用电器从插座处得电工作。当定时时间到时,P3.7口输出低电平,继电器K线圈失电,触点A、B断开,用电器断电,停止工作,同时TO停止计数,不再走时,数码管显示设定的定时时间。继电器应根据用电器的功率进行选择,若用电器的功率较大,应考虑加交流接触器。每次开机或按S4键复位后从0:00开始走时,若不进行设置则用电器工作时间为默认的8小时30分。按Sl键一次,可进入定时时间调整状态(此时数码管显示8.30,秒不闪烁)。在此状态下按住s2键不放,则定时时间的小时位连续减1,减至0后变成23;若按住S2键不放,则定时分位连续减1.减至1后变成60;再按一次Sl键回到正常走时状态。下面重点介绍显示电路中单片机串口工作方式0在扩展并行输出口时的应用。

时间控制器

  二、串口部分硬件电路
  
  51单片机串口的工作方式0称为同步移位寄存器输入输出方式,常用来扩展并行I/0口。此时,串行数据通过RXD(P3.0)进行输入或输出,TXD (P3.1)用于输出同步移位脉冲。本例中,AT89C2051的RXD (P3.0)脚接74HC164的A、B(①、②脚),TXD (P3.1)接74HC164的CLK⑧脚。在方式0中,当串口用作输出时,只要向发送缓冲器SBUF写一个字节的数据,串口就将此8位数据由低位到高位以fs0c/12的固定波特率从RXD依次送入74HC164,同时由TXD输出移位脉冲信号。在数据发送前,中断标志TI必须清零。8位数据发送完毕后,TI自动置1并请求中断。如果要继续发送数据,必须用软件将TI清零。数据发送完毕后,既可在串中断处理程序中选通对应数码管进行显示,也可在查询到TI=1时选通相应数码管显示。本例中采用的是查询法。
  
  74HC164内部有8个D触发器,用于实现数据的串行移位。
  
  74HC164的A、B脚为串行数据输入端,按逻辑“与”运算规律输入信号,若输入信号相同可并接。
  
  CLK脚为时钟输入端,接串口的TXD端。当时钟信号的上升沿加到CLK脚时,移位寄存器移一位。8个时钟脉冲过后,8位二进制数据全部移入74HC164。MR⑨脚为复位端,为低电平时,移位寄存器各位清零;为高电平时时钟脉冲才起作用。数据输入74HC164时,首先变化的是Q0,即最先送到74HC164的数据被移到Q7,最后一位数据移至Q0。故接线时,74HC164的Q0~Q7脚应分别连接数码管的h~a段,这一点一定不要搞错。

 

  三、程序设计
  
  1.设计要点
  
  程序用C语言编写。受篇幅所限,这里只介绍程序设计中的要点。
  
  (1)串口工作方式0的程序为:
  
  SC0N=0x00;/★该语句放在卞程序开始,该语句在设定串口工作于方式0的同时也将发送中断标志TI清零,以备发送第一组数据。★/
  
  (2)数据发送程序为:
  
  SBUF=DSEG[x];/★向发送缓冲器SBUF写数据。此例中,0~9的字形码放于DSEG数组中,x代表待显示数字。★/
  
  While(TI==0);/*8位数据没发完,等待。即查询8位数据是否发送完毕。★/
  
  TI=0;/★8位数据发完,清T1,准备发送下一字节★/
  
  (3)定时时间中,小时t_h0ur的调整范围为0~23,分钟t_min为1~60。
  
  当t_h0ur递减至0时,为确保由0变为23.要求t_h0ur的数据类型必须为signed char,不能和tjmn一样定义成unsigned char型。
  
  (4)定时剩余时间的计算程序为:
  
  if(min<=t_min){sym=t_rrun -min;syh =t_h 0ur-h0ur;}/★h0ur、min分别为走时小时、分钟,t_h0ur、t_min为定时小时、分钟,syh、sym为剩余小时、分钟。★/else{sym=(60-min+t_min);syh=t_h0ur-h0ur-l;}
  
  (5)分时显示程序为:
  
  if(sec%5<=2)/★前3s显示走时时间,LED1不亮★/
  
  f P3_5=1;
  
  drive(h0ur,min);)
  
  else {P3_5=0; dispsy();}/★后2s显示定时剩余时间,LED1亮★/
  
  (6)定时器T0计数初值的计算:系统采用12MHz晶振,T0工作于方式1,理论上产生,ms定时计数初值应为65536-5000,当5ms计数单元dEDA计到200时正好为Is。实际使用中,因元器件误差及软件运行耗时等原因,经实测将产生5ms定时计数初值取为65536-5225,deda的值定为201。
  
  2.源程序
  
  源程序清单如下:
  
  #include <AT89X51.H>/★包含器件配置文件★/

 /></p>
<p style=

  四、元器件装
  
  配电路板尺寸为58mm×100mm,在其左下、右下、中部各有1个φ3mm的安装孔。左下方的焊盘A、B对应原理图中的A、B点;左侧中部的两个焊盘c、D接降压变压器的次级线圈。J1、J2为两条跳线。
  
  注意:电解电容、二极管、三极管、集成电路等不要接错极性。
  
  微动开关用的是普通彩色电视机前面板上的调整用微动开关。另外,最好先安装矮的元件再安装高的、最好用既能插两芯插头也能插三芯插头的组合式插座,以便插不同的用电器。建议将电路板用三颗螺钉固定在盒子右侧,变压器固定在左上侧,插座固定在左下侧。

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67