找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2275|回復(fù): 0
收起左側(cè)

STM32f103單片機工業(yè)控制急停模擬系統(tǒng)程序設(shè)計

[復(fù)制鏈接]
ID:827939 發(fā)表于 2023-10-20 18:27 | 顯示全部樓層 |閱讀模式
該項目名稱為工業(yè)控制急停模擬系統(tǒng),主要內(nèi)容是模擬工業(yè)控制急停系統(tǒng),通過檢測外部急停信號,完成急?刂戚敵,并定時產(chǎn)生警報燈顯示,將警報數(shù)據(jù)傳輸?shù)接嬎銠C系統(tǒng)上。綜合運用嵌入式系統(tǒng)與設(shè)計中微控制器外部中斷、定時器、GPIO 和串口等內(nèi)部資源,結(jié)合檢測技術(shù)、輸出控制技術(shù)以及串口通信傳輸?shù)闹R實現(xiàn)工業(yè)控制急停模擬系統(tǒng)的功能。
1、外部中斷檢測急停按鍵:將急停按鍵接到相應(yīng) GPI0 端口,設(shè)置 GPIO 為外部中斷模式,設(shè)置合適的優(yōu)先級和邊沿檢測方式,設(shè)計外部中斷服務(wù)程序;
2、定時驅(qū)動 LED 提示報警閃爍:為了影響主程序的運行,LED 定時提示閃爍采用定時方式,選擇適合的定時器,設(shè)置其工作模式、分頻比、定時時間。編寫定時中斷服務(wù)程序。使警示 LED閃爍提示;
3、利用串口傳輸信息到 PC 機:選擇其中一個串行接口,設(shè)置波特率 9600,無校驗,停止位為 1 位,對應(yīng)將數(shù)據(jù)傳輸?shù)?PC 機的串口調(diào)試助手上,設(shè)計串口數(shù)據(jù)信息傳輸;
4、利用 GPIO 輸出控制繼電器(繼電器可用 LED 模擬):將 GPIO 設(shè)置為通用推挽輸出,控制繼電器輸出。通過綜合以上模塊軟件,實現(xiàn)以下功能:1 )未按下緊急按鍵時,將正常運行信息通過串口發(fā)生至上位機;警示 LED常亮;2 )當(dāng)按下緊急按鍵時,警示 LED 定時閃爍;將急停信息通過串口發(fā)生至上位機;并將輸出控制的繼電器切斷(可用 LED 代替)。

單片機源程序如下:
  1. #include  "delay.h"
  2. #include  "led.h"
  3. #include  "key.h"
  4. #include  "usart.h"
  5. #include  "exti.h"
  6. #include   "TIM2.h"
  7. #include "sys.h"
  8. char flag;
  9. int main(void)
  10. {

  11.   delay_init();                     //延時函數(shù)初始化
  12.         uart_init(9600);            //串口初始化為9600  
  13.         LED_Init();                              //初始化與LED連接的硬件接口
  14.         KEY_Init();                                //        按鍵端口初始化
  15.         EXTIX_Init();                         //外部中斷初始化
  16.   TIM2_TimBaseInit();
  17.          while(1)
  18.         {
  19.                 if(!flag)
  20.                 {
  21.                 led_zc();
  22.                 delay_ms(1000);
  23.                 printf("正常\r\n");
  24.         }
  25. }
  26. }
  27. void TIM2_IRQHandler(void)
  28. {
  29.         TIM_ClearFlag(TIM2 , TIM_FLAG_Update);//設(shè)置NVIC中斷分組為2 , 2:2位搶占優(yōu)先級,2級響應(yīng)優(yōu)先級
  30.                
  31.                 if(flag)
  32.                 {
  33.                         PAout(8)^=1;
  34.                         PDout(2) =1;
  35.                         printf("警報警報\r\n");
  36.                         TIM_GetITStatus(TIM2,TIM_IT_Update);
  37.                 }
  38. }

  39. void EXTI0_IRQHandler(void)
  40. {
  41.         delay_ms(10);
  42.         if(WK_UP==1)                 
  43.         {                                 
  44.                 flag +=1;        
  45. //                if(flag>1)flag=0;
  46.                 EXTI_ClearITPendingBit(EXTI_Line0);
  47.         }
  48. }
復(fù)制代碼

原理圖: 無
仿真: 無
代碼: 程序.7z (185.55 KB, 下載次數(shù): 10)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表