久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2106|回復: 6
打印 上一主題 下一主題
收起左側

繼電器延時直流電機正反轉帶4位數碼管芯片程序如何編寫?

[復制鏈接]
跳轉到指定樓層
樓主
ID:821047 發表于 2020-10-6 05:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
接線端口說明
1、DC:輸入電源直流12V
2、IN1:信號輸入端1(負極觸發)
3、IN2:信號輸入端2(負極觸發)
4、IN3:信號輸入端3(負極觸發)


要如下功能:
P-1:給信號1,繼電器1吸合到A時間自動停止,在這延時期間再給信號1或信號2沒有反應;   給信號2,繼電器2吸合到B時間自動停止,在這期間再給信號1或信號2都沒有反應;信號3是急停復位信號,在繼電器1或2吸合期間都會停止。
P-2:  通電繼電器1吸合到A時間自動停止,在這延時期間再給信號1或2沒有反應,當繼電器1停止后,再給信號1繼電器1吸合到A時間自動停止;    給信號2,繼電器2吸合到B時間自動停止,在這期間再給信號1或信號2都沒有反應;  信號3是急停復位信號,在繼電器1或2吸合期間都會停止。
      芯片腳位連接說明:STC15W408AS的1腳是信號3通過光耦使1腳低電平時急停;2腳是信號2通過光耦使2腳低電平時使12腳低電平時通過光耦使繼電器2啟動工作;3腳是信號1通過光耦使3腳低電平使11腳低電平時通過光耦使繼電器1啟動工作。也就是說1腳低電平是急停;2腳低電平是繼電器2工作;3腳低電平是繼電器1工作,(平時都是高電平),11、12腳低電平啟動繼電器1、2(平時高電平),13、14腳到數碼管TM1650IC的2、3腳。

按鍵設置說明
通電顯示
表示進入待機狀態
按第一次K1屏幕顯示:Pー1:  K2和K3調節模式,按第二次K1,屏幕顯示:A001:K2和K3調節第一個時間A,K4調節小數點(時間單位)按第三次K1,屏幕顯示:B001:K2和K3調節第二個時間B,按第四次K1,顯示“-----”表示進入待機狀態。

比如;需要設定模式為:P-2;時間為:A010,B005。
表示第二個工作方式;給信號1后;繼電器1啟動10秒之后關閉; 繼電器2再給信號2之后延時5秒之后自動關閉。
計時范圍:0.1秒~99秒。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:821047 發表于 2020-10-6 09:39 | 只看該作者

RE: 求繼電器延時直流電機正反轉帶4位數碼管芯片程序

STC8F1K08S2或STC8F2K08S2芯片也可以
回復

使用道具 舉報

板凳
ID:821047 發表于 2020-10-6 20:10 | 只看該作者
求助繼電器延時直流電機正反轉帶4位數碼管芯片程序
回復

使用道具 舉報

地板
ID:821047 發表于 2020-10-8 23:10 | 只看該作者
請教大師傅,200黑幣
回復

使用道具 舉報

