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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10636|回復: 3
打印 上一主題 下一主題
收起左側(cè)

汽車自動換擋撥片改裝,單片機控制D檔實現(xiàn)加減檔源程序與電路設計

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:284341 發(fā)表于 2018-11-18 11:19 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
給大家分享小汽車自動換擋撥片改裝教程,D檔實現(xiàn)加減檔的一些技術(shù)資料,是用51單片機通過程序來實現(xiàn)的.
【簡要說明】
一、尺寸:長74mm29mm18mm
二、工作電壓:直流12V
三、特點:
1、延時時間精確、可調(diào)節(jié)
2、電路簡單實用,接線簡單
3、兩路數(shù)字量輸入和一路繼電器輸出
4、延時開關(guān)可以根據(jù)顧客的需要做成各種不同種類的延時開關(guān)
5、兩路數(shù)字量輸入,低電平有效 低電平(0到1V),高電平(3.5到5V)
6、延時時間按鍵可調(diào)節(jié)
四、功能:汽車換擋片換擋用、觸發(fā)延時開關(guān),延時通斷,延時閉合,延時斷開等等,都可以根據(jù)需要來更改


單路繼電器輸出兩路繼電器輸入模塊(汽車換擋片控制)
  • 工作電壓直流12V
  • 兩路輸入低電平有效,帶光電隔離
  • 該模塊可編程實現(xiàn)顧客各種要求
  • 有兩個按鍵輸入
  • 一路繼電器輸出,可控制220V/10A負載
  • 具有電源和輸出指示


該控制板是專門為別人定制的,默認情況下,實現(xiàn)的功能是:當A或者B開關(guān)有輸入信號時,輸出繼電器閉合延時5到15秒(可通過按鍵增加減小鍵調(diào)節(jié)具有掉電記憶功能),繼電器斷開。 該模塊主要用在汽車上的A和B換擋片,換擋時,觸發(fā)繼電器延時5-10的吸合時間

注意兩路輸入任意一路輸入低電平觸發(fā)時,繼電器(即開關(guān)閉合)閉合開始延時,延時5到15秒后繼電器(開關(guān)斷開)斷開的功能。如果在延時期間,任意觸發(fā)端,再次觸發(fā)時,延時時間將為設定值。如,設定時間是10秒,觸發(fā)端觸發(fā)時開始延時,假如延時時間到8秒,如果再次觸發(fā),繼電器將再延時10秒斷開,如果在延時期間再次觸發(fā)時,將接著延時10秒斷開。。。
時間設定注意(最小5秒-最大15秒)
       按一下向上箭頭的按鍵會增加1秒
       按一下向下箭頭的按鍵會減少1秒
       按了之后板子斷電后會自動保存設定時間值
          再次給電,即可使用!

實物圖如下:


電路原理圖如下:

標注說明:


