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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)控制的報(bào)警器源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:318050 發(fā)表于 2018-4-27 20:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "reg52.h"
#include "main.h"
#include "mfrc522.h"       
#include <string.h>
#include"X24C02.h"       
#include "LCD1602.h"
#include "STCEEPROM.h"
#define uchar unsigned char
#define uint  unsigned int
sbit Speak = P2^7;
sbit RED = P3^4;
sbit GREEN = P3^3;
sbit Relay = P3^2;
sbit KEY1 = P1^3;
sbit KEY2 = P1^4;
sbit KEY3 = P1^5;
sbit KEY4 = P1^6;
sbit KEY5 = P1^7;
unsigned char idata RevBuffer[30];
unsigned char Card_Num;                    
void iccardcode();
//系統(tǒng)初始化
void InitializeSystem()
{
     PcdReset();
     PcdAntennaOff();
     PcdAntennaOn();  
         M500PcdConfigISOType( 'A' );
}
unsigned char idata UID[4],Temp[4];
unsigned char Table[3];
unsigned char Num;
unsigned char Count,Countf,Count1,Count2,Count3,Count4,Count5,C_flag;
void Auto_Reader(void)
{
    if(PcdRequest(0x52,Temp)==0)
    {
      if(PcdAnticoll(UID)==0)
      {
                            Speak=0;delay_10ms(20);Speak=1;
                        Table[0]=UID[0]/100+0x30;
                        Table[1]=UID[0]/10%10+0x30;
                        Table[2]=UID[0]%10+0x30;
                        LCD1602_Disp_ZF(0x80+0x40,"Num:            ",16);
                        LCD1602_Disp_ZF(0x84+0x40,Table,3);
                        Count =  UID[0];
                        if((Count==Count1)||(Count==Count2)||(Count==Count3)||(Count==Count4)||(Count==Count5))
                        {
                                LCD1602_Disp_ZF(0x8a+0x40,"OK   ",5);
                                GREEN = 0;Relay=0;delay_10ms(200);Relay=1;GREEN = 1;
                                C_flag=1;
                        }
                        else
                        {
                                LCD1602_Disp_ZF(0x8a+0x40,"Error",5);
                                RED = 0;delay_10ms(200);RED = 1;
                                C_flag=2;
                        }
                        delay_10ms(200);
                           LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);
                }
        }
}
uchar DS1302_Table[7]={0};        //讀取時(shí)間值
void Display_LCD2(uchar Dis_Hour,uchar Dis_Min,uchar Dis_Sec)
{
        uchar Dis_Table[8]="11:22:33";
       
        Dis_Table[0] = Dis_Hour/10+0x30;
        Dis_Table[1] = Dis_Hour%10+0x30;
        Dis_Table[3] = Dis_Min/10+0x30;
        Dis_Table[4] = Dis_Min%10+0x30;
        Dis_Table[6] = Dis_Sec/10+0x30;
        Dis_Table[7] = Dis_Sec%10+0x30;
        LCD1602_Disp_ZF(0x85,Dis_Table,8);               
}
void main(void)
{     
        unsigned char i;
        InitializeSystem();
        LCD1602_init();
        x24c02_init();
        //Money_1=x24c02_read(0X01);
        //x24c02_write(0X03,Money_3);
        LCD1602_Disp_ZF(0x80,"Time:",5);
                                 //0123456789abcdef
        LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);
        //LCD1602_Disp_ZF(0x80+0x40,"Num:",4);
        //ISP_ERASE(0x2c00);                //注意:字節(jié)編程時(shí)必須要先要擦除整個(gè)扇區(qū)
        //for(i=0;i<255;i++)       
        //        ISP_PROGRAM(0x2c00+i, 0x00);
        Countf=ISP_READ(0x2c00);               
        Count1=ISP_READ(0x2c01);
        Count2=ISP_READ(0x2c02);
        Count3=ISP_READ(0x2c03);
        Count4=ISP_READ(0x2c04);
        Count5=ISP_READ(0x2c05);
        while (1)
        {       
                ////////////////////////////////
                iccardcode();
                Auto_Reader();
                ////////////////////////////////
                Run_DS1302();
                //delay_10ms(200);
                if(!KEY1)
                {
                        delay_10ms(50);
                        if(!KEY1)
                        {
                        DS1302_Table[4]++;
                        Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0);
                        }       
                }       
                if(!KEY2)
                {
                        delay_10ms(50);
                        if(!KEY2)
                        {
                        DS1302_Table[4]--;
                        Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0);
                        }       
                }
                //////////////////////////////////
                if(!KEY3)
                {
                        delay_10ms(50);
                        if(!KEY3)
                        {
                        DS1302_Table[5]++;
                        Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0);
                        }       
                }       
                if(!KEY4)
                {
                        delay_10ms(50);
                        if(!KEY4)
                        {
                        DS1302_Table[5]--;
                        Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0);
                        }       
                }
                if(!KEY5)
                {
                        delay_10ms(50);
                        if(!KEY5)
                        {
                                if(C_flag==2)
                                {
                                                                                         //0123456789abcdef
                                        LCD1602_Disp_ZF(0x80+0x40," Register Card! ",16);
                                        Countf++;
                                        if(Countf==6)Countf=1;
                                        if(Countf==1) Count1 = Count;
                                        if(Countf==2) Count2 = Count;
                                        if(Countf==3) Count3 = Count;
                                        if(Countf==4) Count4 = Count;
                                        if(Countf==5) Count5 = Count;       
                                       
                                }
                                if(C_flag==1)
                                {
                                                                                         //0123456789abcdef
                                        LCD1602_Disp_ZF(0x80+0x40,"  Clean Card!   ",16);
                                        if(Count==Count1)Count1=0;
                                        if(Count==Count2)Count2=0;
                                        if(Count==Count3)Count3=0;
                                        if(Count==Count4)Count4=0;
                                        if(Count==Count5)Count5=0;
                                }
                                Speak=0;delay_10ms(200);Speak=1;
                                LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);
                                ISP_ERASE(0x2c00);               
                                ISP_PROGRAM(0x2c00, Countf);
                                ISP_PROGRAM(0x2c01, Count1);
                                ISP_PROGRAM(0x2c02, Count2);
                                ISP_PROGRAM(0x2c03, Count3);
                                ISP_PROGRAM(0x2c04, Count4);
                                ISP_PROGRAM(0x2c05, Count5);
                                C_flag =0;
                                while(!KEY5);
                        }       
                }
                //////////////////////
        }
}
void iccardcode()
{             
          unsigned char cmd;
        unsigned char status;
       
        cmd = RevBuffer[0];
        switch(cmd)
        {
                case 1:     // Halt the card     //終止卡的操作
                        status= PcdHalt();;                       
                        RevBuffer[0]=1;
                        RevBuffer[1]=status;
                        break;                       
                case 2:     // Request,Anticoll,Select,return CardType(2 bytes)+CardSerialNo(4 bytes)
                                // 尋卡,防沖突,選擇卡    返回卡類型(2 bytes)+ 卡系列號(4 bytes)
                        status= PcdRequest(RevBuffer[1],&RevBuffer[2]);
                        if(status!=0)
                        {
                                status= PcdRequest(RevBuffer[1],&RevBuffer[2]);
                                if(status!=0)                               
                                {
                                        RevBuffer[0]=1;       
                                        RevBuffer[1]=status;
                                        break;
                                }
                        }  
                        RevBuffer[0]=3;       
                        RevBuffer[1]=status;
                        break;
                       
                case 3:                        MLastSelectedSnr
                        status = PcdAnticoll(&RevBuffer[2]);
                        if(status!=0)
                        {
                                RevBuffer[0]=1;       
                                RevBuffer[1]=status;
                                break;
                        }
                        //memcpy(MLastSelectedSnr,&RevBuffer[2],4);
                        RevBuffer[0]=5;
                        RevBuffer[1]=status;
                        break;       
                case 4:                                    // 選擇卡 Select Card
                        //status=PcdSelect(MLastSelectedSnr);
                        if(status!=MI_OK)
                        {
                                RevBuffer[0]=1;       
                                RevBuffer[1]=status;
                                break;
                        }
                        RevBuffer[0]=3;
                        RevBuffer[1]=status;                       
                        break;
                case 5:            // Key loading into the MF RC500's EEPROM
            //status = PcdAuthState(RevBuffer[1], RevBuffer[3], DefaultKey, MLastSelectedSnr);
                        RevBuffer[0]=1;
                        RevBuffer[1]=status;                       
                        break;                                                       
                case 6:
                        RevBuffer[0]=1;
                        RevBuffer[1]=status;                       
                        break;                               
                case 7:     
                    RevBuffer[0]=1;
                        RevBuffer[1]=status;                       
                        break;
                case 8:     // Read the mifare card
                           
                        status=PcdRead(RevBuffer[1],&RevBuffer[2]);
                        if(status==0)
                        {RevBuffer[0]=17;}
                        else
                        {RevBuffer[0]=1;}
                        RevBuffer[1]=status;                       
                        break;
                case 9:     // Write the mifare card
                          
                        status=PcdWrite(RevBuffer[1],&RevBuffer[2]);
                        RevBuffer[0]=1;
                        RevBuffer[1]=status;                       
                        break;
                case 10:
            PcdValue(RevBuffer[1],RevBuffer[2],&RevBuffer[3]);
                        RevBuffer[0]=1;       
                        RevBuffer[1]=status;
                        break;
                case 12:  
                    PcdBakValue(RevBuffer[1], RevBuffer[2]);
                        RevBuffer[0]=1;        //contact
                        RevBuffer[1]=0;
                        break;               
        }
}

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