5#
ID:213173 發表于 2020-10-9 11:43 | 只看該作者
給你一個演示程序,按實際電路配置端口即可滿足你的需求。
  1. //按樓主意圖優化編寫
  2. //雙路0.1~99.9秒倒計時演示程序
  3. //此程序適合51單片機和STC1T單片機
  4. //也適合共陽/共陰數碼管
  5. #include<reg51.h>
  6. #include<intrins.h>
  7. #define key_S 10                                        //宏定義短按(約10ms)
  8. #define key_L key_S*50                        //宏定義長按(約500ms)
  9. #define key_I key_S*38                        //宏定義長按連+/-間隔(約120ms)
  10. #define uchar unsigned char
  11. #define uint unsigned int
  12. //端口根據實際電路重新定義
  13. sbit K1 =P1^0;
  14. sbit K2 =P1^1;
  15. sbit K3 =P1^2;
  16. sbit IN1=P1^3;
  17. sbit IN2=P1^4;
  18. sbit IN3=P1^5;
  19. sbit OUT1=P1^6;
  20. sbit OUT2=P1^7;
  21. /*
  22. uchar code table[]={//共陽數碼管段碼"0~f-."
  23.                 0xc0,0xf9,0xa4,0xb0,
  24.                 0x99,0x92,0x82,0xf8,
  25.                 0x80,0x90,0x88,0x83,
  26.                 0xc6,0xa1,0x86,0x8e,0xbf,0x7f};
  27. */
  28. uchar code table[]={//共陰數碼管段碼"0~f-."
  29.                 0x3f,0x06,0x5b,0x4f,
  30.                 0x66,0x6d,0x7d,0x07,
  31.                 0x7f,0x6f,0x77,0x7c,
  32.                 0x39,0x5e,0x79,0x71,0x40,0x80};

  33. uchar data dis_buf[4];//顯示數據緩存
  34. bit  state1,state2;//倒計時狀態
  35. int  time1=115,time2=225;
  36. uchar KeySec;
  37. int num=0,num1=0;
  38. bit flashing=0;

  39. //12T51單片機
  40. void Delay1ms()                //@11.0592MHz
  41. {
  42.         unsigned char i, j;
  43.         _nop_();
  44.         i = 2;
  45.         j = 199;
  46.         do
  47.         {
  48.                 while (--j);
  49.         } while (--i);
  50. }
  51. void Timer0Init()        //10毫秒@11.0592MHz
  52. {
  53.         TMOD |= 0x01;        //設置定時器模式
  54.         TL0 = 0x00;                //設置定時初值
  55.         TH0 = 0xDC;                //設置定時初值
  56. //        TR0 = 1;                //定時器0開始計時
  57.         ET0 = 1;
  58.    EA  = 1;
  59. }
  60. //STC1T單片機
  61. /*void Delay1ms()                //@11.0592MHz
  62. {
  63.         unsigned char i, j;
  64.         i = 15;
  65.         j = 90;
  66.         do
  67.         {
  68.                 while (--j);
  69.         } while (--i);
  70. }
  71. void Timer0Init()        //10毫秒@11.0592MHz
  72. {
  73.         AUXR &= 0x7F;        //定時器時鐘12T模式
  74.         TMOD &= 0xF0;        //設置定時器模式
  75.         TMOD |= 0x01;        //設置定時器模式
  76.         TL0 = 0x00;                //設置定時初值
  77.         TH0 = 0xDC;                //設置定時初值
  78.         TF0 = 0;                        //清除TF0標志
  79. //        TR0 = 1;                        //定時器0開始計時
  80.         ET0 = 1;
  81.    EA  = 1;
  82. }
  83. */

  84. //按鍵掃描
  85. void keyscan()
  86. {
  87.         static unsigned int count=0;
  88.         if(!K1||!K2||!K3)
  89.         {
  90.                 count++;
  91.                 if(count>key_L)//長按有效
  92.                         count=key_I;//連+/-間隔
  93.                 if(count==key_S)//短按消抖
  94.                 {
  95.                         if(!K1)//預設
  96.                         {
  97.                                 KeySec++;
  98.                                 if(KeySec>=3)
  99.                                 {
  100.                                         KeySec=0;
  101.                                 }
  102.                         }
  103.                 }
  104.                 if(count==key_S||count==key_L)//短按+/-,長按連+/-
  105.                 {
  106.                         if(!K2 && KeySec>0)
  107.                         {
  108.                                 switch(KeySec)
  109.                                 {
  110.                                         case 1: if(time1<999)time1++; break;
  111.                                         case 2: if(time2<999)time2++; break;
  112.                                 }
  113.                         }
  114.                         if(!K3 && KeySec>0)
  115.                         {
  116.                                 switch(KeySec)
  117.                                 {
  118.                                         case 1: if(time1>1)time1--; break;
  119.                                         case 2: if(time2>1)time2--; break;
  120.                                 }
  121.                         }
  122.                 }
  123.         }
  124.         else count=0;
  125. }
  126. void INscan()
  127. {
  128.         if(KeySec==0 && TR0==0)
  129.         {
  130.                 if(!IN1)
  131.                 {
  132.                         TR0=1;
  133.                         OUT1=0;
  134.                         OUT2=1;
  135.                         state1=1;
  136.                         state2=0;
  137.                         num1=0;
  138.                         num=time1;
  139.                 }
  140.                 if(!IN2)
  141.                 {
  142.                         TR0=1;
  143.                         OUT1=1;
  144.                         OUT2=0;
  145.                         state1=0;
  146.                         state2=1;
  147.                         num1=0;
  148.                         num=time2;
  149.                 }
  150.         }
  151.         if(!IN3)
  152.         {
  153.                 OUT1=1;
  154.                 OUT2=1;
  155.                 state1=0;
  156.                 state2=0;
  157.                 num1=0;
  158.                 num=0;
  159.         }
  160. }
  161. void display()//顯示
  162. {
  163.         static uchar i=0;
  164.         uchar j=0;
  165.         if(KeySec==0)
  166.         {
  167.                 if(state1==0 && state2==0)
  168.                 {//顯示----
  169. //                        for(j=0;j<4;j++)
  170. //                                dis_buf[j] = 0xbf;//共陽-
  171.                         for(j=0;j<4;j++)
  172.                                 dis_buf[j] = 0x40;//共陰-
  173.                 }
  174.                 else
  175.                 {
  176.                         if(state1==1)//顯示A倒計時時間
  177. //                                dis_buf[0] = 0x88;//共陽A
  178.                                 dis_buf[0] = 0x77;//共陰A
  179.                         else if(state2==1)//顯示B倒計時時間
  180. //                                dis_buf[0] = 0x83;//共陽b
  181.                                 dis_buf[0] = 0x7c;//共陰b
  182.                         dis_buf[1] = table[num/100%10];
  183. //                        dis_buf[2] = table[num/10%10]&0x7f;//共陽加小數點
  184.                         dis_buf[2] = table[num/10%10]|0x80;//共陰加小數點
  185.                         dis_buf[3] = table[num%10];
  186.                 }
  187.         }
  188.         if(KeySec==1)
  189.         {//顯示A預設時間
  190. //                dis_buf[0] = 0x88; //共陽A
  191.                 dis_buf[0] = 0x77; //共陽A
  192.                 dis_buf[1] = table[time1/100%10];
  193. //                dis_buf[2] = table[time1/10%10]&0x7f;//共陽加小數點
  194.                 dis_buf[2] = table[time1/10%10]|0x80;//共陰加小數點
  195.                 dis_buf[3] = table[time1%10];
  196.         }
  197.         if(KeySec==2)
  198.         {//顯示B預設時時間
  199. //                dis_buf[0] = 0x83; //共陽b
  200.                 dis_buf[0] = 0x7c; //共陽b
  201.                 dis_buf[1] = table[time2/100%10];
  202. //                dis_buf[2] = table[time2/10%10]&0x7f;//共陽加小數點
  203.                 dis_buf[2] = table[time2/10%10]|0x80;//共陰加小數點
  204.                 dis_buf[3] = table[time2%10];
  205.         }
  206.         //共陽數碼管驅動
  207. /*        P2&=0xf0;//消隱
  208.         P0=dis_buf[i];//送段碼
  209.         P2|=0x01<<i;//送位碼
  210. */
  211.         //共陰數碼管驅動
  212.         P0=0x00;//消隱
  213.         P2&=0xf0;//清低4位
  214.         P0=dis_buf[i];//送段碼
  215.         P2|=~(0x01<<i);//送位碼

  216.         i++;i%=4;
  217. }

  218. void main()//主函數
  219. {
  220.         Timer0Init();//定時器初始化程序
  221.         while(1)
  222.         {
  223.                 keyscan();                        //按鍵掃描
  224.                 INscan();                        //輸入掃描
  225.                 display();                        //數碼管顯示
  226.                 Delay1ms();                        //控制主循環約1ms
  227.         }
  228. }

  229. void Timer0Interrupt(void) interrupt 1
  230. {
  231.         TL0 = 0x00;                //設置定時初值
  232.         TH0 = 0xDC;                //設置定時初值
  233.         num1++;
  234.         if(num1>=10)
  235.         {
  236.                 num1=0;
  237.                 num--;
  238.                 if(num<=0)
  239.                 {
  240.                         num=0;
  241.                         OUT1=1;
  242.                         OUT2=1;
  243.                         state1=0;
  244.                         state2=0;
  245.                         TR0=0;
  246.                 }
  247.         }
  248. }
