⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ear.c

📁 attendace system on 8051 chipset from intel.
💻 C
📖 第 1 页 / 共 2 页
字号:
}

void updatescreen()
{
        char str[10];

        /***************************128x64lcd**********************

        lcddisplaysstr(0 * 8, 0, " E A R  4 0 2 2 ", INVERTED_MODE);
        lcddisplaysstr(0 * 8, 1, " Show your card ", INVERTED_MODE);

        lcddisplaysstr(1 * 8, 3, "              ", NORMAL_MODE);
        lcddisplaysstr(1 * 8, 4, "              ", NORMAL_MODE);

        dategetdate(&today);
        datetostr(&today, date_str);

        lcddisplaybmp(7 , 6, calender, CALENDER_BMP_COLS, CALENDER_BMP_ROWS, NORMAL_MODE);
        date_str[2] = '-';
        lcddisplaysstr(2 * 8, 6, date_str, NORMAL_MODE);

        timegettime(&now);
        timetostr(&now, time_str);

        lcddisplaybmp(71, 6, clock, CLOCK_BMP_COLS, CLOCK_BMP_ROWS, NORMAL_MODE);
        lcddisplaysstr(10 * 8, 6, time_str, NORMAL_MODE);

        lcddisplaysstr(0, 7, "                ", INVERTED_MODE);

        ************************************************************/

        /***************************2x16lcd*************************/
        dategetdate(&today);
        datetostr(&today, date_str);

        timegettime(&now);
        timetostr(&now, time_str);

        lcd2x16displaystr(1, 1, "D-");
        lcd2x16displaystr(3, 1, date_str);
        lcd2x16displaystr(10, 1, "T-");
        lcd2x16displaystr(12, 1, time_str);
        lcd2x16displaystr(1, 2, " Show your card ");
        /**********************************************************/
}

void rx() interrupt 4
{
        char ch;

        if(RI)
        {
                ch = SBUF;

                if(rfid_processed)
                {
                        if(ch == '\r' || ch == '\n')
                        {
                                rfid[index] = '\0';
                                index = 0;
                                rfid_received = 1;
                                rfid_processed = 0;
                        }
                        else
                        {
                                rfid[index++] = ch;
                        }
                }

                RI = 0;
        }
}

void transmit(char *str)
{
        while(*str)
        {
                SBUF = *str;
                while(!TI);
                TI = 0;
                str++;
        }
}

/*
void buzz(int pw1, int pw2, int dur)
{
        int i;
        for(i = 0; i < dur; i++)
        {
                BUZZER = 0;
                delay(pw1);
                BUZZER = 1;
                delay(pw2);
        }
}

#define BUZZ() buzz(5, 15, 1000)
*/

void initEAR4022()
{
        init89c51rd2(BAUD_RATE_9600);

        ENABLE_OFFCHIP_XRAM();
        //initlcd();  //for graphic lcd

        init2x16lcd();

        //delay(25000);

        clearlcd();

        PROCESS_END();
        RFID_PROCESSED();
       
        if(reset_mode)
        {
               /* lcddisplaybmp(0, 0, JBB, JBB_BMP_COLS, JBB_BMP_ROWS, INVERTED_MODE);
                delay(25000);
                delay(25000);
                delay(25000);
                delay(25000);
                delay(25000);

                clearlcd();
                lcddisplaystr(0, 4, "EAR - 4022 V 1-0", NORMAL_MODE);*/

                lcd2x16displaystr(1, 1, " JBB  Soft Tech ");
                lcd2x16displaystr(1, 2, " EAR 4022 V-1.0 ");

                BUZZER_ON();
                delay(25000);
                BUZZER_OFF();

                delay(25000);

                BUZZER_ON();
                delay(25000);
                BUZZER_OFF();

                clearlcd();
              /*  lcddisplaybmp(0, 0, common, COMMON_BMP_COLS, COMMON_BMP_ROWS, NORMAL_MODE);
                lcddisplaystr(2 * 8, 4, "          ", NORMAL_MODE);*/
        }

        if(display_rfid != 0x00 && display_rfid != 0xFF)display_rfid = 0xFF;

        reset_mode = 1;
}

char validrfid(char *rfid)
{
        if(strstrlen(rfid) < RFID_LENGTH)return 0;
        return 1;
}

char transmitar(AttendanceRecord *ar)  // codes similar to 1022 but encapsulated for transmitting to pc
{
        char ds[10];
        char ts[10];

        if(ar == NULL)return 0;

        //Transmiting rfid
        transmit("[");
        transmit(ar->rfid);
        transmit("     ");
        datetostr(ar->d, ds);
        ds[2] = '/';
        transmit(ds);
        transmit("     ");
        timetostr(ar->t, ts);
        ts[2] = ':';
        transmit(ts);
        transmit("]");

        return 1;
}

AttendanceRecord *storear(char *rfid, struct date *d, struct time *t) // stores to database
{
        strstrcpy(attendance_records[record_counts].rfid, rfid);
        attendance_records[record_counts].d = *d;
        attendance_records[record_counts].t = *t;

        record_counts++;

        if(record_counts >= MAX_RECORD_COUNTS - 50 &&
                record_counts < MAX_RECORD_COUNTS)
        {
                //lcddisplaystr(0 * 8, 1, " Database  Full ", INVERTED_MODE);
                lcd2x16displaystr(1,2," Database  Full ");
                delay(5000);
        }

        if(record_counts >= MAX_RECORD_COUNTS)
        {
                fail_safe_record_counts = record_counts;
                record_counts = 0;
        }
                        
        return &attendance_records[record_counts - 1];
}

void main()
{
        AttendanceRecord xdata *ar;
        char xdata command[20];
        int i;
        
        initEAR4022();

	while(1)
	{
                updatescreen();//shows updated date and time

                if(RFID_RECEIVED())
                {
                        if(validrfid(rfid))
                        {
                                BUZZER_ON();

                                PROCESS_START();

                                //lcddisplaystr(1 * 8, 3, "    Valid     ", NORMAL_MODE);
                                lcd2x16displaystr(1,2,"     Valid      " );
                                //if(display_rfid)lcddisplaystr(3 * 8, 4, rfid, NORMAL_MODE);

                                ar = storear(rfid, &today, &now);

                                if(ar == NULL)
                                {
                                        //lcddisplaystr(1 * 8, 4, " Database full", NORMAL_MODE);
                                        lcd2x16displaystr(1,2," Database  full " );
                                }
                                else
                                {
                                        transmitar(ar);
                                }

                                BUZZER_OFF();

                                delay(25000);

                                PROCESS_END();
                        }
                        else
                        {
                                //lcddisplaystr(1 * 8, 4, "Show your card", NORMAL_MODE);
                                lcd2x16displaystr(1,2, " Show your card ");
                        }

                        RFID_PROCESSED()
                }

                //If command received from PC
                if(COMMAND_RECEIVED())
                {
                        COM_SELECT = 0;
                        readcommand(command);
                        COM_SELECT = 1;

                        processcommand(command);

                        CMD_ACKNOWLEDGE = 1;
                }
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -