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