復制代碼
回復

使用道具 舉報

6#
ID:821047 發表于 2020-10-9 21:23 | 只看該作者
謝謝前輩指點
回復

使用道具 舉報

7#
ID:821047 發表于 2020-10-9 23:34 | 只看該作者
謝謝總工
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片一级片 | 国产精品久久久久久婷婷天堂 | 国产成人高清 | 日韩一区二区久久 | 欧美日韩国产一区二区三区 | 一二三四在线视频观看社区 | 亚洲毛片在线观看 | 欧美性生交大片免费 | 日韩毛片在线观看 | 国产欧美日韩在线 | 色.com| 成人亚洲精品久久久久软件 | 日韩视频三区 | 国产精品久久久久久久久免费软件 | 欧美韩一区二区三区 | 欧美精品91 | 色伊人网 | 一区二区三区精品在线 | 欧美性猛片aaaaaaa做受 | 国内精品久久精品 | 欧美视频在线看 | 福利网址 | 免费一级网站 | 国产欧美日韩精品一区二区三区 | 国产一区精品 | 久久久涩 | 精品久久一区 | 亚洲社区在线 | 亚洲一区国产精品 | 欧美日韩综合精品 | 国产成人自拍av | 热久色| 日韩欧美高清dvd碟片 | 亚洲一区二区久久 | h小视频 | 久久国产精品免费一区二区三区 | 国产一区二区三区精品久久久 | 国产精品国产精品国产专区不蜜 | 91视频在线看 | 亚洲高清在线免费观看 | 涩涩视频在线观看免费 |