数字密码锁单片机课程设计(编辑修改稿)内容摘要:
1,n2=1,lock,minu,sign,tov,state,n,sound,point=1, showlist[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x71,0xff,0x21,0x85,0xe1,0x7f,0x7d}。 uint ms。 /*主函数 */ void main() { EA=1。 //开总中断 ET0=1。 //开内部中断 0 ET1=0。 //关内部中断 1 TMOD=0x11。 TH0=0xf9。 //计数器 0 高八位 TL0=0xdb。 //计数器 0 低八位 TR0=1。 //计数器 0 开始计数 I2CCON=0xe8。 sound=0。 tov=1。 //超时计数置为 1 P1=0x00。 //P1 全置为 0 作为输入 if(sign!=1) p_new1()。 //调用首次使用判 断函数 湖南大学电气与信息工程学院 第 16 页 p_base()。 //调用基础解锁函数 } /*基础解锁函数 */ void p_base() { n=0。 //密码数组置首位 state=fanin。 //指示管置为输入状态 fanin while(1) //无限循环 { if(n==0) state=fanin。 else state=n。 bot=p_scan()。 if(n!=0amp。 amp。 tov==0) //判断密码数组是不是在首位 ,超时计数是否为 0 { p_state(tover)。 //调用指示管状态闪烁函数 ,置为用超时状态 tover main()。 //调用主函数 } switch(bot) { case vain: break。 case enter: key1[n]=end。 //把密码后一位置为 end if(p_pare(key1,save)) //判断输入的密码是否与原密码相同 { p_state(succed)。 //调用指示管状态闪烁函数 ,置为成功 状态 succed lock=0。 //锁定键盘计数置为 0 point=1。 //多次密码输入错误计数 state=opened。 //指示管置为输入状态 opened while(1) { bot=p_scan()。 switch(bot) { case off: main()。 break。 case back: while(1) { bot=p_scan()。 湖南大学电气与信息工程学院 第 17 页 switch(bot) { case off: main()。 break。 case enter: main()。 break。 } } } } } else { p_state(error)。 //调用指示管状态闪烁函数 ,置为用错误状态 error p_record()。 //调用错误计数函数 main()。 //调用主函数 } break。 case cancel: main()。 break。 case back: if(n!=0) //判断当前密码是否为首位 key1[n]=end。 //当前密码位置 end,密码退位 break。 case revise: p_revise()。 break。 case trevise: p_trevise()。 break。 default: if(n+1==9) { p_state(error)。 main()。 } key1[n++]=bot。 } } } 湖南大学电气与信息工程学院 第 18 页 /*密码修改模块 */ void p_revise() { ET0=1。 ET1=0。 n=0。 p_state(fanin)。 state=fanin。 while(1) { if(n==0) state=fanin。 else state=n。 bot=p_scan()。 if(tov==0) { p_state(tover)。 main()。 } switch(bot) { case vain: break。 case enter: key1[n]=end。 if(p_pare(key1,save)) { lock=0。 point=1。 p_state(succed)。 p_new1()。 } else { p_state(error)。 p_record()。 main()。 } break。 case cancel: 湖南大学电气与信息工程学院 第 19 页 main()。 break。 case back: if(n!=0) key1[n]=end。 break。 case revise: p_revise()。 case off: break。 case trevise: p_trevise()。 break。 default: if(n+1==9) { p_state(error)。 main()。 } key1[n++]=bot。 } } } /*首次使用设置密码 */ void p_new1() { n=0。 state=new1。 while(1) { if(n==0) state=new1。 else state=n。 if((tov==0amp。 amp。 sign==1)||(n!=0amp。 amp。 tov==0)) { p_state(tover)。 main()。 } bot=p_scan()。 湖南大学电气与信息工程学院 第 20 页 switch(bot) { case vain: break。 case enter: key1[n]=end。 p_new2()。 break。 case cancel: main()。 break。 case back: if(n!=0) key1[n]=end。 break。 case revise: if(sign==1) p_revise()。 break。 case trevise: p_trevise()。 break。 default: if(n+1==9)。数字密码锁单片机课程设计(编辑修改稿)
相关推荐
电路的输入 ——输出特 性曲线如图 24(b)所示。 信号电压 iV 由负值变为正值, 删除部分 绵阳师范学院 2020届本科毕业设计(论文) 删除部分 管截止,三极管集电极通过上拉电阻 R4,形成高电平。 这样通过三极管的反复导通、截止,在过零检测端口 D点形成 100Hz脉冲波形 (如图 28),其中, 删除部分 电压输入电路如图 29 所示。 该电路是以 5V 作为基本量程,共设为 5
astic modelling of heterogeneous porous media – applications to reservoir rocks[J]. Transport in Porous Media, 2020, 65(3): 443467 VII [12]XU Y S, LIU Y, HUANG G X. Using Digital Imaging to
5 24 当符号位 S=0时,直接将二进制位转换为十进制数;当 S=1时,先将补码变换为原码,在计算十进制值。 部分温度值对应表如 下 表所示 温度(℃) 二进制数 十六进制数 +125 0000 0111 1101 0000 07D0H + 0000 0001 1001 0001 0191H + 0000 0000 0000 1000 0008H 0 0000 0000 0000 0000
关性把具有相同特性的像素点归为一类,而具有不同像素点特征的划为异类,这里的像素点特征我们可以指像素点的灰度值。 而具有相同特征的像素点我们可以认为是灰度值大小相差不大图像的像素点。 在此,我们可以使用 K 均值算法来聚类分析。 [6] K 均值算法的具体步骤如下: 已知有 20 个样本,每个样本有 2 个特征,数据分布如 图 : 样本序列号 X1 X2 X3 X4 X5 X6 X7 X8 X9
中三乘三的区域表示像素邻域里的灰度级。 想要得到 5z 点的一阶偏导数可以使 用 Roberts 梯度算子(如图 32): 安徽理工大学毕业设计 8 )( 59 zzGx (33) 和 )( 68 zzGy (34) 1 0 0 1 0 1 1 0 图 32 Roberts 算子模板 Sobel 算子 Roberts 算子非常的通俗易懂,但可惜的是它的效果并不是很好
在扬声器 或耳机上输出语音。 图 23系统原理框 图 拾音器 放大器 1 带通滤波器 ADC 微处理器 DAC 带通滤波器 放大器 2 耳机 6 系统硬件设计 7 第 3 章 系统硬件设计 89S52单片机有 44个引脚 PLCC和 TQFP方形封装形式, 40个引脚的双列直插式封装形式,最常用的 40个引脚封装形式及其配置如图 31所示,各个引脚功能说明如图 31: 图 31 单片机 引脚介绍