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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

無線遙控脈沖發(fā)生器 頻率可調(diào) 多檔位程序 帶歷史程序包

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:280979 發(fā)表于 2019-11-17 23:59 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "stc.h"
#include <intrins.h>
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int  //宏定義無符號整型
#define NOP()                    _nop_()
#define EEPROM_START_ADDRESS     0x2000

/********************************************************************
                            初始定義
*********************************************************************/
uint sec=0; //定義計數(shù)值
uint sec1=0; //定義計數(shù)值
uint tcnt; //脈沖計數(shù)
uint tcnt1; //脈沖計數(shù)
uchar timet=0;
uint t1;
bit write;
uchar sudu;
uchar shuru;
uchar dingshi=1;
uint shi=0;
uchar xiaoshi=0;
uchar baojing=0;
uchar biaozhi=0;
/********************************************************************
                            I/O定義
*********************************************************************/

sbit P35=P3^5;         //脈沖
sbit P36=P3^6;         //繼電器
sbit P37=P3^7;         //蜂鳴器
/********************************************************************
                            延時100MS函數(shù)
*********************************************************************/

void Delay100ms(uint t)               
{
        uint i, j;
        _nop_();
        i = 100;
        j = t;
       
         while (--j);
         while (--i);
}

/********************************************************************
                            蜂鳴器函數(shù)
*********************************************************************/
void fmq()
{
P37=0; Delay100ms(20000);P37=1;
}

/****************************************************
* 函數(shù)名稱: DelayNus
* 輸    入: t 延時時間
* 輸    出: 無
* 功能描述: 微秒級延時
*****************************************************/
void DelayNus(uint t)
{
        uint d=0;

        d=t;

        do
        {
                NOP();
        }while(--d >0);       
}
/****************************************************
* 函數(shù)名稱: DelayNms
* 輸    入: t 延時時間
* 輸    出: 無
* 功能描述: 毫秒延時
*****************************************************/
void DelayNms(uint t)
{
         do
         {
                 DelayNus(1000);

         }while(--t >0);
}
/****************************************************
* 函數(shù)名稱: EEPROMEnable
* 輸    入: 無
* 輸    出: 無
* 功能描述: EEPROM使能
*****************************************************/
void EEPROMEnable(void)
{
        ISP_CONTR=0x81;//使能并設(shè)置好等待時間
}
/****************************************************
* 函數(shù)名稱: EEPROMDisable
* 輸    入: 無
* 輸    出: 無
* 功能描述: EEPROM禁用
*****************************************************/
void EEPROMDisable(void)
{
    ISP_CONTR=0x00;  //禁止EEPROM
    ISP_CMD=0x00;    //無ISP操作
    ISP_TRIG=0x00;   //清零
    ISP_ADDRH=0x00;  //清零
    ISP_ADDRL=0x00;  //清零
}
/****************************************************
* 函數(shù)名稱: EEPROMSetAddress
* 輸    入: addr 16位地址
* 輸    出: 無
* 功能描述: EEPROM 設(shè)置讀寫地址(相對地址)
*****************************************************/
void EEPROMSetAddress(uint addr)
{
    addr+=EEPROM_START_ADDRESS; //初始化地址為0x2000
    ISP_ADDRH=(uchar)(addr>>8); //設(shè)置讀寫地址高字節(jié)
    ISP_ADDRL=(uchar) addr;      //設(shè)置讀寫地址低字節(jié)
}
/****************************************************
* 函數(shù)名稱: EEPROMStart
* 輸    入: 無
* 輸    出: 無
* 功能描述: EEPROM 啟動
*****************************************************/
void EEPROMStart(void)
{
    ISP_TRIG=0x46; //首先寫入0x46
    ISP_TRIG=0xB9; //然后寫入0xB9
}
/****************************************************
* 函數(shù)名稱: EEPROMReadByte
* 輸    入: addr 16位 地址
* 輸    出: 單個字節(jié)
* 功能描述: EEPROM 讀取單個字節(jié)
*****************************************************/
uchar EEPROMReadByte(uint addr)
{

    ISP_DATA=0x00;              //清空ISP_DATA
    ISP_CMD=0x01;               //讀模式

    EEPROMEnable();             //EEPROM使能
    EEPROMSetAddress(addr);   //設(shè)置EEPROM地址
    EEPROMStart();              //EEPROM啟動

        DelayNus(10);              //讀取一個字節(jié)要10us

    EEPROMDisable();           //禁止EEPROM
       
    return (ISP_DATA);        //返回讀取到的數(shù)據(jù)
}
/****************************************************
* 函數(shù)名稱: EEPROMWriteByte
* 輸    入: addr 16位 地址
byte 單個字節(jié)
* 輸    出: 無
* 功能描述: EEPROM 寫入單個字節(jié)
*****************************************************/
void EEPROMWriteByte(uint addr,uchar byte)
{
    EEPROMEnable();           //EERPOM使能

    ISP_CMD=0x02;             //寫模式

    EEPROMSetAddress(addr); //設(shè)置EEPROM地址

    ISP_DATA=byte;            //寫入數(shù)據(jù)

    EEPROMStart();            //EEPROM啟動

        DelayNus(60);            //寫一個字節(jié)需要60us

    EEPROMDisable();         //禁止EEPROM
}
/****************************************************
* 函數(shù)名稱: EEPROMSectorErase
* 輸    入: addr 16位 地址
* 輸    出: 無
* 功能描述: EEPROM 扇區(qū)擦除
*****************************************************/
void EEPROMSectorErase(uint addr)
{
    ISP_CMD=0x03;            //扇區(qū)擦除模式

    EEPROMEnable();          //EEPROM使能
    EEPROMSetAddress(addr);//設(shè)置EEPROM地址
    EEPROMStart();           //EEPROM啟動

    DelayNms(10);             //擦除一個扇區(qū)要10ms

    EEPROMDisable();         //禁止EEPROM

}
/********************************************************************
                            按鍵判斷函數(shù)
*********************************************************************/
void KEY()

