祝斌
摘 要 本文通過LED彩燈控制器實(shí)例,詳細(xì)介紹了51單片機(jī)與PC機(jī)的串行通信方法。
關(guān)鍵詞 單片機(jī) LED 串行通信
中圖分類號:TP342 文獻(xiàn)標(biāo)識碼: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單片機(jī)內(nèi)部的串行接口是全雙工的,能同時發(fā)送和接收數(shù)據(jù)。單片機(jī)與PC機(jī)通信時,因?yàn)镻C機(jī)是采用232通信方式,因而單片機(jī)要外加232芯片才能通信成功。
1 PC機(jī)與單片機(jī)串行接口通信模塊制作
串行口通訊調(diào)試是比較困難的工作,因?yàn)橹挥挟?dāng)通訊雙方的硬件和軟件都正確無誤時才能實(shí)現(xiàn)成功的通訊??梢圆捎梅謩e調(diào)試的方法,即按通訊規(guī)約雙方各自調(diào)試好,然后再聯(lián)調(diào)。
1.1 硬件電路設(shè)計(jì)
原理圖如圖1所示,用MAX232芯片,外加9芯串口插座,組成與PC機(jī)通信接口電路。先用PC終端來進(jìn)行單片機(jī)通訊口的調(diào)試。只要方式設(shè)置正確,一般通信會成功。因?yàn)镻C終端已具有正常的通訊功能,如果通訊不正常便是單片機(jī)部分引起的,這樣便于查出存在的故障。
圖1 串行口通訊口調(diào)試電路
1.2 程序設(shè)計(jì)及調(diào)試
下面給出的串行口調(diào)試程序,其功能是對串行口的工作方式編程,然后在串行口上輸出字符串:‘MCS-51 Microcomputer,接著從串行口上輸入字符,又將輸入的字符從串行口上輸出,將PC終端鍵盤上輸入的字符在屏幕上顯示出來。這個功能實(shí)現(xiàn)以后,串行口的硬件和串行口的編程部分就調(diào)試成功,接著便可以按通訊規(guī)約,實(shí)現(xiàn)單片機(jī)和終端之間串行通訊,完成通訊軟件的調(diào)試工作。
編寫程序如下:
#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中輸入以上程序匯編通過后,全速運(yùn)行該程序,仿真時,打開(Peripherale/Serial)串行口通道(Serial Channel)如圖2所示。
圖2 串行口調(diào)試圖
由圖2可見串行口通道窗口中有各種標(biāo)志位,程序每次運(yùn)行到TSO3時,要在TI前的復(fù)選框選中“√”,程序才繼續(xù)運(yùn)行。將A中數(shù)送到串口緩沖器(SBUF)中,可在SBUF文本框中看到傳入的數(shù)據(jù)。每選中一次“√”傳送一個數(shù)。
1.3 Proteus軟件仿真
在圖1基礎(chǔ)上添加虛擬終端,如圖3所示。VSM虛擬終端允許用戶通過PC的鍵盤和屏幕與仿真微處理器系統(tǒng)收發(fā)RS232異步串行數(shù)據(jù)。在顯示用戶編寫程序產(chǎn)生的調(diào)試/跟蹤信息時非常有用。
圖3 Proteus軟件串口仿真
導(dǎo)入前面所生成的HEX文件,全速運(yùn)行后,出現(xiàn)如圖3所示結(jié)果,在虛擬終端顯示轉(zhuǎn)輸?shù)臄?shù)據(jù)。
2 LED彩燈串口控制器制作
2.1 電路原理圖設(shè)計(jì)
LED彩燈串口控制器的原理圖如圖4所示,在串行口上擴(kuò)展了兩個移位寄存器74LS164,作為16路狀態(tài)指示燈接口。
圖4 LED彩燈串口控制器仿真原理圖
2.2 硬件制作
自己購買器件,用萬能板焊接電路。
2.3 程序編寫
利用表格的方式,建立一組數(shù)據(jù),利用UART發(fā)送至8BIT串入并出的IC74164。這組數(shù)據(jù)將使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;
}
參考文獻(xiàn)
[1] 龔運(yùn)新.單片機(jī)C語言項(xiàng)目式教程[M].北京郵電大學(xué)出版社,2012.
[2] 胡鳳燕.萬能板在電子技能教學(xué)中的使用[J].中等職業(yè)教育,2012(35).
[3] 陳東等嵌入式系統(tǒng)中MCS-51復(fù)雜通訊模式研究.[J].武漢職業(yè)技術(shù)學(xué)院學(xué)報(bào),2005(5).