ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:17.53KB ,
资源ID:7753141      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7753141.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机实践报告模板.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机实践报告模板.docx

1、单片机实践报告模板单片机实践报告项目名称:密码保险柜专业班级:计算机科学与技术1201班姓 名: 张晨辰 时 间: 2014年12月20日 1、项目功能描述1.用户可以通过输入6位数字密码来打开保险柜;2.当密码正确时,保险柜门打开,有开门提示声,当密码不正确时,保险柜门打不开,并且提示报警; 3.用户可以自行修改密码;4.有相应的密码输入显示窗口,输入数字用相应符号替代以避免被偷窥。二、仿真电路原理图三、所用器件序号标号器件名称型号功能数量备注1-6位八段数码管7SEG-MPX6-CA-BLUE12U151单片机AT89C5213C1-C2电容CAP24C3极性电容CAP-ELEC15X1晶

2、体CRYSTAL16-4*4行列扫描键盘KEYPAD-SMALLCALC17D1-D2发光二极管(绿色)LED-GREEN28-直流电机MOTOR-DC19R1-R4,R6通用电阻RES510RP18位排阻RESPACK-8111LS1蜂鸣器SOUNDER112Q1、Q2Q5、Q6三极管TIP122413Q3、Q4三极管TIP12724、创新之外5、难点6、程序清单(添加注释)#includeunsigned int num=10;/开始让数码管什么都显示bit set=0;/定义设置密码的位char count=-1;/开始让count=-1,方便后面显示数码管sbit Beep=P12;/

3、蜂鸣器unsigned char temp;unsigned char pws6=1,2,3,4,5,6;/原始密码unsigned char pwx6;/按下的数字存储区bit rightflag;/密码正确的标志位unsigned char workbuf6;unsigned char code tabledu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; /段选码,共阴极unsigned char code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/位选码unsigned in

4、t keyscan();void delay(unsigned char z)/延时,毫秒unsigned char y;for(;z0;z-) for(y=120;y0;y-);void setpw()/设置密码函数keyscan();unsigned int keyscan()/键盘扫描函数 P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(5);/键盘去抖,最好20ms以上,这里用了5ms temp=temp&0xf0; if(temp!=0xf0) count+;/按键计数加1 temp=P3; switch(temp) ca

5、se 0xee: num=7; if(count6)/六位密码,因此count6 if(set=0)/设置密码键没有被按下时 pwxcount=num;/存储按下的数字 else pwscount=num;/当密码键按下时,设置新密码 workbufcount=tabledu11; /相应位的数码管显示-,不显示相应的数字,密码是保密的 break; case 0xde: num=8; if(count6) if(set=0) pwxcount=num; else pwscount=num; workbufcount=tabledu11; break; case 0xbe: num=9; if

6、(count6) if(set=0) pwxcount=num; else pwscount=num; workbufcount=tabledu11; break; case 0x7e:/设置密码键按下 set=1;/设置密码标志位置1 P1_3=0;/设置密码指示灯亮 workbuf0=0x00;/数码管第一位不显示 workbuf1=0x00; workbuf2=0x00; workbuf3=0x00; workbuf4=0x00; workbuf5=0x00;/. count=-1;/按键计数复位为-1 if(count6)/密码没有设置完,继续设置密码 setpw();/设置密码 br

7、eak; while(temp!=0xf0)/按键抬起检测 temp=P3; temp=temp&0xf0; P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(5); temp=P3; temp=temp&0xf0; if(temp!=0xf0) count+; temp=P3; switch(temp) case 0xed: num=4; if(count6) if(set=0) pwxcount=num; else pwscount=num; workbufcount=tabledu11; break; case 0xdd: nu

8、m=5; if(count6) if(set=0) pwxcount=num; else pwscount=num; workbufcount=tabledu11; break; case 0xbd: num=6; if(count6) if(set=0) pwxcount=num; else pwscount=num; workbufcount=tabledu11; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(5); temp=

9、P3;/ temp=temp&0xf0; if(temp!=0xf0) count+; temp=P3; switch(temp) case 0xeb: num=1; if(count6) if(set=0) pwxcount=num; else pwscount=num; workbufcount=tabledu11; break; case 0xdb: num=2; if(count6) if(set=0) pwxcount=num; else pwscount=num; workbufcount=tabledu11; break; case 0xbb: num=3; if(count6)

10、 if(set=0) pwxcount=num; else pwscount=num; workbufcount=tabledu11; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(5); temp=P3; temp=temp&0xf0; if(temp!=0xf0) count+; temp=P3; switch(temp) case 0xd7: num=0; if(count6) if(set=0) pwxcount=num;

11、else pwscount=num; workbufcount=tabledu11; break; case 0xe7:num=20;break;/确定键按下检测 case 0x77:/复位键或输入密码全部一次删除 P1_1=0;/锁关 P1_3=1;/密码设置指示灯灭 set=0;/不设置密码 num=10;/num复位 count=-1;/count复位 workbuf0=tabledu10;/第一位数码管不显示 workbuf1=tabledu10; workbuf2=tabledu10; workbuf3=tabledu10; workbuf4=tabledu10; workbuf5=

12、tabledu10;/. P1_0=1;/锁关 break; case 0xb7:/输入密码删除键(一位一位删除) count-; workbufcount=0x00; /因为确定键按下时,count也会加1,而确定键不是密码,所以这里是count,而不是count+1 count-; /因为确定键按下时,确定键不是密码,count也会加1,所以这里的count再自减1 if(count=-1) count=-1; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; return(num);void init()/利用定时显示数码管TMOD=0x

13、01;TH0=(65536-500)/200;TL0=(65536-500)%200;ET0=1;EA=1;TR0=1;bit compare()/密码比较函数if(pwx0=pwx0)&(pwx1=pwx1)&(pwx2=pwx2)&(pwx3=pwx3)&(pwx4=pwx4)&(pwx5=pwx5)rightflag=1;elserightflag=0;return(rightflag);void main()unsigned int i,j;init();P0=0;P1_1=0;/锁关while(1) keyscan(); if(num=20)/如果确定键按下(修改密码和输入密码共用的

14、确定键) if(count=6) if(set=1)/修改密码确定 P1_3=1; workbuf0; workbuf1; workbuf2; workbuf3; workbuf4; workbuf5; else/输入密码确定 set=0; compare(); if(rightflag=1)/如果密码正确 P1_0=0;/锁开 P1_1=1; workbuf0=tabledu8;/数码管第一位显示8 workbuf1=tabledu8;/数码管第二位显示8 workbuf2=tabledu8; workbuf3=tabledu8; workbuf4=tabledu8; workbuf5=ta

15、bledu8; else P1_1=0;/锁仍然关 workbuf0=0X71;/数码管第一位显示F workbuf1=0X71; workbuf2=0X71; workbuf3=0X71; workbuf4=0X71; workbuf5=0X71;/. for(i=0;i1000;i+)/密码错误报警 for(j=0;j80;j+) Beep=Beep; break; else/若输入的密码位数不为6位时 P1_1=0;/锁仍然关 workbuf0=0X71;/数码管第一位显示F workbuf1=0X71; workbuf2=0X71; workbuf3=0X71; workbuf4=0X71; workbuf5=0X71;/. for(i=0;i1000;i+) for(j=0;j80;j+) Beep=Beep; break; void timer0() interrupt 1/数码管驱动程序 unsigned char i; TH0=(65536-500)/200; TL0=(65536-500)%200; for(i=0;i6;i+) P0=workbufi;/送出显示内容 P2=tablewei;/选中显示行 delay(5); P0=0; 7、实验心得

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1