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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2778|回復(fù): 0
收起左側(cè)

數(shù)字選頻電路 單片機(jī)檢頻程序 檢測不同頻率設(shè)定報(bào)警閾值

[復(fù)制鏈接]
ID:280979 發(fā)表于 2019-11-13 00:31 | 顯示全部樓層 |閱讀模式
電路原理圖如下:
DSC_0093.JPG 應(yīng)用舉例.JPG
#include "demo.h"                  
#include "eeprom.h"
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int  //宏定義無符號整型

uint tcnt1=0;//用于刷新數(shù)碼管
uint qiannum1,bainum1,shinum1,genum1;
uchar qiannum2,bainum2,shinum2,genum2;
uchar qiannum3,bainum3,shinum3,genum3;
code uchar seg7code[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數(shù)碼管字跟
uchar wei1[3]={0XDf,0XBf,0X7f};//數(shù)碼管1的位的控制端
uchar wei2[3]={0XFb,0XF7,0Xef};//數(shù)碼管2的位的控制端
uchar abcf[4]={0x88,0x83,0xc6,0xbf};//abc-
uchar abcf1,abcf2;//用于顯示特殊字符abc-

uint dispcount=0;//獲取霍爾傳感器的數(shù)據(jù)用        獲取數(shù)據(jù)
uint lck=0;//獲取霍爾傳感器的數(shù)據(jù)用    計(jì)時(shí)一秒用
uint disp=0; //獲取霍爾傳感器的數(shù)據(jù)用   顯示到數(shù)碼管用
void timer0_1init();//定時(shí)配置

void displaynum();//將數(shù)字傳到數(shù)碼管上顯示
static uchar presstime=0;//時(shí)間值按鍵用到的
uint kf0=1;//按鍵用的標(biāo)志位
uint kt0=0;//按鍵用的標(biāo)志位
void keycan();//按鍵
void keyflag();//按鍵結(jié)束調(diào)用,按鍵的建議使用,這樣可以減小code,但是觸發(fā)的不建議
uint abc=0,abc1=0;//abc三種狀態(tài)
uint keynum=0;//數(shù)碼管的位
uint highnum=0,downnum=0;//最大數(shù)和最小數(shù)
uchar highnum1=0,highnum2=0,downnum1=0,downnum2=0;//最大數(shù)和最小數(shù)
bit flag_eeprom1=1;//掉電存儲的標(biāo)志位
void saveeepro();//掉電存儲
void main(){
        timer0_1init();
        highnum1=Byte_Read(0x01);//掉電存儲用到  
        highnum2=Byte_Read(0x02);//掉電存儲用到
        downnum1=Byte_Read(0x03);//掉電存儲用到
        downnum2=Byte_Read(0x04);//掉電存儲用到        
        genum2=highnum1%10;//個(gè)位
        shinum2=highnum1%100/10;//十位
        bainum2=highnum2%10;//個(gè)位
        qiannum2=highnum2%100/10;//十位
        
        genum3=downnum1%10;//個(gè)位
        shinum3=downnum1%100/10;//十位
        bainum3=downnum2%10;//個(gè)位
        qiannum3=downnum2%100/10;//十位
               
        highnum=qiannum2*1000+bainum2*100+shinum2*10+genum2;
        downnum=qiannum3*1000+bainum3*100+shinum3*10+genum3;
        while(1){
                keycan();
                displaynum();
        }
}
void saveeepro(){//掉電存儲
                         highnum1=shinum2*10+genum2;
                         highnum2=qiannum2*10+bainum2;
                         downnum1=shinum3*10+genum3;
                         downnum2=qiannum3*10+bainum3;
                            Sector_Erase(0);           //擦除0x01地址中的數(shù)據(jù)          一定要先擦除再寫進(jìn)  同一地址                                
                      Byte_Program(0x01,highnum1);            //擦除完成就可以寫入了
                          Byte_Program(0x02,highnum2);            //擦除完成就可以寫入了
                      Byte_Program(0x03,downnum1);            //擦除完成就可以寫入了
                          Byte_Program(0x04,downnum2);            //擦除完成就可以寫入了
}
void keycan(){//按鍵
    if(key1==0){//當(dāng)按鍵1按下
                if(kf0){//當(dāng)標(biāo)志位kf0=1的時(shí)候進(jìn)行
                        if(presstime>100){//當(dāng)時(shí)間值大于一百的時(shí)候
                                kf0=0;//標(biāo)志位kf0=0
                                kt0=1;//標(biāo)志位kt0=0
                                presstime=0;//時(shí)間清零,重新進(jìn)行
                                keynum=0;
                                abc1=0;
                                disp=0;
                                abc++;
                        if(abc==3){//當(dāng)位到3則置位0
                                   abc=0;
                                 }
                        }
                  }
        }else{//當(dāng)按鍵松開
                keyflag();
        }//按鍵1結(jié)束
        if(abc>0){
            if(key2==0){if(kf0){if(presstime>100){kf0=0;kt0=1;presstime=0;flag_eeprom1=1;
                                        keynum++;if(keynum==5){keynum=0;
                }}}}else{keyflag();        
                        if((flag_eeprom1==1)){//加掉電存儲
                                flag_eeprom1=0;
                                saveeepro();//掉電存儲
                        }
                }
            if(key3==0){if(kf0){if(presstime>100){kf0=0;kt0=1;presstime=0;flag_eeprom1=1;
                                switch(keynum){
                                        case 1:
                                                if(abc==1){
                                                        genum2++;//數(shù)碼管一加加
                                                        if(genum2>9){//當(dāng)數(shù)碼管一加加到9時(shí)置為1
                                                                genum2=0;
                                                        }
                                                }else if(abc==2){
                                                        genum3++;//數(shù)碼管一加加
                                                        if(genum3>9){//當(dāng)數(shù)碼管一加加到9時(shí)置為1
                                                                genum3=0;
                                                        }                                                
                                                }
                                                break;
                                        case 2:if(abc==1){shinum2++;if(shinum2>9){shinum2=0;}
                                         }else if(abc==2){shinum3++;if(shinum3>9){shinum3=0;}}
                                                break;
                                        case 3:if(abc==1){bainum2++;if(bainum2>9){bainum2=0;}
                                         }else if(abc==2){bainum3++;if(bainum3>9){bainum3=0;}}
                                                break;
                                        case 4:if(abc==1){qiannum2++;if(qiannum2>9){qiannum2=0;}
                                         }else if(abc==2){qiannum3++;if(qiannum3>9){qiannum3=0;}}
                                                break;

                                        default:break;
                                }
                }}}else{keyflag();
                        if((flag_eeprom1==1)){//加掉電存儲
                                flag_eeprom1=0;
                                saveeepro();//掉電存儲
                        }
                }
        }
}

void displaynum(){//將數(shù)字傳到數(shù)碼管上顯示
        if(abc==0){
                abcf1=0;//a
                abcf2=3;//-
                genum1=disp%10;//個(gè)位
                shinum1=disp%100/10;//十位
                bainum1=disp%1000/100;//百位
                qiannum1=disp/1000;//千位
                if(abc1>2000){
                        if((downnum<disp)&&(disp<highnum)){out1=1;out2=1;}
                        if((downnum>disp)&&(disp<highnum)){out1=0;out2=1;}
                        if((downnum<disp)&&(disp>highnum)){out1=1;out2=0;}

                }
        }else if(abc==1){
                abcf1=1;//b
                abcf2=3;//-        
                highnum=qiannum2*1000+bainum2*100+shinum2*10+genum2;
                genum1=genum2;//個(gè)位
                shinum1=shinum2;//十位
                bainum1=bainum2;//百位
                qiannum1=qiannum2;//千位

        }else if(abc==2){
                abcf1=2;//c
                abcf2=3;//-        
                downnum=qiannum3*1000+bainum3*100+shinum3*10+genum3;
                genum1=genum3;//個(gè)位
                shinum1=shinum3;//十位
                bainum1=bainum3;//百位
                qiannum1=qiannum3;//千位
        }
}
void timer0(void)interrupt 1  {         
        TH0=0xe3;
        TL0=0xc;        
        tcnt1++;
        presstime++;
        if(abc==0){
                abc1++;
                lck++;        
                if(lck==1000){
                        if(abc1>2000){
                                disp=dispcount;
                        }
                        lck=0;
                        dispcount=0;               
                }
        }
        switch(tcnt1){
           case 1: P2=0XFF; P0=abcf[abcf1];P2=wei1[2];break;
          case 2: P2=0XFF; P0=abcf[abcf2];P2=wei1[1];break;
          case 3: P2=0XFF; P0=seg7code[qiannum1];if(keynum==4 || keynum==0){P2=wei1[0];}break;
           case 4: P2=0XFF; P0=seg7code[bainum1]; if(keynum==3 || keynum==0){P2=wei2[2];}break;
          case 5: P2=0XFF; P0=seg7code[shinum1]; if(keynum==2 || keynum==0){P2=wei2[1];}break;
          case 6: P2=0XFF; P0=seg7code[genum1];  if(keynum==1 || keynum==0){P2=wei2[0];}break;
          default: tcnt1=0; P2=0XFF; break;
         }
}
void timer0_1init(){//定時(shí)配置
        TMOD=0x0;
        TH0=0xe3;
        TL0=0xc;
//        IT0=1;     //INT0下降沿中斷
//        EX0=1;     //允許INT1中斷         
        IT1=1;     //INT1下降沿中斷
        EX1=1;     //允許INT1中斷         
        TR0=1;
        ET0=1;
        EA=1;
}
//void int0(void) interrupt 0{//P3^2//此處用于獲取霍爾傳感器的數(shù)據(jù)
//        dispcount++; //每一次中斷,計(jì)數(shù)加一
//}
void int1(void) interrupt 2{//P3^3//此處用于獲取霍爾傳感器的數(shù)據(jù)
        dispcount++; //每一次中斷,計(jì)數(shù)加一
}
void keyflag(){//按鍵結(jié)束調(diào)用,按鍵的建議使用,這樣可以減小code,但是觸發(fā)的不建議
           if(kt0){//當(dāng)標(biāo)志位kt0=1的時(shí)候進(jìn)行
                   if(presstime>100){//當(dāng)時(shí)間值大于一百的時(shí)候
                        kf0=1;//標(biāo)志位kf0=1
                        kt0=0;//標(biāo)志位kt0=0
                           presstime=0;//時(shí)間清零,重新進(jìn)行

                        }
           }
}

全部資料51hei下載地址:
CX-0001_觸發(fā)繼電器吸合循環(huán)通斷時(shí)間可調(diào).rar (53.02 KB, 下載次數(shù): 15)
數(shù)字選頻電路測試程序.rar (50.77 KB, 下載次數(shù): 20)
數(shù)字選頻電路原理圖及PCB圖.pdf (753.93 KB, 下載次數(shù): 13)
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区在线播放 | 成人免费黄色大片 | 国产日韩av在线 | 日产精品久久久一区二区 | 在线视频a | 国产毛片毛片 | 欧美日韩亚洲一区二区三区 | 中文字幕免费在线 | 久久99精品久久久久久水蜜桃 | 国产午夜精品一区二区三区嫩草 | 国产av毛片 | 成人性生活视频 | 99精品视频在线 | 国产日韩欧美日韩大片 | 一区二区三区在线播放 | 亚洲黄色精品 | 欧美黄色网 | 国产成人三级在线观看 | 日韩亚洲在线 | 中文字幕不卡在线观看 | 亚洲综合激情 | 欧美在线观看一区二区三区 | 中文字幕专区 | 亚洲精选在线观看 | 欧美在线| 天天综合网站 | 国产精品二区三区 | 亚洲精品美女 | 99在线免费观看 | 大桥未久在线视频 | 午夜视频在线免费观看 | 免费在线黄色网址 | 一区两区小视频 | 欧美美女视频 | 欧美香蕉视频 | 国产中文字幕视频 | 亚洲免费二区 | 亚色在线 | 毛片毛片毛片毛片毛片 | 欧美日韩性 | 夜夜嗨av一区二区三区网页 |