單片機源程序如下:
  1. /********************************************************************
  2.                             匯誠科技

  3. 實現(xiàn)功能:P3.4,A開關(guān)輸入,P3.5,B開關(guān)輸入 ,P3.3繼電器輸出。
  4.    當A或者B開關(guān)有輸入信號時,輸出繼電器閉合,延時5到15秒可調(diào)節(jié)、
  5.    P3.0和p3.3作為按鍵輸入調(diào)節(jié)時間,具有掉電記憶功能
  6.    首次下載程序一定要先調(diào)節(jié)增加按鍵,否則觸發(fā)后繼電器一直吸合,甚至更長的時間才能斷開
  7. 使用芯片:STC15F104E
  8. 晶振:12MHZ
  9. 波特率:9600
  10. 編譯環(huán)境:Keil
  11. 作者:yang
  12. 華龍電子
  13. 【聲明】此程序僅用于學習與參考,引用請注明版權(quán)和作者信息!      

  14. *********************************************************************/
  15. /********************************************************************/

  16. #include<reg52.h>                 //庫文件
  17. #include <intrins.H>
  18. #define uchar unsigned char//宏定義無符號字符型
  19. #define uint unsigned int  //宏定義無符號整型
  20. sfr P3M0=0Xb2;
  21. sfr P3M1=0Xb1;
  22. /********************************************************************
  23.                             寄存器設置
  24. *********************************************************************/
  25. sfr IAP_DATA  =0xc2;            //數(shù)據(jù)寄存器
  26. sfr IAP_ADDRH =0xc3;            //地址寄存器
  27. sfr IAP_ADDRL =0xc4;            //地址寄存器
  28. sfr IAP_CMD   =0xc5;        //命令寄存器
  29. sfr IAP_TRIG  =0xc6;             //觸發(fā)寄存器
  30. sfr IAP_CONTR =0xc7;        //擦除寄存器
  31. sfr WDT_CONTR=0XC1;                    //看門狗設置寄存器
  32. /********************************************************************
  33.                             命令定義
  34. *********************************************************************/
  35. #define CMD_IDLE     0            //EEPROM無操作
  36. #define CMD_READ     1            //讀取字節(jié)
  37. #define CMD_PROGRAM  2            //寫入字節(jié)
  38. #define CMD_ERASE    3            //擦除字節(jié)
  39. /********************************************************************
  40.                        編程周期由晶振決定
  41. *********************************************************************/

  42. #define ENABLE_IAP 0X83         //編程周期由晶振決定(如果<12MHZ選用此項)

  43. #define IAP_ADDRESS1 0X0000         //內(nèi)部EEPROM地址
  44. /********************************************************************
  45.                             初始定義
  46. *********************************************************************/
  47. uint num,settime; //鍵值判斷
  48. /********************************************************************
  49.                             I/O定義
  50. *********************************************************************/
  51. sbit OUT=P3^3;         //繼電器輸出控制端
  52. sbit INA=P3^4;         //A開關(guān)輸入端
  53. sbit INB=P3^5;         //B開關(guān)輸入端
  54. sbit Increase=P3^1; //增加時間
  55. sbit Reduce=P3^0;  //減小時間
  56. void IapIdle();                                              //操作函數(shù)
  57. uchar IapReadByte(uint addr);             //讀取函數(shù)
  58. void IapProgramByte(uint addr,uchar dat); //寫入函數(shù)
  59. void IapEraseSector(uint addr);                  //擦除函數(shù)
  60. /********************************************************************
  61.                             延時函數(shù)
  62. *********************************************************************/
  63. void delay(uint z)           //0.2ms
  64. {
  65.         uint x,y;
  66.         for(x=z;x>0; x--)
  67.                 for(y=110;y>0;y--);
  68. }
  69. //定時器T0初始化
  70. void init_Timer0(void)
  71. {
  72.     TMOD=0x01;             //定時器工作在方式1
  73.         TH0=(65536-50000)/256; //對TH0 TL0 賦值
  74.         TL0=(65536-50000)%256;
  75.         ET0=1;
  76.         EA=1;
  77.         //TR0=1;
  78. }
  79. //按鍵掃描
  80. void keyscan(void)
  81. {
  82.   if(Increase==0)
  83.   {
  84.     delay(30);
  85.         if(Increase==0)
  86.         {
  87.           while(!Increase);
  88.           settime+=15;
  89.           if(settime>=225)
  90.             settime=225;
  91.           IapEraseSector(IAP_ADDRESS1);    //擦除0扇區(qū)        
  92.       IapProgramByte(1,settime);               //寫入數(shù)據(jù)
  93.         }
  94.   
  95.   }
  96.   if(Reduce==0)
  97.   {
  98.     delay(30);
  99.         if(Reduce==0)
  100.         {
  101.           while(!Reduce);
  102.           settime-=15;
  103.           if(settime<=75)
  104.             settime=75;
  105.           IapEraseSector(IAP_ADDRESS1);    //擦除0扇區(qū)        
  106.       IapProgramByte(1,settime);               //寫入數(shù)據(jù)
  107.         }
  108.   
  109.   }
  110. }
  111. /********************************************************************
  112.                             主函數(shù)
  113. *********************************************************************/
  114. void main()
  115. {        
  116.     P3M0=0X08;//強推挽輸出
  117.         P3M1=0X00;//強推挽輸出
  118.         OUT=0;
  119.         delay(100);
  120.     settime=IapReadByte(1);

  121.         init_Timer0();
  122.         WDT_CONTR=0x3D;          //喂狗時間2.2755s  晶振12mhz,預分頻系數(shù)是64
  123.         while(1)
  124.         {
  125.           keyscan();  //按鍵掃描
  126.           if(INA==0||INB==0)
  127.           {
  128.                         delay(50);
  129.                         if(INA==0||INB==0)
  130.                         {
  131.                             num=0;
  132.                                 OUT=1;        //繼電器吸合,開始延時
  133.                                 TR0=1;        
  134.                         }
  135.           }
  136.           WDT_CONTR=0x3D;          //喂狗時間2.2755s  晶振12mhz,預分頻系數(shù)是64
  137.         }
  138. }               
  139. /********************************************************************
  140.                             定時中斷服務函數(shù)
  141. *********************************************************************/
  142. void t0(void) interrupt 1 using 1 //定時T0中斷服務函數(shù)
  143. {   
  144.    
  145.     num++;
  146.         if(num==settime)          //設定時間范圍是5到15秒
  147.                 {
  148.                         OUT=0; //延時時間到,繼電器斷開
  149.                         TR0=0;
  150.                 }
  151. }
  152. /********************************************************************
  153.                             操作函數(shù)
  154. *********************************************************************/
  155. void IapIdle()
  156. {
  157.         IAP_CONTR=0;
  158.         IAP_CMD=0;
  159.         IAP_TRIG=0;
  160.         IAP_ADDRH=0X80;
  161.         IAP_ADDRL=0;
  162. }
  163. /********************************************************************
  164.                             讀取一個字節(jié)函數(shù)
  165. *********************************************************************/
  166. uchar IapReadByte(uint addr)
  167. {
  168.         uchar dat;  
  169.         IAP_CONTR=ENABLE_IAP;
  170.         IAP_CMD=CMD_READ;
  171.         IAP_ADDRL=addr;
  172.         IAP_ADDRH=addr>>8;
  173.         IAP_TRIG=0X5A;
  174.         IAP_TRIG=0XA5;
  175.         _nop_();
  176.         _nop_();
  177.         _nop_();
  178.         dat=IAP_DATA;
  179.         IapIdle();
  180.         return dat;
  181. }

  182. /********************************************************************
  183.                             寫入一個字節(jié)函數(shù)
  184. *********************************************************************/
  185. void IapProgramByte(uint addr,uchar dat)
  186. {

  187.         IAP_CONTR=ENABLE_IAP;
  188.         IAP_CMD=CMD_PROGRAM;
  189.         IAP_ADDRL=addr;
  190.         IAP_ADDRH=addr>>8;
  191.         IAP_DATA=dat;
  192.         IAP_TRIG=0X5A;
  193.         IAP_TRIG=0XA5;
  194.         _nop_();
  195.         _nop_();
  196.         _nop_();
  197.         IapIdle();
  198. }
  199. /********************************************************************
  200.                             擦除一個字節(jié)函數(shù)
  201. *********************************************************************/
  202. void IapEraseSector(uint addr)
  203. {
  204.         IAP_CONTR=ENABLE_IAP;
  205.         IAP_CMD=CMD_ERASE;
  206.         IAP_ADDRL=addr;
  207.         IAP_ADDRH=addr>>8;
  208.         IAP_TRIG=0X5A;
  209.         IAP_TRIG=0XA5;
  210.         _nop_();
  211.         _nop_();
  212.         _nop_();
  213.         IapIdle();
  214. }
  215. /********************************************************************
  216.                               結(jié)束
  217. *********************************************************************/
