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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(基于C51的数据排序及显示和电子密码锁设计的实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于C51的数据排序及显示和电子密码锁设计的实验报告.docx

1、基于C51的数据排序及显示和电子密码锁设计的实验报告 基于C51的数据排序及显示和电子密码锁设计的实验报告指导老师:吴飞青 学生:王鹏鸳 目录实验目的与内容 1开发板电路原理图 2软件部分 23.1 KEIL软件的设置 2编程界面 31基于C51的数据排序及显示 43.2软件流程图和程序 42基于C51的电子密码锁设计 53.3软件流程图和程序 5短学期的感想与体会 6附录 6基于C51的数据排序及显示主程序 6基于C51的电子密码锁设计主程序 8实验目的与内容单片机是现代控制领域中不可缺少的核心部件,是掌握电子应用技术和自动控制技术的必要一课。实验是提高同学们深入理解课堂内容的重要环节。本实

2、验课程的任务是巩固和加深学生对单片微机的原理知识的理解,目的在于培养学生分析问题和解决问题的能力以及实践动手能力。要求每位学生能用C语言编写C51的数据排序及显示和电子密码锁设计程序,在实验板上能正常工作。开发板电路原理图软件部分3.1 KEIL软件的设置打开KEIL软件,点击Project,新建一个Project工程并保存,然后进行芯片选择,根据实验板上的芯片类型,我们选择Atmel公司的AT89C52,然后确定。选择optionsfor target,点击output,在Create HEX File 选项上打勾,并确定,这样keil在编译程序的同时能生成.hex文件。接着新建一个.C的文

3、件,将其导入到工程,在里面编程并编译,然后用STC_ISP_V479软件将.hex文件烧录到单片机。 编程界面1基于C51的数据排序及显示3.2软件流程图和程序1、数据排序的流程图(冒泡排序) 2、将排序好后的数从大到小在数码管上显示流程图2基于C51的电子密码锁设计3.3软件流程图和程序 1、键盘扫描的流程图2、密码输入及显示的流程图短学期的感想与体会经过这7天短学期的锻炼,自己收获了不少。原来自己的C语言基础比较薄弱,通过老师的讲解和自己的复习,自己已经渐渐将C语言捡起来了,并且能够编写一些简单的程序来控制单片机实现某些功能,虽然中间遇到很多的问题,但通过问老师和同学,自己知道了原因,最终

4、解决了这些难点。通过编程,自己对单片机的原理有了进一步的理解。附录基于C51的数据排序及显示主程序#includereg52.h #includestdio.h#define unit unsigned int void delay(unit);/声明延时函数unit a=99,15,30,13,27,28,7,0,33,67;/定义一维数组,用来存放10个数据;unit table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴极led数码管段选码;void main()unit i,m,n;unit j,temp;for(i=0;

5、i9;i+)/冒泡排序的算法;for(j=0;j9-i;j+) if(ajaj+1) temp=aj; aj=aj+1; aj+1=temp; for(i=0;i0;x-) for(y=110;y0;y-); 基于C51的电子密码锁设计主程序#include#include#define unit unsigned int#define uchar unsigned charuchar num10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /共阴极LED段码09uchar k;uchar temp=1;/重置密码的标志位为1uchar

6、 a6=1,2,3,4,5,6;uchar b6,c6; /定义两个数组,存六位密码/*延时Xms*/void Delay_nms(unit n) /延时程序 unit i,j; for(i=n;i0;i-) for(j=112;j0;j-);void show(unit x)/数码管显示程序(显示8) P0=num8; switch(x) case 0:P2=0x7f;break; case 1:P2=0x3f;break; case 2:P2=0x1f;break; case 3:P2=0x0f;break; case 4:P2=0x07;break; case 5:P2=0x03;bre

7、ak; void GetKey ( )/键盘扫描函数,用于识别哪一个键按下,并读取键值 uchar X,Y,Z; k=20;/若无键按下,则返回k的值为20 P3=0x0f; /先对P1置数 行扫描 if(P3!=0x0f) /判断是否有键按下 Delay_nms(10); /延时,软件去干扰 if(P3!=0x0f) /确认按键按下X = P3; X=P3&0x0f; /保存行扫描时有键按下时状态 P3=0xf0; /列扫描 Y=P3&0xf0; /保存列扫描时有键按下时状态 Z=X|Y; /取出键值 switch (Z) /判断键值(那一个键按下) case 0x77: k=0; brea

8、k; /对键值赋值 case 0x7b: k=1; break; case 0x7d: k=2; break; case 0x7e: k=3; break; case 0xb7: k=4; break; case 0xbb: k=5; break; case 0xbd: k=6; break; case 0xbe: k=7; break; case 0xd7: k=8; break; case 0xdb: k=9; break; case 0xdd: k=10;break;/清空 case 0xde: k=11;break;/确认 case 0xe7: k=12;break;/重置 void

9、main(void) uchar m=0; uchar n=0; uchar d=0; int i,s; while(1) GetKey();/得到键值 Delay_nms(150);/ 延时 if(k!=20&k!=10&k!=11&k!=12)/判断有无键按下 bm=k;/若有键按下,将按下的键值存到数组里 show(m);/按下键就在数码管上显示,且只能显示六位 m+; else if(k=10)/清空程序 P2=0xff; for(n=0;n6;n+) bn=cn; m=0; P3=0xff; else if(k=11)/确认程序 if(m=6)/当输入六位密码时,按下确认键 for(

10、n=0;n6;n+)/将输入的密码与与原来的六位正确的密码 if(bn=an)/逐个比较 d+; if(d=6)/若正确,则在一位数码管上显示(P) temp=0;/重置的标志位为0 P0=0x73; P2=0xfe; d=0; m=0; s=200; while(s-)/同时让led灯亮2秒后熄灭 P1=0x00; for(i=0;i255;i+); P1=0xff; for(i=0;i255;i+); else/若密码输入错误,则在数码管上显示错误(E) P0=0x79; P2=0xfe; d=0; m=0; P1=0x00;/同时led常亮 else if(k=12&temp=0)/当原来的密码输入正确时,按下密码重置键,进行重置密码 P2=0xff; m=0; temp=1; for(n=0;n6;n+) an=bn;

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

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