完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigned int ***it beep=P3^7; uchar code table_d[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uchar code table_w[]={ 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe}; uchar passport[]="11111111"; //密码是11111111 uchar code_in[8]={0}; //输入密码 int times=0,times2=0; uchar temp,num = 0; uchar flag3=2,flag4=2; bit flag1=0,flag2=0; //清除、确认标志位 /*************************矩阵键盘输入函数*********************/ void delay(uint xms) //延迟函数 { uchar a,b; for(a=xms;a>0;a--) for(b=200;b>0;b--); } bit pushkey() //判断是否有键按下 { P0=0xf0; if(P0!=0xf0) return(1); else return(0); } void input() //从键盘上输入指令 { P0=0xfe; temp=P0; temp=temp&0xf0; if(temp!=0xf0) { delay(50); if(temp!=0xf0) { switch(temp) { case 0xe0: num=15; //. break; case 0xd0: num=1; break; case 0xb0: num=4; break; case 0x70: num=7; break; } } } P0=0xfd; temp=P0; temp=temp&0xf0; if(temp!=0xf0) { delay(50); if(temp!=0xf0) { switch(temp) { case 0xe0: num=0; break; case 0xd0: num=2; break; case 0xb0: num=5; break; case 0x70: num=8; break; } } } P0=0xfb; temp=P0; temp=temp&0xf0; if(temp!=0xf0) { delay(50); if(temp!=0xf0) { switch(temp) { case 0xe0: num=14; //= break; case 0xd0: num=3; break; case 0xb0: num=6; break; case 0x70: num=9; break; } } } P0=0xf7; temp=P0; temp=temp&0xf0; if(temp!=0xf0) { delay(50); if(temp!=0xf0) { switch(temp) { case 0xe0: num=10; // / break; case 0xd0: num=11; //* break; case 0xb0: num=12; //- break; case 0x70: num=13; //+ break; } } } delay(1000); } void display1() { if(flag1==0 && flag3 == 2) { if(times>=0) { P1=table_d[code_in[0]]; P2=table_w[0]; delay(5); } if(times>=1) { P1=table_d[code_in[1]]; P2=table_w[1]; delay(5); } if(times>=2) { P1=table_d[code_in[2]]; P2=table_w[2]; delay(5); } if(times>=3) { P1=table_d[code_in[3]]; P2=table_w[3]; delay(5); } if(times>=4) { P1=table_d[code_in[4]]; P2=table_w[4]; delay(5); } if(times>=5) { P1=table_d[code_in[5]]; P2=table_w[5]; delay(5); } if(times>=6) { P1=table_d[code_in[6]]; P2=table_w[6]; delay(5); } if(times>=7) { P1=table_d[code_in[7]]; P2=table_w[7]; delay(5); } } if(flag1==1 && flag3 == 2) { P1=0xff; P2=0xff; flag1 = 0; flag2 = 0; flag3 = 2; flag4 = 2; times = 0; } if(flag3 == 0)// { P1=0x71; //P2=0x00; P2=0xc0; flag4 = 2; } if(flag3 == 1) { P1=0x77; P2=0xc0; flag4 = 2; } } void timer_init(void) //定时器初始化 { TMOD=0x11; TH0=(65536-20000)/256; TL0=(65536-20000)%256; EA=1; ET0=1; TR0=1; } void main() { uchar i,n=0; timer_init(); while(1) { if(pushkey()) { input(); if(num<=9 && times<=7) { code_in[times]=num; times++; } if(num==10) { flag1 = 1; flag2 = 0; for(i=0;i<=7;i++) code_in[i]=0; } if(num==11) { flag1 = 0; flag2 = 1; } flag3 = 2; flag4 = 2; if(flag2==1) { for(i=0;i<=7;i++) { if(code_in[i]+48 != passport[i]) { flag3 = 0; flag4 = 0; times2 = 900; while(times2) { if(times2<=200) beep = ~beep; delay(1); if(times2>200 && times<300) {} if(times2>300 && times<400) beep = ~beep; delay(1); if(times2>400 && times<700) {} if(times2>700 && times<900) beep = ~beep; delay(1); times2--; } beep = 1; break; } else n++; } if(n == 8) { flag3 = 1; times2 = 900; while(times2) { beep = ~beep; delay(1); times2--; } beep = 1; } } } } } void T0_timer() interrupt 1 //中断函数里处理频率,并且显示出来 { TH0=(65536-20000)/256; TL0=(65536-20000)%256; display1(); } 希望大神来解释一些程序,重点是flag1,flag2,flag3,flag4中有关的程序,还有最后几段程序,谢谢 |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
182 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1207 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
493 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之开发板测试
420 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络socket程序编程
957 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11743 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 10:41 , Processed in 0.754785 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号