利用單片機驅動繼電器,可以串聯在線設備中斷,達到模擬故障。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
制作出來的實物圖如下:
PCB圖
更新了程序,四種功能:繼電器中斷,兩路繼電器不同步吸起或者落下,模擬方波跳動
單片機源程序如下:
- #include <intrins.h> //引用程序目錄的相對路徑中的頭文件
- #include <reg51.h> //引用編譯器的類庫路徑里面的頭文件
- #include "Delay.c" //引用編譯器的類庫路徑里面的頭文件
- #include "2004.c" //引用編譯器的類庫路徑里面的頭文件
- #include "Keyscan.c" //引用編譯器的類庫路徑里面的頭文件
- #include "Test.c" //引用編譯器的類庫路徑里面的頭文件
- /******************************
- 主程序
- ******************************/
- void Main()
- {
- Init(); //LCD初始化子程序
- PutString(3,6,"2021-04-06"); //歡迎界面
- Delay(1500); //歡迎界面顯示時長
- SendCmdorData(0x01,0); // 寫命令,顯示清屏:1、數據指針清零 2、所有顯示清零
- Delay(50); //50ms延時,給硬件反應時間
- Display(); //數據顯示子程序
- Key=0xf0; //鍵盤口全部高電平
- while(1) //循環指令
- {
- Keyscan(); //鍵盤檢測
- switch(num)
- {
- case 0:Setnum(num);num=50;break; //執行數字添加子程序,鍵盤按鍵值賦空值
- case 1:Setnum(num);num=50;break;
- case 2:Setnum(num);num=50;break;
- case 3:Setnum(num);num=50;break;
- case 4:Setnum(num);num=50;break;
- case 5:Setnum(num);num=50;break;
- case 6:Setnum(num);num=50;break;
- case 7:Setnum(num);num=50;break;
- case 8:Setnum(num);num=50;break;
- case 9:Setnum(num);num=50;break;
- case 11:set_up_able++;data_temp=0;Set();num=50;break; //執行設置參數子程序,鍵盤按鍵值賦空值
- case 12:set_up_able=0;Set();Start();num=50;break; //開始測試程序子程序,鍵盤按鍵值賦空值
- case 21:test=1;Display();set_up_able=0;Set();num=50;Relay1=1;Relay2=1;break;
- case 22:test=2;Display();set_up_able=0;Set();num=50;Relay1=1;Relay2=1;break;
- case 23:test=3;Display();set_up_able=0;Set();num=50;Relay1=0;Relay2=0;break;
- case 24:test=4;Display();set_up_able=0;Set();num=50;Relay1=1;Relay2=1;break;
- default:break; //default就是如果沒有符合的case就執行它,default并不是必須的.
- }
- }
- }
復制代碼
Keil代碼與Proteus仿真下載:
毫秒級可調時間中斷器(LCD).rar
(111.23 KB, 下載次數: 24)
2022-4-27 00:07 上傳
點擊文件名下載附件
|