




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ponrxo FD.1M1W2/WZpggPD“Me POSfADS PDj&XWG PO.TAOTHFT-P3L11LED-GRffil 2rf 毁“眈J81SI3F2WF2.iae PZ2TA raanno 阳 MITTP3.VTOP3ST1 P3JOTK P3.7/TOF11P3.112 P3213 P33UP3* .IS P3S16pja17P3.7丁 NF7 32尸建 O O-7 .莎EC .T9C&8-ENTER-m于亡.TBPTBTBLED毛羸田I.ET-F311.cTB P- 2 b lrDEL0 = je-t. ; 鸟-Qrt .c .-;twr3 floTX .-TE .
2、Qn .亠 Js-XTMlPQfliWPD.1W1PDFAKZXTA1Z卩MXUQIRETPCI訝咖 pom遊 PDSTW pg.TiTADTIPSBI MLE 日池.倏PZAIHPH口puna f i.in *12 円;a p i_*P1JS IjSPZfifAH PZ.TWIFPHrVHTiP3 1/Tkl口 2/mnF3WTTP3.4HEIpNnfirMJFP1.7/RFSi.hTSC-iKP血Z7PH-lZ3P22S+PZ335F-西P2.7 1G皿11PH117P32 t3P33 i*卩工*15n 1$ 2日 KT-?tb .* *Enter Fl-ease:ill il iL i
3、11 ; 11 r il iI i i i ip. ip iT 1T1-3_.r-4-a-ILX nM Ne*E.nri dinMd*r-r-4d. - .-5TM-.8 ;nTBO .-I-EWTERDEL#include #define uint unsigned int#define uchar unsigned char#define KEY P3 / 键盘输入端口#define No_key 20 / 无按键时的返回值#define lcddata P2 /1602的数据输入端口sbitlcden= P1A2 。sbitlcdrs= P1A0 。sbitlcdrw= P1A1 。sb
4、itlight= P1A3 。sbitlight1= P1A4 。ucha门。/用来统计输入个数的全局变量uchar aa 。 /用来在定时器中计数的全局变量uchar code table= Hello! uchar code table1= OK!uchar code table2=Enter please: uchar code key_table16=1,2,3,10,4,5,6,11,7,8,9,12,0,13,14,15/设定初始密码uchar password=2,0,1,0,9,3uchar save6。/保存输入的数据uchar conflag 。/确认标志uchar loc
5、kflag 。/锁键盘标志uchar startflag 。/开始标志void delay(uint z 。/延时子函数/写指令函数/写数据函数void wright_com(uchar com void wright_data(uchar datevoid init( 。/初始化void display_OK( 。/显示OKvoid delete( 。/删除输入的最后一个数uchar keyscan(/带返回值的键盘扫描程序void confirm( 。/确认密码对不对,把输入的数据与密码逐一对比,完全一样刚正确,void succeed_an(。/输入密码成功时的响应,void fail_
6、an( 。/输入密码失败时响应void lockkey( 。/锁键盘三秒void alarm( 。/发岀警报声void reset( 。/复位函数void display_enter( 。/ 显示输入void main(voiduchar temp 。init(。while(1if(lockflagtemp=keyscan( 。/锁键期间也要进行键盘扫描if(temp!=No_key / 重新记时三秒aa=0。/重新在定时器中计数elsetemp=keyscan( 。/反复扫描输入,等待随时输入if(temp!=No_key /有按键按下才进行下面的操作if(temp=10reset( 。st
7、artflag=1 。 /开始标志置位if(startflagenter_code(temp 。每扫描一次键盘就要进行一次处理,保存输入的数值if(temp=13 /按下确认键盘就要进行密码确认confirm(。/进行确认判断if(conflag / 密码确认为正确succeed_an( 。/密码正确,作出相应的反应elsefail_an(。/密码错误,作相应反应if(temp=14delete(。/作删除操作显示 enter*/void display_enter(uchar numwright_com(0x80 。 for(num=0 。 numwright_data(table2num
8、。OK* *void display_OK(uchar num 。wright_com(0x80 。for(num=0 。 numwright_data(table1num void delete(/*删除最后一个kkkkkkwright_com(0x80+0x40+j 。/ 确定删除对象wright_data( 。/显示空格即为删除save-j=0。/删除后数据清零wright_com(0x80+0x40+j 。/为下次输入数据时写好位置,必须是在最后一个后面 /*对各种变量进行复位 */void reset(uchar num 。display_enter( 。wright_com(0x8
9、0+0x40 。/擦除屏幕上的显示for(num=0 。 numsavenum=0。/对输入的数值进行清零wright_data( 。/显示的是空格wright_com(0x80+0x40 。/下次再输入时可以又从起始位置输入lockflag=0。/各种变量要清零回起始状态conflag=0 。j=0。/*输入密码正确进行响应 */void succeed_an(light=0。/ 灯亮display_OK(。/显示成功delay(1000 。light=1 o / 灯灭/*输入密码错误进行响应*/void fail_an(alarm( 。lockkey( 。/* 发出警报声 */void a
10、larm( /这个以后再扩展它/*锁键盘三秒*void lockkey(Iockflag=1 。/*输入密码并在屏幕上显示星号*/void enter_code(uchar tif(t=0&tif(j=0wright_com(0x80+0x40 。/第一输入时要先写入地址指令,否则无法显示wright_data(* 。elsewright_data(* 。/不是第一个输入则不用再写地址savej+=t。/保存输入的数据/*校对密码以确定是不是正确的*/void confirm(uchar k 。for(k=0。 kif(passwordk!=savek /对数组中的内容进行逐一比较,一旦有数据
11、不对马上退出循环break 。if(k=6/要是条件退出的话说明六个数全对密码conflag=1 。/进行标志密码正确 void init(/*中断服务程序kkkkkkkkvoid timerO( interrupt 1 TH0=(65536-50000/256。TL0=(65536-50000%256 。/ 重装初值if(lockflagaa+ 。light 1=0 。if(aa=60/ 三秒到了aa=0。/清零可以方便下次再使用light1=1。/关闭警报lockflag=0 。 /标志清零解除键锁,方便下次使用/*初始化*uchar num 。/*定时器初始化*/TMOD=1TH0=(6
12、5536-50000/256TL0=(65536-50000%256ET0=1 。EA=1。/开启总中断TR0=1。把定时器关闭/*1602 初始化 */lcdrw=0。/这个必须要置零,否则无法正常显示lcden=0 。wright_com(0x38。 初始化wright_com(0x0c 。打开光标 0x0c不显示光标 0x0e光标不闪,0x0f光标闪wright_com(0x01。 清显示wright_com(0x80 。for(num=0 。 numwright_data(tablenum 。delay(1 。 void wright_com(uchar com lcdrs=0 。lc
13、ddata=com 。delay(1 。lcden=1 。delay(1 。lcden=0 。void wright_data(uchar date lcdrs=1 。lcddata=date 。delay(1 。lcden=1 。delay(1 。lcden=0 。/*延时函数*void delay(uint zuint x,y 。for(x=z 。 x0。 x-for(y=110 。 y0。 y- uchar keyscan(/*4x4矩阵键盘扫描函数*/uchar temp,num=No_key。 /num的初值要为无键盘按下时的返回值/* 描第行 */KEY=0xfe 。temp=KE
14、Y 。temp=temp&OxfO 。/ 读出高四位while(temp!=OxfOdelay(5 。/延时消抖temp=KEY 。temp=temp&OxfO/temp=KEY 。switch(temp /根据这八个电平可以确定是哪个按键按下case Oxee:num=1 。break 。case 0xde:num=2 。break 。case 0xbe:num=3 。break 。case 0x7e:num=10。break 。while(temp!=0xf0 / 等待松手temp=KEY 。temp=temp&0xf0。扫描第二行*KEY=0xfd temp=KEY 。 temp=tem
15、p&0xf0 delay(5 。 temp=KEY 。 temp=temp&0xf0 while(temp!=0xf0 temp=KEYswitch(tempcase 0xed:num=4 break 。case 0xdd:num=5 break 。case 0xbd:num=6 break 。case 0x7d:num=11 break 。while(temp!=0xf0temp=KEY 。temp=temp&0xf0扫描第三行*KEY=0xfb temp=KEY 。 temp=temp&0xf0 。 while(temp!=0xf0 delay(5 。 temp=KEY 。 temp=te
16、mp&0xf0 while(temp!=0xf0 temp=KEY 。 switch(temp case 0xeb:num=7breakcase 0xdb:num=8 break 。case 0xbb:num=9 break 。case 0x7b:num=12 break 。 while(temp!=0xf0 temp=KEY 。 temp=temp&0xf0 扫描第四行*KEY=0xf7 temp=KEY 。 temp=temp&0xf0 。 while(temp!=0xf0 delay(5 。 temp=KEY 。 temp=temp&0xf0 。 while(temp!=0xf0 temp=KEY 。 switch(temp case 0xe7:num=0 break 。case 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年玉器行业高峰论坛合作交流协议书
- 2025年专业越野车租赁与赛事运营管理合作合同
- 2025年度新能源项目股权收购与投资合作协议
- 2025年企业食堂外包服务承包合同:健康美味一站式食堂运营协议
- 2025年互联网企业IT运维人员离职竞业禁止及违约赔偿协议
- 2025年度政府机构网络安全评估与培训聘用合同
- 高效环保办公产品长期租赁服务合同
- 2025年城市轨道交通电动班车车辆采购及租赁合同
- 卷积神经网络下目标检测算法的增量学习进阶与应用洞察
- 印刷体文档中数学公式识别技术的深度剖析与实践探索
- 2024年度新版中华人民共和国传染病防治法课件
- 精度班组安全标准化汇报
- 2024年国家电网招聘之法学类题库附参考答案【精练】
- 2024上海市奉贤区第八批储备人才及定向选调生招募91人高频考题难、易错点模拟试题(共500题)附带答案详解
- 电线电缆产品生产许可证实施细则样本
- 湖南高职单招《综合素质测试》考试题库(含答案)
- 口腔颌面部外伤的处理课件
- 《现代涉外礼仪》课件
- 春风十里不如你:一本书读尽冯唐人生金线年轻时极尽欢喜年长
- UL塑料燃烧测试培训
- 产后骨盆修复培训课件
评论
0/150
提交评论