基于单片机的IC卡门禁系统 - 图文 联系客服

发布时间 : 星期四 文章基于单片机的IC卡门禁系统 - 图文更新完毕开始阅读

able1[4]=table1[5]=0;LED=1;A=x=counter1=0;num=255;break;} } } else {Beep_key();lcd_goto_xy(0,0); init_lcd(); lcd_puts(\error!\delay13(50000);delay13(50000);delay13(50000);init_lcd(); init_lcd();flag++;/*if(flag==3)

shizhong1();*/init_lcd();table1[0]=table1[1]=table1[2]=table1[3]=table1[4]=table1[5]=0;A=x=counter1=0;num=255;LED=1;beep=0;Delay11();beep=1;beep=0;Delay11();beep=1;beep=0;Delay11();beep=1; } } }

void main(void) { init_all(); GG=byte_read(0x2000); init_lcd();num=255; timer0_init();//定时器初始化函数

YE=13;MO=11;DA=2;XQ=6;HH=MM=SS=0;//时钟、日期初始化 counter11=0;counter=0;x=0; while(1) { ctrl(); //display_id( &CardRevBuf[2] ); if(CardRevBuf[2]==0X32) {beep=1;flag1=1;num=10; JDQ=0;LED=1; } else { JDQ=1;LED=0;num=255; } num=keyscan();//反复扫描4*4键盘获得按键参数lcd_goto_xy(0,1);lcd_number(num/10);lcd_number(num);

if(num==15) {num=255; Beep_key();SectorErase(0X2000);byte_write(0X2000, 0); } mimasuo();

35

//

} }

#include \

#define uchar unsigned char #define uint unsigned int

code uchar LCDnumber[]=\

/************************************************** ** 函数名称: dellay

** 入口参数:h(unsigned int型) ** 出口参数:无

** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS ****************************************************/ void dellay(unsigned int h) {

while(h--); //0.01MS }

/************************************************** ** 函数名称: WriteDataLcd

** 入口参数:wdata(unsigned char型) ** 出口参数:无

** 功能描述: 写数据到LCD

****************************************************/ void WriteDataLcd(unsigned char wdata) {

LCD_DATA=wdata; LCD_RS=1; LCD_RW=0; LCD_E=0;

dellay(100); //短暂延时,代替检测忙状态

LCD_E=1; }

/************************************************** ** 函数名称: WriteCommandLcd

** 入口参数:wdata(unsigned char型) ** 出口参数:无

** 功能描述: 写命令到LCD

****************************************************/ void WriteCommandLcd(unsigned char wdata) {

LCD_DATA=wdata;

36

LCD_RS=0; LCD_RW=0; LCD_E=0;

dellay(100); //短暂延时,代替检测忙状态 LCD_E=1; }

/************************************************** ** 函数名称: lcd_init ** 入口参数: ** 出口参数:无

** 功能描述: 完成液晶初始化

****************************************************/ void init_lcd(void) {

LCD_DATA=0;

WriteCommandLcd(0x38); dellay(1000);

WriteCommandLcd(0x38); //显示模式设置 WriteCommandLcd(0x08); //关闭显示 WriteCommandLcd(0x01); //显示清屏

WriteCommandLcd(0x06); //显示光标移动设置 WriteCommandLcd(0x0c); //显示开及光标移动设置 }

/************************************************** ** 函数名称: lcd_goto_xy

** 入口参数:x(unsigned char型),y(unsigned char型) ** 出口参数:无

** 功能描述: 设置光标位置, x是列号,y是行号

****************************************************/ void lcd_goto_xy(unsigned char x,unsigned char y) {

if(y==1) x+=0x40; x+=0x80;

WriteCommandLcd(x); }

void lcd_putc(unsigned char c) // 写字符(传入的参数实际为所需显示字符的地址,即液晶字符产生器中字符的地址) {

LCD_RW = 0; // RW置0,状态为写 LCD_RS = 1; // RS置1,写入数据 WriteDataLcd(c); }

void lcd_puts(unsigned char *s) // 写字符串函数

37

{

while(*s) {

WriteDataLcd(*s); s++; } }

/******************************************************************** ** 函数名称: display_char

** 入口参数:x(unsigned char型),y(unsigned char型),dat(unsigned char型) ** 出口参数:无

** 功能描述: 在具体位置显示单个字符,x是列号,y是行号

*********************************************************************/ void lcd_xy_putc(unsigned char x,unsigned char y,unsigned char dat) {

lcd_goto_xy(x,y); WriteDataLcd(dat); }

/********************************************************************* ** 函数名称: display_string

** 入口参数:x(unsigned char型),y(unsigned char型),s(指针型) ** 出口参数:无

** 功能描述: 在具体位置显示字符串,以/0结束,x是列号,y是行号

**********************************************************************/ void DisplayListChar(unsigned char x,unsigned char y,unsigned char *s) {

lcd_goto_xy(x,y); while(*s) {

WriteDataLcd(*s); s++; } }

void lcd_number(unsigned char a) //变量数字显示 {

LCD_RW = 0; // RW置0,状态为写 LCD_RS = 1; // RS置1,写入数据 WriteDataLcd(LCDnumber[a]); }

#include \

38