最近在為一個公司做實物,涉及到關(guān)于app做上位機控制單片機的要求,于是想起了在校期間專門跟著一位教授學習了E4A(易安卓)手機app編譯軟件的開發(fā)。因為E4A是全中文界面,所以上手很快,所以就算隔了好幾年了,還是很快就學習了一遍,用幾個小時的時間編寫了一個用于控制單片機兩個led燈的亮滅,并且可以將狀態(tài)顯示在app上,因為是第一個app所以就先用藍牙編寫了,而且用的是51單片機,后期我會用stm32加wifi來實現(xiàn)。
=============================================================
本時鐘配置清單如下:
-------------------------------------------------------------
主控:51單片機,可用AT89S52,也可用STC89C52
被控設(shè)備:LED小燈
通信接口:let藍牙(16位傳輸)
客戶端軟件:keil4、E4A
單片機用到的串口:p2^1、txd、rxd
=============================================================
E4A設(shè)計部分(上位機):
藍牙開關(guān).zip
(514.91 KB, 下載次數(shù): 170)
2021-4-7 12:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
屏幕截圖 2021-04-06 232319.png (39.33 KB, 下載次數(shù): 83)
下載附件
E4A設(shè)計界面
2021-4-7 12:52 上傳
屏幕截圖 2021-04-07 125334.png (90.55 KB, 下載次數(shù): 80)
下載附件
E4A代碼界面
2021-4-7 12:53 上傳
c51單片機設(shè)計部分(下位機):
單片機程序.zip
(10.42 KB, 下載次數(shù): 81)
2021-4-7 13:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
- /*********************************************************************************************
- 程序名: 藍牙開關(guān)
- 編寫人:
- 編寫時間:
- 硬件支持: 外部11.0592MHZ晶振
- 接口說明:
- 修改日志:
- NO.1-
- /*********************************************************************************************
- 說明:
- /*********************************************************************************************/
-
- #include <reg52.h> //包含頭文件
- sbit LED=P2^1;
- unsigned char UART_data; //定義串口接收數(shù)據(jù)變量
- /*********************************************************************************************
- 函數(shù)名:UART串口初始化函數(shù)
- 調(diào) 用:UART_init();
- 參 數(shù):無
- 返回值:無
- 結(jié) 果:啟動UART串口接收中斷,允許串口接收,啟動T/C1產(chǎn)生波特率(占用)
- 備 注:振蕩晶體為12MHz,PC串口端設(shè)置 [ 4800,8,無,1,無 ]
- /**********************************************************************************************/
- void UART_init ( )
- {
-
- EA = 1; //允許總中斷(如不使用中斷,可用//屏蔽)
- ES = 1; //允許UART串口的中斷
- TMOD = 0x20; //定時器T/C1工作方式2
- SCON = 0x50; //串口工作方式1,允許串口接收(SCON = 0x40 時禁止串口接收)
- TH1 = 0xFa; //定時器初值高8位設(shè)置 //12MHZ晶振,波特率為4800 0xf3
- TL1 = 0xFa; //定時器初值低8位設(shè)置 //11.0592MHZ晶振,波特率為4800 0xf4 9600 0xfa 19200 0xfd
- PCON = 0x80; //波特率倍頻(屏蔽本句波特率為2400)
- TR1 = 1; //定時器啟動
- }
- void main( ) //主函數(shù)
- {
- UART_init();
- LED=1;
- while(1)
- {
- if(UART_data==0x31){LED=0; }//開
- if(UART_data==0x32){LED=1;}//關(guān)
-
-
- }
- }
- /*********************************************************************************************
- 函數(shù)名:UART串口接收中斷處理函數(shù)
- 調(diào) 用:[SBUF收到數(shù)據(jù)后中斷處理]
- 參 數(shù):無
- 返回值:無
- 結(jié) 果:UART串口接收到數(shù)據(jù)時產(chǎn)生中斷,用戶對數(shù)據(jù)進行處理(并發(fā)送回去)
- 備 注:過長的處理程序會影響后面數(shù)據(jù)的接收
- /**********************************************************************************************/
- void UART_R ( ) interrupt 4 using 1 //切換寄存器組到1
- {
-
- RI = 0; //令接收中斷標志位為0(軟件清零)
- UART_data = SBUF; //將接收到的數(shù)據(jù)送入變量 UART_data
-
- //用戶函數(shù)內(nèi)容(用戶可使用UART_data做數(shù)據(jù)處理)
-
- SBUF = UART_data; //將接收的數(shù)據(jù)發(fā)送回去(刪除//即生效)
- while(TI == 0); //檢查發(fā)送中斷標志位
- TI = 0; //令發(fā)送中斷標志位為0(軟件清零)
- }
- /*****************************************************************************/
- /*****************************************************************************/
復制代碼 =============================================================
因為是第一次在51黑論壇上發(fā)表,所以文章不是很精美,但是所有的文件都上傳了,大家可自行下載查看,相信大家查看代碼后很快就能懂,如果有什么疑問可以在下方留言詢問,或者來我博客留周嘉浩的博客zhoujiahao點top;也歡迎大家來我的店查看我們最新設(shè)計的電子設(shè)備:游客,本帖隱藏的內(nèi)容需要積分高于 1 才可瀏覽,您當前積分為 0
|