51单片机LED彩灯串行控制器制作

2014-07-07 05:46:54祝斌
科教导刊 2014年16期
关键词:单片机

祝斌

摘 要 本文通过LED彩灯控制器实例,详细介绍了51单片机与PC机的串行通信方法。

关键词 单片机 LED 串行通信

中图分类号:TP342 文献标识码:A

51 Single LED Lantern Serial Communications Controller Making

ZHU Bin

(Huanggang Electric Power Design Institute, Huanggang, Hubei 438000)

Abstract This paper by LED lights controller instance described in detail 51 and PC serial communication method.

Key words single; LED; serial communications

MCS-51单片机内部的串行接口是全双工的,能同时发送和接收数据。单片机与PC机通信时,因为PC机是采用232通信方式,因而单片机要外加232芯片才能通信成功。

1 PC机与单片机串行接口通信模块制作

串行口通讯调试是比较困难的工作,因为只有当通讯双方的硬件和软件都正确无误时才能实现成功的通讯。可以采用分别调试的方法,即按通讯规约双方各自调试好,然后再联调。

1.1 硬件电路设计

原理图如图1所示,用MAX232芯片,外加9芯串口插座,组成与PC机通信接口电路。先用PC终端来进行单片机通讯口的调试。只要方式设置正确,一般通信会成功。因为PC终端已具有正常的通讯功能,如果通讯不正常便是单片机部分引起的,这样便于查出存在的故障。

图1 串行口通讯口调试电路

1.2 程序设计及调试

下面给出的串行口调试程序,其功能是对串行口的工作方式编程,然后在串行口上输出字符串:‘MCS-51 Microcomputer,接着从串行口上输入字符,又将输入的字符从串行口上输出,将PC终端键盘上输入的字符在屏幕上显示出来。这个功能实现以后,串行口的硬件和串行口的编程部分就调试成功,接着便可以按通讯规约,实现单片机和终端之间串行通讯,完成通讯软件的调试工作。

编写程序如下:

#include

#define uchar unsigned char

#define uint unsigned int

uchar code asab[]={'M','S','C','-', 'M','i','c','r','o','c','o','m','p','u','t','e','r',0x0a,0x0d,0};

void main()

{

uchar i,temp;

TMOD=0x20;//定时器1方式2

TL1=0xe8;

TH1=0xe8;

SCON=0xda;

TR1=1;

i=0;

next:

temp=asab[i];

if(temp==0)

{

loop:

while(RI==0);

RI=0;

temp=SBUF;

while(TI==0);

TI=0;

SBUF=temp;

goto loop;

}

else

{

while(TI==0);

TI=0;

SBUF=temp;

i++;

}

goto next;

}

在Keil C中输入以上程序汇编通过后,全速运行该程序,仿真时,打开(Peripherale/Serial)串行口通道(Serial Channel)如图2所示。

图2 串行口调试图

由图2可见串行口通道窗口中有各种标志位,程序每次运行到TSO3时,要在TI前的复选框选中“√”,程序才继续运行。将A中数送到串口缓冲器(SBUF)中,可在SBUF文本框中看到传入的数据。每选中一次“√”传送一个数。

1.3 Proteus软件仿真

在图1基础上添加虚拟终端,如图3所示。VSM虚拟终端允许用户通过PC的键盘和屏幕与仿真微处理器系统收发RS232异步串行数据。在显示用户编写程序产生的调试/跟踪信息时非常有用。

图3 Proteus软件串口仿真

导入前面所生成的HEX文件,全速运行后,出现如图3所示结果,在虚拟终端显示转输的数据。

2 LED彩灯串口控制器制作

2.1 电路原理图设计

LED彩灯串口控制器的原理图如图4所示,在串行口上扩展了两个移位寄存器74LS164,作为16路状态指示灯接口。

图4 LED彩灯串口控制器仿真原理图

2.2 硬件制作

自己购买器件,用万能板焊接电路。

2.3 程序编写

利用表格的方式,建立一组数据,利用UART发送至8BIT串入并出的IC74164。这组数据将使74164的8个LED 左移2次,右移2次,闪烁2次。

程序如下:

#include

#define uchar unsigned char

#define uint unsigned int

uchar code table[]={0x01, 0x02, 0x04, 0x08, 0x10,0x20 ,0x40, 0x80,

0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,

0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,

0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,

0x00,0xff,0x00,0xff,0x03};

void delay()

{

uint j;

for(j=0;j<20000;j++);

}

void main()

{

uchar i,temp;

SCON=0x00;

i=0;

loop:

temp=table[i];

if(temp!=0x03)

{

temp=~temp;

SBUF=temp;

while(TI==0);

TI=0;

delay();

i++;

}

else i=0;

goto loop;

}

参考文献

[1] 龚运新.单片机C语言项目式教程[M].北京邮电大学出版社,2012.

[2] 胡凤燕.万能板在电子技能教学中的使用[J].中等职业教育,2012(35).

[3] 陈东等嵌入式系统中MCS-51复杂通讯模式研究.[J].武汉职业技术学院学报,2005(5).

猜你喜欢
单片机
基于单片机的SPWM控制逆变器的设计与实现
电子制作(2019年13期)2020-01-14 03:15:28
基于单片机的层次渐变暖灯的研究
电子制作(2019年15期)2019-08-27 01:12:10
基于单片机的便捷式LCF测量仪
电子制作(2019年9期)2019-05-30 09:42:02
小议PLC与单片机之间的串行通信及应用
电子制作(2018年12期)2018-08-01 00:48:04
基于单片机的平衡控制系统设计
电子制作(2017年19期)2017-02-02 07:08:27
Microchip推出两个全新PIC单片机系列