單片小白剛接觸單片機(jī)不久,看見單片機(jī)可以通過(guò)串口通信來(lái)實(shí)現(xiàn)控制功能,就想通過(guò)串口觸摸屏輸出信號(hào)來(lái)實(shí)現(xiàn)控制多個(gè)LED,遂借來(lái)一個(gè)串口屏進(jìn)行試驗(yàn),發(fā)現(xiàn)串口屏只是輸出了一串?dāng)?shù)字(A5 5A 06 83 00 01 01 00 01),查了下串口屏說(shuō)明,對(duì)數(shù)字串做出如下解釋:一二位為幀頭(A5 5A),第三位為字節(jié)長(zhǎng)度(06),第四位為讀指令(83),后五位為字節(jié)位(00 01 01 00 01),多開關(guān)的話后五位會(huì)有所不同以區(qū)分是哪個(gè)開關(guān)發(fā)出的信號(hào);現(xiàn)本人只能做到串口有信號(hào)來(lái)只有一個(gè)LED亮滅,不知如何寫代碼讓單片機(jī)能識(shí)別這串?dāng)?shù)字來(lái)控制不同的LED亮滅,代碼如下,還望各位高手斧正、賜教。
單片機(jī)源程序如下:
#include <reg52.h> //載入頭文件
typedef unsigned int u16; //定義一些用到的函數(shù) typedef unsigned char u8; uchar i;
sbit led0=P0^0; //定義LED管腳 sbit led1=P0^1; sbit led2=P0^2; sbit led3=P0^3;
void UsartInit() //初始化串口數(shù)據(jù)9600 { TMOD = 0x20; SCON = 0x50; TH1 = TL1 = 0xFD; PCON = 0x00; EA = 1; ES = 1; TR1 = 1; }
void main() { led0=0; led1=0; led2=0; led3=0; UsartInit(); while(1); }
void Usart() interrupt 4 //中斷函數(shù) { u8receiveData; i=SBUF; switch(i) { Case ' ? ':led0=~led0; case ' ? ':led1=~led1; case ' ? ':led2=~led2; case ' ? ':led3=~led3; } receiveData=SBUF; RI=0; SBUF=receiveData; while(!TI); TI=0; }
|