復制代碼

所有資料51hei提供下載:
使用說明.docx (51.05 KB, 下載次數(shù): 15)
兩路輸入單路輸出按鍵調(diào)節(jié)延時閉合時間帶看門狗20150417(換擋撥片).rar (34.56 KB, 下載次數(shù): 19)
兩路輸入單路輸出帶按鍵可編程模塊原理圖.pdf (76.15 KB, 下載次數(shù): 15)


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

使用道具 舉報

沙發(fā)
ID:647326 發(fā)表于 2019-11-22 16:15 | 只看該作者
那個寶不是早有了嗎
回復

使用道具 舉報

板凳
ID:432568 發(fā)表于 2019-12-10 18:45 | 只看該作者



按鍵掃描
void keyscan(void)
{
  if(Increase==0)
  {
    delay(30);
        if(Increase==0)
        {
          while(!Increase);
          settime+=15;
          if(settime>=225)
            settime=225;
          IapEraseSector(IAP_ADDRESS1);    //擦除0扇區(qū)        
      IapProgramByte(1,settime);               //寫入數(shù)據(jù)
        }
我是剛接觸C語言的小弟,“ settime+=15;”這句是什么意思?+=連在一起表示什么?
回復

使用道具 舉報

地板
ID:704585 發(fā)表于 2020-6-4 14:47 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久三级 | 日韩电影一区二区三区 | 成人免费共享视频 | 色狠狠桃花综合 | 国产精品久久久久久久久久免费看 | 草久久久 | 国产精品网址 | 国产欧美一区二区三区久久手机版 | 男女黄网站 | 久久综合九色综合欧美狠狠 | 在线免费小视频 | 91九色视频在线 | 亚洲成人午夜在线 | 国产精品久久久久久久久久久久久 | 亚洲一区二区三区欧美 | 精品欧美乱码久久久久久 | 激情五月激情综合网 | 国产午夜精品一区二区三区四区 | 欧美亚洲另类丝袜综合网动图 | 精品日韩在线 | 日韩成人av在线 | 久久99精品久久久久久青青日本 | 欧美999| a在线视频 | 久久久久久综合 | 久久这里只有精品首页 | 三级特黄特色视频 | 欧美成人a | 蜜桃传媒一区二区 | 日韩一区二区三区在线看 | 最新日韩欧美 | 国产精品视频播放 | 99精品99| 夜夜操天天操 | 视频一区中文字幕 | 精品久久久久久久久久久久久久久久久 | 欧美精品一区在线发布 | 羞羞视频免费在线观看 | 国产乱一区二区三区视频 | 国产在线麻豆精品入口 | 免费视频一区二区 |