㈠ 电子密码锁设计基于51单片机
[1]单片机多功能密码锁系统/防火防盗系统设计
实现功能:
1、 密码锁功能/可以修改密码, 下次开机后新密码仍然有效
2、 支持一键恢复初始密码
3、 可添加防火防盗报警功能
4、 可进行功能定制
☆已作出的实物优酷视频演示地址:
http://v.youku.com/v_show/id_XMTUwMjg3MjQyOA==.html
单片机蓝牙密码锁系统
实现功能:
1、 密码锁功能/可以修改密码, 下次开机后新密码仍然有效
2、 支持一键恢复初始密码
3、 手机蓝牙可以实现输入密码进行开锁
4、 可进行功能定制
☆已作出的实物优酷视频演示地址:
http://v.youku.com/v_show/id_XMjgxNjQ0MjA4MA==.htm
㈡ 单片机电子密码锁设计,采用4×4键盘实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的密码
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define KEY P3 //键盘输入端口
#define No_key 20 //无按键时的返回值
#define lcddata P2 //1602的数据输入端口
sbit lcden= P1^2;
sbit lcdrs= P1^0;
sbit lcdrw= P1^1;
sbit light= P1^3;
sbit light1= P1^4;
uchar j ; //用来统计输入 个数的全局变量
uchar aa; //用来在定时器中计数的 全局变量
uchar code table[]= " Hello!";
uchar code table1[]=" OK! " ;
uchar code table2[]="Enter please:" ;
uchar code key_table[16] =
{
1,2,3,10,
4,5,6,11,
7,8,9,12,
0,13,14,15
};
uchar password[]={2,0,1,0,9,3} ; //设定初始密码
uchar save[6]; //保存输入的数据
uchar conflag ; //确认标志
uchar lockflag; //锁键盘标志
uchar startflag; //开始标志
void delay(uint z); //延时子函数
void wright_com(uchar com); //写指令函数
void wright_data(uchar date) ; //写数据函数
void init(); //初始化
void display_OK(); // 显示OK
void delete(); //删除输入的最后一个数
uchar keyscan() ; //带返回值的键盘扫描程序
void enter_code(uchar t); //输入密码函数,把输入的数据存入数组中并在屏幕上显示相应的东西,
void confirm(); //确认密码对不对,把输入的数据与密码逐一对比,完全一样刚正确,
void succeed_an(); //输入密码成功时的 响应,
void fail_an(); //输入密码 失败时 响应
void lockkey(); //锁键盘三秒
void alarm(); //发出警报声
void reset(); //复位函数
void display_enter(); //显示输入
void main(void)
{
uchar temp;
init();
while(1)
{
if(lockflag)
{
temp=keyscan(); // 锁键期间也要进行键盘扫描
if(temp!=No_key) //重新记时三秒
{
aa=0; //重新在定时器中计数
}
}
else
{
temp=keyscan(); //反复扫描输入,等待随时输入
if(temp!=No_key) //有按键按下才进行下面的操作
{
if(temp==10)
{
reset();
startflag=1; //开始标志置位
}
if(startflag)
{
enter_code(temp); //每扫描一次键盘就要进行一次处理,保存输入的数值
if(temp==13) //按下确认键盘就要进行密码确认
{
confirm(); //进行确认判断
if(conflag) //密码确认为正确
{
succeed_an(); //密码正确,作出相应的反应
}
else
{
fail_an(); //密码错误,作相应反应
}
}
if(temp==14)
{
delete(); //作删除操作
}
}
}
}
}
}
/****** 显示enter********/
void display_enter()
{
uchar num;
wright_com(0x80);
for(num=0;num<13;num++)
{
wright_data(table2[num]);
}
}
/****** 显示OK********/
void display_OK()
{
uchar num;
wright_com(0x80);
for(num=0;num<13;num++)
{
wright_data(table1[num]);
}
}
/****** 删除最后一个********/
void delete()
{
wright_com(0x80+0x40+j); //确定删除对象
wright_data(' '); //显示空格即为删除
save[--j]=0; //删除后数据清零
wright_com(0x80+0x40+j); //为下次输入数据时写好位置,必须是在最后一个后面
}
/****** 对各种变量进行复位********/
void reset()
{
uchar num;
display_enter();
wright_com(0x80+0x40); //擦除屏幕上的显示
for(num=0;num<6;num++)
{
save[num]=0; //对输入的数值进行清零
wright_data(' '); //显示的是空格
}
wright_com(0x80+0x40); //下次再输入时可以又从起始位置输入
lockflag=0; //各种变量要清零回起始状态
conflag=0;
j=0;
}
/****** 输入密码正确进行响应********/
void succeed_an()
{
light=0; //灯亮
display_OK(); //显示成功
delay(1000);
light=1; //灯灭
}
/****** 输入密码错误进行响应********/
void fail_an()
{
alarm();
lockkey();
}
/****** 发出警报声**********/
void alarm() //这个以后再扩展它
{
}
/******锁键盘三秒************/
void lockkey()
{
lockflag=1;
}
/******输入密码并在屏幕上显示星号******/
void enter_code(uchar t)
{
if(t>=0&&t<10)
{
if(j==0)
{
wright_com(0x80+0x40) ; //第一输入时要先写入地址指令,否则无法显示
wright_data('*') ;
}
else
{
wright_data('*') ;//不是第一个输入则不用再写地址
}
save[j++]=t; //保存输入的数据
}
}
/******校对密码以确定是不是正确的**********/
void confirm()
{
uchar k;
for(k=0;k<6;k++)
{
if(password[k]!=save[k]) //对数组中的内容进行逐一比较,一旦有数据不对马上退出循环
{
break;
}
}
if(k==6) //要是条件退出的话说明六个数全对密码
{
conflag=1; // 进行标志密码正确
}
}
/******中断服务程序**********/
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //重装初值
if(lockflag)
{
aa++;
light1=0;
if(aa>=60) //三秒到了
{
aa=0; //清零可以方便下次再使用
light1=1; //关闭警报
lockflag=0; //标志清零解除键锁,方便下次使用
}
}
}
/******初始化***********/
void init()
{
uchar num;
/*****定时器初始化****/
TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=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;num<9;num++)
{
wright_data(table[num]);
delay(1);
}
}
/******1602写入指令************/
void wright_com(uchar com)
{
lcdrs=0;
lcddata=com;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
/******1602写入数据***********/
void wright_data(uchar date)
{
lcdrs=1;
lcddata=date;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
/******延时函数************/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--) ;
}
/**********4x4矩阵键盘扫描函数*********/
uchar keyscan()
{
uchar temp,num=No_key; //num的初值要为无键盘按下时的返回值
/*********扫描第一行****************/
KEY=0xfe;
temp=KEY;
temp=temp&0xf0; //读出高四位
while(temp!=0xf0)
{
delay(5); //延时消抖
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0) //确认确实有按键按下
{
temp=KEY;
switch(temp) //根据这八个电平可以确定是哪个按键按下
{
case 0xee: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=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=KEY;
switch(temp)
{
case 0xed:num=4;
break;
case 0xdd:num=5;
break;
case 0xbd:num=6;
break;
case 0x7d:num=11;
break;
}
while(temp!=0xf0)
{
temp=KEY;
temp=temp&0xf0;
}
}
}
/*********扫描第三行****************/
KEY=0xfb;
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=KEY;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=KEY;
switch(temp)
{
case 0xeb:num=7;
break;
case 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 0xd7:num=13;
break;
case 0xb7:num=14;
break;
case 0x77:num=15;
break;
}
while(temp!=0xf0)
{
temp=KEY;
temp=temp&0xf0;
}
}
}
return num;
}
㈢ 电子信息工程毕业论文
823. 110kv变电站电气二次部分设计
824. 基于AT89C51的电话远程控制系统
825. 数字电子秤的设计
826. 基于单片机的数字电子钟设计
827. 湿度传感器在农作物生长环境参数监测仪中的应用
828. 基于单片机的数字频率计的设计
829. 简易数控直流稳压源的设计
830. 基于凌阳单片机的语音实时采集系统设计
831. 简单语音识别算法研究
832. 基于数字温度计的多点温度检测系统
833. 家用可燃气体报警器的设计
834. 基于61单片机的语音识别系统设计
835. 红外遥控密码锁的设计
836. 简易无线对讲机电路设计
837. 基于单片机的数字温度计的设计
838. 甲醛气体浓度检测与报警电路的设计
839. 基于单片机的水温控制系统设计
840. 设施环境中二氧化碳检测电路设计
841. 基于单片机的音乐合成器设计
842. 设施环境中湿度检测电路设计
843. 基于单片机的家用智能总线式开关设计
844. 篮球赛计时记分器
845. 汽车倒车防撞报警器的设计
846. 设施环境中温度测量电路设计
847. 等脉冲频率调制的原理与应用
848. 基于单片机的电加热炉温
849. 病房呼叫系统
850. 单片机打铃系统设计
851. 智能散热器控制器的设计
852. 电子体温计的设计
853. 基于FPGA音频信号处理系统的设计
854. 基于MCS-51数字温度表的设计
855. 基于SPCE061A的语音控制小车设计
856. 基于VHDL的智能交通控制系统
857. 基于VHDL语言的数字密码锁控制电路的设计
858. 基于单片机的超声波测距系统的设计
859. 基于单片机的八路抢答器设计
860. 基于单片机的安全报警器
861. 基于SPCE061A的易燃易爆气体监测仪设计
862. 基于CPLD的LCD显示设计
863. 基于单片机的电话远程控制家用电器系统设计
864. 基于单片机的交通信号灯控制电路设计
865. 单片机的数字温度计设计
866. 基于单片机的可编程多功能电子定时器
867. 基于单片机的空调温度控制器设计
868. 数字人体心率检测仪的设计
869. 基于单片机的室内一氧化碳监测及报警系统的研究
870. 基于单片机的数控稳压电源的设计
871. 原油含水率检测电路设计
872. 基于AVR单片机幅度可调的DDS信号发生器
873. 四路数字抢答器设计
874.单色显示屏的设计
875.基于CPLD直流电机控制系统的设计
876.基于DDS的频率特性测试仪设计
877.基于EDA的计算器的设计
878.基于EDA技术的数字电子钟设计
879.基于EDA技术的智力竞赛抢答器的设计
880.基于FPGA的18路智力竞赛电子抢答器设计
881.基于USB接口的数据采集系统设计与实现
882.基于单片机的简易智能小车的设计
883.基于单片机的脉象信号采集系统设计
884.一种斩控式交流电子调压器设计
885.通信用开关电源的设计
886.鸡舍灯光控制器
887.三相电机的保护控制系统的分析与研究
888.信号高精度测频方法设计
889.高精度电容电感测量系统设计
890.虚拟信号发生器设计和远程实现
891.脉冲调宽型伺服放大器的设计
892.超声波测距语音提示系统的研究
893.电表智能管理装置的设计
894.智能物业管理器的设计
895.基于虚拟仪器技术的数字滤波及频率测试
896.基于无线传输技术的室温控制系统设计----温度控制器软件设计
897.基于计算机视觉的构件表面缺陷特征提取
898.基于无线传输技术的室温控制系统设计----温度控制器硬件设计
899.基于微控制器的电容器储能放电系统设计
890.基于单片机的语音提示测温系统的研究
891.基于单片机的数字钟设计
892.基于单片机的数字电压表的设计
893.基于单片机的交流调功器设计
894.基于SPI通信方式的多道信号采集器设计
895.基于LabVIEW的虚拟频谱分析仪的设计
896.功率因数校正器的设计
897.全自动电压表的设计
898.基于Labview的虚拟数字钟设计
899.温度箱模拟控制系统
900.水塔智能水位控制系统
901.基于单片机的全自动洗衣机
902.数字流量计
903.简易无线电遥控系统
904.基于单片机的步进电机的控制
905.基于AT89S51单片机的数字电子时钟
906.基于51单片机的LED点阵显示屏系统的设计与实现
907.超声波测距仪的设计
908.简易数字电压表的设计
909.虚拟信号发生器设计及远程实现
910.智能物业管理器的设计
911.信号高精度测频方法设计
912.三相电机的保护控制系统的分析与研究
913.温度监控系统设计
914.数字式温度计的设计
915.全自动节水灌溉系统--硬件部分
916.电子时钟的设计
917.基于单片机的电阻炉温度控制系统
918.基于GSM网络的无线LED广告牌系统的设计
919.基于单片机的数字函数发生器的设计
920.基于AT89S52的无线自动车库门
921.基于单片机的自动门控系统设计
922.基于单片机的遥控灯光系统
923.基于MultiSim 8的高频电路仿真技术
924.数字式脉搏计
925.实用信号源的设计
926.无线多路遥控发射与接收
927.TL494开关电源的设计
928.数字频率计设计
929.基于单片机的电梯控制系统
930.基于单片机的产品自动计数器
931.水温控制系统的设计
932.智能音乐闹钟设计
933.防盗门密码锁的设计
934.多功能时钟打点系统设计
935.多功能倒计时显示牌
936.程控滤波器的设计
937.多功能程控电源设计
938.电子秤的设计
939.电红外线感应自动门的设计
940.单片机控制的语音录放系统的设计
941.超声波测距仪
942.MP3的设计与实现
943.±5V直流稳压电源的设计
944.用单片机进行温度的控制及LCD显示系统的设计
945.双音报警器
946.可编程动态广告牌控制系统设计
947.基于单片机的遥控灯光系统
·单片机交通灯控制系统设计--带仿真的
·压力容器液位检测装置
·电子密码锁设计
·多路智能报警器设计
·病房无线呼叫系统
·太阳能热水器中央控制器的设计与实现
·汽车安全气囊应用研究
·煤气报警器的设计
·基于AT89S51单片机的出租车计价器
·红外防盗报警器的设计
·红外声控报警系统的设计
·智能家居的发展
·超声波倒车雷达设计
·直流开关变送器的研究
·基于AT89S51单片机的数字电子钟设计
·电子时钟设计 课程设计
·基于凌阳16位单片机的智能录音电话
·基于单片机的照明控制系统
·电子日历钟
·电力监控系统
·电梯控制系统的设计
·电压型三相交流变频调速系统设计
·多点温度采集系统与控制器设计
·多功能秒表系统设计
·多路开关直流稳压电源
·公交车自动报站系统的硬件设计原理
·红外线感应灯控制系统
·交通灯定时控制系统
·快速煤质监测仪的I/O单元设计
·锂电池智能充电控制器的设计
·六相异步电机缺相运行性能分析
·煤矿井下安全监控系统的设计
·数控可调稳压电源
·音乐控制系统的设计
·面向移动机器人的远程PDA控制器通信系统设计
·面向移动机器人的远程PDA控制器主控电路设计
·开关电源的设计研究
·220KV变电站电气部分设计
·直流电机PWM控制系统
·医用数显测温仪设计
·电力负荷预测技术
·串联电容补偿装置的设计研究
·充电电池容量测试电路设计
·间冷式电冰箱电气控制实验模拟台
·基于51单片机数控直流电源的设计
·基于单片机实现红外测温仪设计
·基于单片机的数字万用表设计
·基于单片机的直流同步电机调速系统研究
·基于单片机的电子秤毕业设计论文
·红外感应水龙头
·路灯的节能控制
·多功能智能信号发生器
·锅炉液位控制系统
·电气传动控制系统
·电动自行车调速系统的设计
·脉冲电镀电源的设计
·基于MSP430单片机的多路数据采集系统的设计
·水塔水位自动控制装置
·印染丝光过程的浓烧碱的在线控制
·基于单片机的自动化点焊控制系统
·100kW微机控制单晶硅加热电源设计
·防火卷帘门智能控制装置设计
·基于单片机温湿度控制系统
·出租车计费系统设计
·基于PID控制算法的恒温控制系统
·基于CAN总线的教学模拟汽车模型的设计
·基于单片机的温度测量系统设计
·智能化住宅中的防盗防火报警系统设计
·火灾自动监控报警系统设计
·旅客列车自动报站多媒体系统
·锂电池智能充电器设计
·医疗呼叫系统设计
·基于单片机的饮水机温度控制系统设计
·基于脉宽调制技术的D类音频放大器
·双技术玻璃破碎探测器
其中这些有开题报告
1. 用单片机进行温度的控制及LCD显示系统的设计
2. 基于MultiSim 8的高频电路仿真技术
3. 简易数字电压表的设计
4. 虚拟信号发生器设计及远程实现
5. 智能物业管理器的设计
6. 信号高精度测频方法设计
7. 三相电机的保护控制系统的分析与研究
8. 温度监控系统设计
9. 数字式温度计的设计
10. 全自动节水灌溉系统--硬件部分
11. 电子时钟的设计
12. 全自动电压表的设计
13. 脉冲调宽型伺服放大器的设计
14. 基于虚拟仪器技术的数字滤波及频率测试
15. 基于无线传输技术的室温控制系统设计——温度控制器硬件设计
16. 温度箱模拟控制系统
17. 基于无线传输技术的室温控制系统设计——温度控制器软件设计
18. 基于微控制器的电容器储能放电系统设计
19. 基于机器视觉的构件表面缺陷特征提取
20. 基于单片机的语音提示测温系统的研究
21. 基于单片机的步进电机的控制
22. 单片机的数字钟设计
23. 基于单片机的数字电压表的设计
24. 基于单片机的交流调功器设计
25. 基于SPI通信方式的多通道信号采集器设计
26. 基于LabVIEW虚拟频谱分析仪的设计
27. 功率因数校正器的设计
28. 高精度电容电感测量系统设计
29. 电表智能管理装置的设计
30. 基于Labview的虚拟数字钟设计
31. 超声波测距语音提示系统的研究
32. 斩控式交流电子调压器设计
33. 基于单片机的脉象信号采集系统设计
34. 基于单片机的简易智能小车设计
35. 基于FPGA的18路智力竞赛电子抢答器设计
36. 基于EDA技术的智力竞赛抢答器的设计
37. 基于EDA技术的数字电子钟设计
38. 基于EDA的计算器的设计
39. 基于DDS的频率特性测试仪设计
40. 基于CPLD直流电机控制系统的设计
41. 单色显示屏的设计
42. 扩音电话机的设计
43. 基于单片机的低频信号发生器设计
44. 35KV变电所及配电线路的设计
45. 10kV变电所及低压配电系统的设计
46. 6Kv变电所及低压配电系统的设计
47. 多功能充电器的硬件开发
48. 镍镉电池智能充电器的设计
49. 基于MCS-51单片机的变色灯控制系统设计与实现
50. 智能住宅的功能设计与实现原理研究
51. 用IC卡实现门禁管理系统
52. 变电站综合自动化系统研究
53. 单片机步进电机转速控制器的设计
54. 无刷直流电机数字控制系统的研究与设计
55. 液位控制系统研究与设计
56. 智能红外遥控暖风机设计
57. 基于单片机的多点无线温度监控系统
58. 蔬菜公司恒温库微机监控系统
59. 数字触发提升机控制系统
60. 仓储用多点温湿度测量系统
61. 矿井提升机装置的设计
62. 中频电源的设计
63. 数字PWM直流调速系统的设计
64. 基于ARM的嵌入式温度控制系统的设计
65. 锅炉控制系统的研究与设计
66. 动力电池充电系统设计
67. 多电量采集系统的设计与实现
68. PWM及单片机在按摩机中的应用
69. IC卡预付费煤气表的设计
70. 基于单片机的电子音乐门铃的设计
71. 新型出租车计价器控制电路的设计
72. 单片机太阳能热水器测控仪的设计
73. LED点阵显示屏-软件设计
74. 双容液位串级控制系统的设计与研究
75. 三电平Buck直流变换器主电路的研究
76. 基于PROTEUS软件的实验板仿真
77. 基于16位单片机的串口数据采集
78. 电机学课程CAI课件开发
79. 单片机教学实验板——软件设计
80. 63A三极交流接触器设计
81. 总线式智能PID控制仪
82. 自动售报机的设计
83. 断路器的设计
84. 基于MATLAB的水轮发电机调速系统仿真
85. 数控缠绕机树脂含量自控系统的设计
86. 软胶囊的单片机温度控制(硬件设计)
87. 空调温度控制单元的设计
88. 基于人工神经网络对谐波鉴幅
89. 基于单片机的鱼用投饵机自动控制系统的设计
90. 锅炉汽包水位控制系统
91. 基于单片机的玻璃管加热控制系统设计
92. 基于AT89C51单片机的号音自动播放器设计
93. 基于单片机的普通铣床数控化设计
94. 基于AT89C51单片机的电源切换控制器的设计
95. 基于51单片机的液晶显示器设计
96. 超声波测距仪的设计及其在倒车技术上的应用
97. 智能多路数据采集系统设计
98. 公交车报站系统的设计
99. 基于RS485总线的远程双向数据通信系统的设计
100. 宾馆客房环境检测系统
101. 智能充电器的设计与制作
102. 基于单片机的户式中央空调器温度测控系统设计
103. 基于单片机的乳粉包装称重控制系统设计
104. 基于单片机的定量物料自动配比系统
105. 基于单片机的液位检测
106. 基于单片机的水位控制系统设计
107. 基于VDMOS调速实验系统主电路模板的设计与开发
108. 基于IGBT-IPM的调速实验系统驱动模板的设计与开发
109. HEF4752为核心的交流调速系统控制电路模板的设计与开发
110. 基于87C196MC交流调速实验系统软件的设计与开发
111. 87C196MC单片机最小系统单板电路模板的设计与开发
112. 电子密码锁控制电路设计
113. 基于单片机的数字式温度计设计
114. 列车测速报警系统
115. 基于单片机的步进电机控制系统
116. 语音控制小汽车控制系统设计
117. 智能型客车超载检测系统的设计
118. 直流机组电动机设计
119. 单片机控制交通灯设计
120. 中型电弧炉单片机控制系统设计
121. 中频淬火电气控制系统设计
122. 新型洗浴器设计
123. 新型电磁开水炉设计
124. 基于电流型逆变器的中频冶炼电气设计
125. 6KW电磁采暖炉电气设计
126. 基于CD4017电平显示器
127. 多路智力抢答器设计
128. 智能型充电器的电源和显示的设计
129. 基于单片机的温度测量系统的设计
130. 龙门刨床的可逆直流调速系统的设计
131. 音频信号分析仪
132. 基于单片机的机械通风控制器设计
133. 论电气设计中低压交流接触器的使用
134. 论人工智能的现状与发展方向
135. 浅论配电系统的保护与选择
136. 浅论扬州帝一电器的供电系统
137. 浅谈光纤光缆和通信电缆
138. 浅谈数据通信及其应用前景
139. 浅谈塑料光纤传光原理
140. 浅析数字信号的载波传输
141. 浅析通信原理中的增量控制
142. 太阳能热水器水温水位测控仪分析
143. 电气设备的漏电保护及接地
144. 论“人工智能”中的知识获取技术
145. 论PLC应用及使用中应注意的问题
146. 论传感器使用中的抗干扰技术
147. 论电测技术中的抗干扰问题
148. 论高频电路的频谱线性搬移
149. 论高频反馈控制电路
150. 论工厂导线和电缆截面的选择
151. 论工厂供电系统的运行及管理
152. 论供电系统的防雷、接地保护及电气安全
153. 论交流变频调速系统
154. 论人工智能中的知识表示技术
155. 论双闭环无静差调速系统
156. 论特殊应用类型的传感器
157. 论无损探伤的特点
158. 论在线检测
159. 论专家系统
160. 论自动测试系统设计的几个问题
161. 浅析时分复用的基本原理
162. 试论配电系统设计方案的比较
163. 试论特殊条件下交流接触器的选用
164. 自动选台立体声调频收音机
165. 基于立体声调频收音机的研究
166. 基于环绕立体声转接器的设计
167. 基于红外线报警系统的研究
168. 多种变化彩灯
169. 单片机音乐演奏控制器设计
170. 单目视觉车道偏离报警系统
171. 基于单片机的波形发生器设计
172. 智能毫伏表的设计
173. 微机型高压电网继电保护系统的设计
174. 基于单片机mega16L的煤气报警器的设计
175. 串行显示的步进电机单片机控制系统
176. 编码发射与接收报警系统设计:看护机
177. 编码发射接收报警设计:爱情鸟
178. 红外快速检测人体温度装置的设计与研制
179. 用单片机控制的多功能门铃
180. 电气控制线路的设计原则
181. 电气设备的选择与校验
182. 浅论10KV供电系统的继电保护的设计方案
183. 智能编码电控锁设计
184. 自行车里程,速度计的设计
185. 等精度频率计的设计
186. 基于嵌入式系统的原油含水分析仪的硬件与人机界面设计
187. 数字电子钟的设计与制作
188. 温度报警器的电路设计与制作
189. 数字电子钟的电路设计
190. 鸡舍电子智能补光器的设计
191. 电子密码锁的电路设计与制作
192. 单片机控制电梯系统的设计
193. 常用电器维修方法综述
194. 控制式智能计热表的设计
195. 无线射频识别系统发射接收硬件电路的设计
196. 基于单片机PIC16F877的环境监测系统的设计
197. 基于ADE7758的电能监测系统的设计
198. 基于单片机的水温控制系统
199. 基于单片机的鸡雏恒温孵化器的设计
200. 自动存包柜的设计
201. 空调器微电脑控制系统
202. 全自动洗衣机控制器
203. 小功率不间断电源(UPS)中变换器的原理与设计
204. 智能温度巡检仪的研制
205. 保险箱遥控密码锁
206. 基于蓝牙技术的心电动态监护系统的研究
207. 低成本智能住宅监控系统的设计
208. 大型发电厂的继电保护配置
209. 直流操作电源监控系统的研究
210. 悬挂运动控制系统
211. 气体泄漏超声检测系统的设计
212. FC-TCR型无功补偿装置控制器的设计
213. 150MHz频段窄带调频无线接收机
214. 数字显示式电子体温计
215. 基于单片机的病床呼叫控制系统
216. 基于单片微型计算机的多路室内火灾报警器
217. 基于单片微型计算机的语音播出的作息时间控制器
218. 交通信号灯控制电路的设计
219. 单片机控制的全自动洗衣机毕业设计论文
220. 单片机脉搏测量仪
221. 红外报警器设计与实现
㈣ 单片机课程设计—简易密码锁
如果我们要算for(b=0;b<50000;b++);晶振为12M,先要设置一下项目的所用的晶振频率。
㈤ 51单片机关于密码锁的毕业设计,论文
程序设计内容
(1). 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。
(2). 密码的输入问题:由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。
(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。
C语言源程序
#includeunsignedcharcodeps[]={1,2,3,4,5};
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsignedcharpslen=9;unsignedchartemplen;
unsignedchardigit;unsignedcharfuncount;
unsignedchardigitcount;
unsignedcharpsbuf[9];
bitcmpflag;
bithibitflag;
biterrorflag;
bitrightflag;
unsignedintsecond3;
unsignedintaa;
unsignedintbb;
bitalarmflag;
bitexchangeflag;
unsignedintcc;
unsignedintdd;
bitokflag;
unsignedcharoka;
unsignedcharokb;
voidmain(void)
{
unsignedchari,j;
P2=dispcode[digitcount];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%6;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(cmpflag==0)
{
if(P3_6==0)//functionkey
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_6==0)
{
if(hibitflag==0)
{
funcount++;
if(funcount==pslen+2)
{
funcount=0;
cmpflag=1;
}
P1=dispcode[funcount];
}
else
{
second3=0;
}
while(P3_6==0);
}
}
if(P3_7==0)//digitkey
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_7==0)
{
if(hibitflag==0)
{
digitcount++;
if(digitcount==10)
{
digitcount=0;
}
P2=dispcode[digitcount];
if(funcount==1)
{
pslen=digitcount;
templen=pslen;
}
elseif(funcount>1)
{
psbuf[funcount-2]=digitcount;
}
}
else
{
second3=0;
}
while(P3_7==0);
}
}
}
else
{
cmpflag=0;
for(i=0;i
{
if(ps[i]!=psbuf[i])
{
hibitflag=1;
i=pslen;
errorflag=1;
rightflag=0;
cmpflag=0;
second3=0;
gotoa;
}
}
cc=0;
errorflag=0;
rightflag=1;
hibitflag=0;
a: cmpflag=0;
}
}
}
voidt0(void)
interrupt1using0{ TH0=(65536-500)/256;
TL0=(65536-500)%6;
if((errorflag==1)&&(rightflag==0))
{
bb++;
if(bb==800)
{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
P0_0=~P0_0;
}
aa++;
if(aa==800)
{
aa=0;
P0_1=~P0_1;
}
second3++;
if(second3==6400)
{
second3=0;
hibitflag=0;
errorflag=0;
rightflag=0;
cmpflag=0;
P0_1=1;
alarmflag=0;
bb=0;
aa=0;
}
}
if((errorflag==0)&&(rightflag==1))
{
P0_1=0;
cc++;
if(cc<1000)
{
okflag=1;
}
elseif(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
hibitflag=0;
cmpflag=0;
P0_1=1;
cc=0;
oka=0;
okb=0;
okflag=0;
P0_0=1;
}
if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
P0_0=~P0_0;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
P0_0=~P0_0;
}
}
}
}
㈥ 基于单片机的电子密码锁设计
功能键
S6---S15 数字键0-9
S16---更改密码 S17---更改密码完毕后确认
S18---重试密码、重新设定 S19---关闭密码锁
初始密码:000000 密码位数:6位
注意:掉电后,所设密码会丢失,重新上点时,密码恢复为原始的000000
与P1相连的8位发光LED点亮代表锁被打开;熄灭代表锁被锁上
程序功能: 本程序结合了24C02存储器的存储功能,可以掉电保存密码。
第一次运行时,若输入000000原始密码后无反应,可以试验着将主程序中前面的
一小段被注释线屏蔽的程序前的注释线删掉,然后重新编译下载(可以将密码还原为000000)。
此后,再将这小段程序屏蔽掉,再编译下载。方可正常使用。
1、开锁:
下载程序后,直接按六次S7(即代表数字1),8位LED亮,锁被打开,输入密码时,
六位数码管依次显示小横杠。
2、更改密码:
只有当开锁(LED亮)后,该功能方可使用。
首先按下更改密码键S16,然后设置相应密码,此时六位数码管会显示设置密码对应
的数字。最后设置完六位后,按下S17确认密码更改,此后新密码即生效。
3、重试密码:
当输入密码时,密码输错后按下键S18,可重新输入六位密码。
当设置密码时,设置中途想更改密码,也可按下此键重新设置。
4、关闭密码锁:
按下S19即可将打开的密码锁关闭。
推荐初级演示步骤:输入原始密码000000---按下更改密码按键S16---按0到9设置密码---按S17
确认密码更改---按S18关闭密码锁---输入新的密码打开密码锁
*******************************************************************************/
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar old1,old2,old3,old4,old5,old6; //原始密码000000
uchar new1,new2,new3,new4,new5,new6; //每次MCU采集到的密码输入
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入数码管显示的变量
uchar wei,key,temp;
bit allow,genggai,ok,wanbi,retry,close; //各个状态位
sbit la=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
sbit sda=P2^0; //IO口定义
sbit scl=P2^1;
unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
/*****************IIC芯片24C02存储器驱动程序************************************/
void nop()
{
_nop_();
_nop_();
}
/////////24C02读写驱动程序////////////////////
void delay1(unsigned int m)
{ unsigned int n;
for(n=0;n<m;n++);
}
void init() //24c02初始化子程序
{
scl=1;
nop();
sda=1;
nop();
}
void start() //启动I2C总线
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
scl=0;
nop();
}
void stop() //停止I2C总线
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}
void writebyte(unsigned char j) //写一个字节
{
unsigned char i,temp;
temp=j;
for (i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
nop();
sda=CY; //temp左移时,移出的值放入了CY中
nop();
scl=1; //待sda线上的数据稳定后,将scl拉高
nop();
}
scl=0;
nop();
sda=1;
nop();
}
unsigned char readbyte() //读一个字节
{
unsigned char i,j,k=0;
scl=0; nop(); sda=1;
for (i=0;i<8;i++)
{
nop(); scl=1; nop();
if(sda==1)
j=1;
else
j=0;
k=(k<<1)|j;
scl=0;
}
nop();
return(k);
}
void clock() //I2C总线时钟
{
unsigned char i=0;
scl=1;
nop();
while((sda==1)&&(i<255))
i++;
scl=0;
nop();
}
////////从24c02的地址address中读取一个字节数据/////
unsigned char read24c02(unsigned char address)
{
unsigned char i;
start();
writebyte(0xa0);
clock();
writebyte(address);
clock();
start();
writebyte(0xa1);
clock();
i=readbyte();
stop();
delay1(100);
return(i);
}
//////向24c02的address地址中写入一字节数据info/////
void write24c02(unsigned char address,unsigned char info)
{
start();
writebyte(0xa0);
clock();
writebyte(address);
clock();
writebyte(info);
clock();
stop();
delay1(5000); //这个延时一定要足够长,否则会出错。因为24c02在从sda上取得数据后,还需要一定时间的烧录过程。
}
/****************************密码锁程序模块********************************************************/
void delay(unsigned char i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
{
la=0;
P0=table[a];
la=1;
la=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[b];
la=1;
la=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
P0=table[c];
la=1;
la=0;
P0=0xfb;
wela=1;
wela=0;
delay(5);
P0=table[d];
la=1;
la=0;
P0=0xf7;
wela=1;
wela=0;
delay(5);
P0=table[e];
la=1;
la=0;
P0=0xef;
wela=1;
wela=0;
delay(5);
P0=table[f];
la=1;
la=0;
P0=0xdf;
wela=1;
wela=0;
delay(5);
}
void keyscan()
{
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
wei++;
break;
case 0xde:
key=1;
wei++;
break;
case 0xbe:
key=2;
wei++;
break;
case 0x7e:
key=3;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
wei++;
break;
case 0xdd:
key=5;
wei++;
break;
case 0xbd:
key=6;
wei++;
break;
case 0x7d:
key=7;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=8;
wei++;
break;
case 0xdb:
key=9;
wei++;
break;
case 0xbb:
genggai=1;
wei=0;
break;
case 0x7b:
if(allow)
ok=1;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
retry=1;
break;
case 0xd7:
close=1;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
}
}
void shumima() //对按键采集来的数据进行分配
{
if(!wanbi)
{
switch(wei)
{
case 1:new1=key;
if(!allow) a=17;
else a=key; break;
case 2:new2=key;
if(a==17) b=17;
else b=key; break;
case 3:new3=key;
if(a==17) c=17;
else c=key; break;
case 4:new4=key;
if(a==17) d=17;
else d=key; break;
case 5:new5=key;
if(a==17) e=17;
else e=key; break;
case 6:new6=key;
if(a==17) f=17;
else f=key;
wanbi=1; break;
}
}
}
void yanzheng() //验证密码是否正确
{
if(wanbi) //只有当六位密码均输入完毕后方进行验证
{
if((new1==old1)&(new2==old2)&(new3==old3)&(new4==old4)&(new5==old5)&(new6==old6))
allow=1; //当输入的密码正确,会得到allowe置一
}
}
void main()
{
init(); //初始化24C02
/*********下面的一小段程序的功能为格式化密码存储区。************
******当24c02中这些存储区由于其他程序的运行而导致***************
*******所存数据发生了变化,或者密码遗忘时, ********************
******可以删掉其前面的注释线,然后重新编译下载。****************
******而将密码还原为000000后,请将下面的程序用******************
******注释屏蔽掉,重新编译、下载,方可正常使用****************/
// write24c02(110,0x00);
// write24c02(111,0x00);//24c02的第110到115地址单元作为密码存储区
// write24c02(112,0x00);
// write24c02(113,0x00);
// write24c02(114,0x00);
// write24c02(115,0x00);
/*******************************************************************/
old1=read24c02(110);
old2=read24c02(111);
old3=read24c02(112);
old4=read24c02(113);
old5=read24c02(114);
old6=read24c02(115);
while(1)
{
keyscan();
shumima();
yanzheng();
if(allow) //验证完后,若allow为1,则开锁
{
P1=0x00;
if(!genggai)
wanbi=0;
}
if(genggai) //当S16更改密码键被按下,genggai会被置一
{
if(allow) //若已经把锁打开,才有更改密码的权限
{
while(!wanbi) //当新的六位密码没有设定完,则一直在这里循环
{
keyscan();
shumima();
if(retry|close) //而当探测到重试键S18或者关闭密码锁键S19被按下时,则跳出
{ wanbi=1;
break;
}
display(a,b,c,d,e,f);
}
}
}
if(ok) //更改密码时,当所有六位新密码均被按下时,可以按下此键,结束密码更改
{ //其他时间按下此键无效
ok=0; wei=0;
genggai=0;
old1=new1;old2=new2;old3=new3; //此时,旧的密码将被代替
old4=new4;old5=new5;old6=new6;
//新密码写入存储区。
write24c02(110,old1);
write24c02(111,old2);
write24c02(112,old3);
write24c02(113,old4);
write24c02(114,old5);
write24c02(115,old6);
a=16;b=16;c=16;d=16;e=16;f=16;
}
if(retry) //当重试按键S18被按下,retry会被置位
{
retry=0; wei=0;wanbi=0;
a=16;b=16;c=16;d=16;e=16;f=16;
new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
}
if(close) //当关闭密码锁按键被按下,close会被置位
{
close=0;genggai=0;//所有变量均被清零。
wei=0; wanbi=0;
allow=0;
P1=0xff;
a=16;b=16;c=16;d=16;e=16;f=16;
new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
}
display(a,b,c,d,e,f); //实时显示
}
}
对着代码自己做吧,,要是还做不出来,,那我就不说什么了,,
㈦ 单片机指纹密码锁的特色与创新
随着人民生活水平的提高,如何实现家庭防盗这一问题也变得尤其突出,传统的机械锁由于其构造简单,安全性低,无法满足人们的需求。随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器,所以具有防盗报警功能的电子密码锁控制系统逐渐代替传统的机械式密码控制系统,克服了机械式密码锁控制的密码量少,安全性能差的缺点。
在传统的身份认证中,我们往往使用密码加密法,但是这种方法只是"防君子不防小人"。在高明的黑客眼里,由几个字符组成的密码脆弱得不堪一击。现在,科技的发展让我们有了新的选择——生物识别技术。将生物识别技术应用于笔记本、门锁等方面,可以对文件、财产起保护作用,并且可以进行身份识别。生物识别技术的发展主要起始于指纹研究,它亦是目前应用最为广泛的生物识别技术。
本设计开发了一款基于单片机的指纹识别电子密码锁系统。该系统以STC89C52单片机作为模块核心,通过串口通信控制ZFM-60指纹模块实现录取指纹并存储指纹数据,并通过HS12864-15C液晶显示比对流程及比对结果,辅以直流继电器与发光二极管模拟开锁的动作。本系统具有体积小、性价比高、传输速度快、适合家庭及单位使用。
关键词:单片机,密码锁,指纹识别
㈧ 基于单片机课程设计密码锁
采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。
电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。
密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。