|
用于無(wú)線電收發(fā)使用,常用場(chǎng)景為嵌入式電器控制,如:利用接收功能解碼自動(dòng)窗簾的控制器,再利用其發(fā)射功能發(fā)射相應(yīng)的字符接替遙控器實(shí)現(xiàn)控制,配合語(yǔ)音模塊效果更佳
單片機(jī)源程序如下:
- /**
- ******************************************************************************
- ******************************************************************************
- */
- #include <at89x52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit K1 = P3^2;//設(shè)置P3.2口為按鍵端口
- sbit LED = P2^7;//設(shè)置P2.7口為按鍵端口
- uchar Error; //驗(yàn)證標(biāo)志
- uchar code table[] = "Ebyte";
- uchar table1[] = "01234";
- void delay (uint time)
- {
- uint i;
- uint j;
- for (i=0; i<time; i++)
- for (j=0; j<110; j++);
- }
- void inital (void)
- {
- LED = 1;//默認(rèn)熄滅
- SM0 = 0;
- SM1 = 1;//工作方式1
- //SMOD = 0;//波特率不加倍(默認(rèn))
- REN = 1;//允許接受
- TMOD = 0X20;//T1工作于方式2:自動(dòng)重裝初值
- TH1 = 0XFD;
- TL1 = 0XFD; //此初值波特率為:9600bps
- TR1 = 1; //定時(shí)器是用來(lái)作為波特率的發(fā)生器
- // EA = 1;
- // ES = 1;
- }
- void Check_Data (void)
- {
- uchar i;
-
- for (i=0;i<6;i++)
- {
- if(table1[i]==table[i])
- Error = 0;
- else
- {
- Error = 1;
- break;
- }
- }
- }
- void Send_and_Sin_Data (void)
- {
- uchar i;
- for (i=0;i<6;i++)
- {
- SBUF = table[i];
- while (TI == 0);//等待發(fā)送結(jié)束
- TI = 0;
- while (RI == 0);//發(fā)送和接受同步進(jìn)行,發(fā)送結(jié)束后,等待接受結(jié)束
- RI = 0;
- table1[i] = SBUF;//接受端
- }
- }
- void main ()
- {
- uchar i;
- inital ();
- while (1)
- {
- for (i=0;i<6;i++)
- table1[i] = i;//數(shù)組清空
-
- if(K1 == 0)
- {
- delay (10);
- if(K1 == 0)
- {
- Send_and_Sin_Data ();//發(fā)送并接受數(shù)據(jù)
- Check_Data ();//驗(yàn)證接受的數(shù)據(jù)
- if (Error == 0)//判斷接受的正確性
- {
- LED = 0; //亮
- delay (50);
- LED = 1; //滅
- }
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
XL01-232AP1售后資料.rar
(1.64 MB, 下載次數(shù): 5)
2021-2-8 19:21 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|