使用道具 舉報(bào)

沙發(fā)
ID:319848 發(fā)表于 2018-5-1 14:44 | 只看該作者
請問這有沒有完整點(diǎn)的注釋
回復(fù)

使用道具 舉報(bào)

板凳
ID:319848 發(fā)表于 2018-5-1 14:45 | 只看該作者
新手,跪求完整清晰的注釋
回復(fù)

使用道具 舉報(bào)

地板
ID:321415 發(fā)表于 2018-5-3 17:27 | 只看該作者
大佬這是針對什么報(bào)警器的源程序
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九伦理片 | com.国产| 国内精品视频 | 日韩成人国产 | 欧美男人亚洲天堂 | 91久久夜色精品国产网站 | 欧美色影院 | 国产精品一区二区在线 | 亚洲高清在线免费观看 | 欧美亚洲国产一区二区三区 | 日韩av在线不卡 | 亚洲欧美少妇 | 久久精品欧美一区二区三区不卡 | www.奇米| 99re6在线视频| 欧美三区在线观看 | 中文字幕不卡一区 | 欧美日韩国产中文字幕 | 中文字幕一区在线观看视频 | 欧美性生交大片免费 | 欧美综合一区二区三区 | 看片国产| jizz在线看片| 成人精品一区 | 日韩在线观看网站 | 日韩中文一区 | 欧美日韩午夜精品 | 亚洲精彩免费视频 | 国内自拍偷拍 | 中文字幕一级毛片 | 欧美日韩在线一区二区 | 九九热这里只有精品6 | 99国产精品99久久久久久 | 99热精品久久 | 国产一区2区 | 黄a大片 | 韩日在线观看视频 | 欧美在线免费 | av在线免费观看网站 | 欧美婷婷 | 亚洲国产一区二区三区在线观看 |