{
shuru=P1;
switch(shuru)
  {
  case 0XF8:  fmq();P36=0;TR0=0;P35=0;Delay100ms(50000);break;//D
  case 0XF2:  fmq();sudu++;write=1;if(sudu>=41)sudu=41;Delay100ms(20000);break;//B
  case 0XF4:  fmq();sudu--;write=1;if(sudu<=1)sudu=1;Delay100ms(20000);break;//C   
  case 0XF1:  fmq();P36=1;TR0=1;P35=1;Delay100ms(50000);break;//A
  default:break;       
  }
switch(sudu)
{
case 1: t1=1;break;//2K
case 2: t1=2;break;//2K
case 3: t1=3;break;//2K
case 4: t1=4;break;//1.6k
case 5: t1=5;break;//1.33k
case 6: t1=6;break;//1.14k
case 7: t1=7;break;//1k
case 8: t1=8;break;// 880
case 9: t1=9;break;// 800
case 10: t1=10;break;// 660
case 11: t1=11;break;// 660
case 12: t1=12;break;// 660
case 13: t1=13;break;// 580
case 14: t1=14;break;// 660
case 15: t1=15;break;//        500
case 16: t1=16;break;// 660
case 17: t1=17;break;//        450
case 18: t1=18;break;// 660
case 19: t1=19;break;//        400
case 20: t1=20;break;// 660
case 21: t1=21;break;//        360
case 22: t1=22;break;//        350
case 23: t1=23;break;// 660
case 24: t1=24;break;// 660
case 25: t1=25;break;//        300
case 26: t1=26;break;//        300
case 27: t1=30;break;//        260
case 28: t1=33;break;//        240
case 29: t1=37;break;//        220
case 30: t1=41;break;//        200
case 31: t1=50;break;//        160
case 32: t1=60;break;//        135
case 33: t1=65;break;//        125
case 34: t1=75;break;//        110
case 35: t1=80;break;//        100
case 36: t1=95;break;//        84
case 37: t1=120;break;//60
case 38: t1=150;break;//50
case 39: t1=300;break;//30
case 40: t1=1000;break;//8
case 41: t1=10000;break;//1
default:break;
}
}

/********************************************************************
                            定時中斷服務(wù)函數(shù)
*********************************************************************/
void t0(void) interrupt 1 using 0 //定時中斷服務(wù)函數(shù)
{

         tcnt1++;
         if(tcnt1>=t1)
           {
             tcnt1=0;
         P35=!P35;
            }

}

/********************************************************************
                            主函數(shù)
*********************************************************************/
void main()
{
    uchar Q;
        TMOD=0x02; //定時器工作在方式2
        TH0=0x06; //對TH0 TL0 賦值
        TL0=0x06;
        TR0=0; //關(guān)定時
        ET0=1; //開定時器
        EA=1;  //開總中斷
        P1=0XFF;
        P35=0;//脈沖輸出腳
        P36=0;//繼電器輸出控制關(guān)
        Q=EEPROMReadByte(0);     //從EERPOM的相對0地址讀取數(shù)據(jù)
        sudu=Q;
        while(1)
        {
    KEY();
        if(write==1)
    {
        EEPROMSectorErase(0);    //從EEPROM的相對0地址扇區(qū)擦除
    EEPROMWriteByte(0,sudu);//從EEPROM的相對0地址寫入0x88
        write=0;
        }
    }
}               

ALIM0086.JPG (63.75 KB, 下載次數(shù): 99)

ALIM0086.JPG

ALIM0095.JPG (78.17 KB, 下載次數(shù): 90)

ALIM0095.JPG

改裝后接線圖.JPG (74.61 KB, 下載次數(shù): 110)

改裝后接線圖.JPG

儀表和汽車原接線圖.JPG (25.89 KB, 下載次數(shù): 97)

儀表和汽車原接線圖.JPG

原理圖及PCB圖.rar

173.92 KB, 下載次數(shù): 24, 下載積分: 黑幣 -5

程序包.rar

873.03 KB, 下載次數(shù): 22, 下載積分: 黑幣 -5

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天拍天天操 | 欧美一区二区在线免费观看 | 亚洲精品不卡 | 岛国av在线免费观看 | 国产精品久久久久久久白浊 | 综合成人在线 | 九九精品在线 | 日本三级做a全过程在线观看 | 国产精品久久久久久久久久东京 | 黄网免费看 | 91社区在线观看高清 | 国产成人精品一区二区 | 国产精品日日摸夜夜添夜夜av | 91在线视频观看 | 亚洲一区二区免费视频 | 一区二区在线不卡 | 亚洲成人一级片 | 国产免费拔擦拔擦8x高清 | 精品在线观看一区 | 欧美在线一区二区三区 | 欧美成人一区二区三区片免费 | 国产精品片aa在线观看 | 国产精品视频一二三区 | 精品国产一区二区三区性色av | 性欧美xxxx | 狠狠干网站 | 日韩精彩视频 | 精品久久一区二区三区 | 成人av激情 | 亚洲精品国产精品国自产在线 | 欧美日韩综合 | 97免费在线视频 | 成人深夜福利在线观看 | 欧美黑人又粗大 | 国产精品久久久99 | 日韩高清国产一区在线 | 色必久久| 亚洲综合日韩精品欧美综合区 | 成人黄色av| 蜜桃毛片 | 中文字幕日韩欧美 |