找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2082|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

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

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

單片機(jī)源程序如下:
  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í)函數(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)先級(jí),2級(jí)響應(yīng)優(yōu)先級(jí)
  30.                
  31.                 if(flag)
  32.                 {
  33.                         PAout(8)^=1;
  34.                         PDout(2) =1;
  35.                         printf("警報(bào)警報(bào)\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ù)制代碼

原理圖: 無(wú)
仿真: 無(wú)
代碼: 程序.7z (185.55 KB, 下載次數(shù): 10)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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