1 / 11
文档名称:

4x4键盘实验报告.pdf

格式:pdf   大小:836KB   页数:11页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

4x4键盘实验报告.pdf

上传人:青山代下 2024/5/13 文件大小:836 KB

下载得到文件列表

4x4键盘实验报告.pdf

相关文档

文档介绍

文档介绍:该【4x4键盘实验报告 】是由【青山代下】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【4x4键盘实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..-单片机及DSP课程设计报告专业:班级:姓名:学号:指导教师:时间:一、设计目的为了进一步稳固学****的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开场为期两周的课程设计。通过设计使学生在稳固所学知识的根底之上具有初步的单片机系统设计与应用能力。1、通过本设计,使学生综合运用单片机技术原理与应用、原理与应用语言程序设计以及数字电路、模拟电路等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的根底。2、学会使用KEILC和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。二、硬件电路方案设计1、4*4键盘设计4*4键盘工作原理:每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端〔列线〕通过电,而接地是通过程序输出数字〞实现的。键盘处理程序的任务是:.:..-定有无键按下,判断哪一个键按下,。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。2、数码管显示电路设计数码管显示原理:动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好似各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。3、晶振和复位电路设计4、系统总电路图三、程序设计1、程序流程图〔1〕.:..-P1=0*feP1=0*fdP1=0*fbP1=0*f7按键确认按键确认按键确认按键确认延时2ms延时2ms延时2ms延时2ms再次确认再次确认再次确认再次确认按键编码按键编码按键编码按键编码返回键值返回键值返回键值返回键值第一行扫描第二行扫描第三行扫描第四行扫描P2=0*fe延时5ms数码管1显示数字P0=table[]P0=table[]显示数字数码管2延时5msP2=0*fd仿真过程:1、在keil中运行程序,并生成he*文件保存。2、proteus元件库中选择系统中所需的各元件,.:..-连接。3、连接好电路后鼠标双击AT89C52芯片,在〞菜单中翻开生成he*文件,下载完成后,点击运行按钮。注意:1、在原理图的绘制过程中对数码管的选择要注意考虑所写程序,无法点亮时应考虑共阳极数码管或共阴极数码管的选择。2、P0口接数码管时应接上拉电阻,否则无法点亮参考文献1、单片接口技术李航电子科学;2、模拟电子技术根底童诗白华成英高等教育;3、数字电子技术根底阎石高等教育;4、51单片机设计与仿真原理程候渊北方工业;五、课程设计总结心得体会:由于我没有过硬的技术,所以选择了键盘接口和显示设计这个相对于其他比较简单题目,望教师见谅。做完了本次课程设计,我收获颇多,无论是学****上还是其他方面,都有所感悟。在学****上:我对单片机有关知识有了更深刻的了解,学到了许多以前书本上没有的知识开阔了眼界和见识,通信深似海〞,只是单片机一门就让我深有体会。,并把理论运用到实践中去,体会到了实践的重要性。这次课程设计又为我们提供了一次自己动手操作实践的时机。在上次的8路呼叫器的知识根底上,我这次完成的很顺利,对以往未完全掌握的知识进展了补充,对以往掌握的知识加深了了解。这次课程设计起到着承上启下的作用,加深了过去的知识,.:..-实践根底每位同学对这次课程设计都付出了自己辛劳的汗水,这也使得他们的个人编程能力、电路设计能力、仿真调试能力都得到了一定程度的提高。替他方面:做事一定要认真,在仿真时候由于一个什么什么选错了,导致仿真不能实现,检查了很屡次才发现,实属不该;在编程时,也是由于一个不该犯的低级错误,导致了整个程序不能完美运行,这些都是不细心犯下的错误,以后一定要认真去做好每一件事,不让不该犯的错误导致满盘皆输。此外,这次课程设计让我对对Keil和Proteus两款软件有了更进一步认识,了解了单片机的电路图的绘制、仿真方法,为以后的学****工,作打下了根底。这次实****也暴露了我很多弱项,比方数电、模电学得不好,很多东西都是靠请教同学才懂。总之这次课程设计使我对通信专业有了更深一步的认识,极大地增加了我对该专业的兴趣,相信我以后在通信这条道路上会走的更好!主程序:*include<>*defineuintunsignedint*defineucharunsignedcharucharnum,temp;ucharkeyscan();voiddelay(uintz);voiddisplay(ucharaa);ucharcodetable[]={0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f};//****************主函数*****************//voidmain().z.:..-{while(1){keyscan();display(num);}}//***************延时函数***************//voiddelay(uintz){uint*,y;for(*=z;*>0;*--)for(y=100;y>0;y--);}//***************键盘扫描**************//ucharkeyscan(){P1=0*fe;temp=P1;temp=temp&0*f0;while(temp!=0*f0){delay(2);temp=P1;temp=temp&0*f0;while(temp!=0*f0){temp=P1;switch(temp).z.:..-{case0*ee:num=11;break;case0*de:num=12;break;case0*be:num=13;break;case0*7e:num=14;break;}while(temp!=0*f0){temp=P1;temp=temp&0*f0;}}}P1=0*fd;temp=P1;temp=temp&0*f0;while(temp!=0*f0){delay(2);temp=P1;temp=temp&0*f0;while(temp!=0*f0){temp=P1;switch(temp).z.:..-{case0*ed:num=21;break;case0*dd:num=22;break;case0*bd:num=23;break;case0*7d:num=24;break;}while(temp!=0*f0){temp=P1;temp=temp&0*f0;}}}P1=0*fb;temp=P1;temp=temp&0*f0;while(temp!=0*f0){delay(2);temp=P1;temp=temp&0*f0;while(temp!=0*f0){temp=P1;switch(temp).z.:..-{case0*eb:num=31;break;case0*db:num=32;break;case0*bb:num=33;break;case0*7b:num=34;break;}while(temp!=0*f0){temp=P1;temp=temp&0*f0;}}}P1=0*f7;temp=P1;temp=temp&0*f0;while(temp!=0*f0){delay(2);temp=P1;temp=temp&0*f0;while(temp!=0*f0){temp=P1;switch(temp).z.:..{case0*e7:num=41;break;case0*d7:num=42;break;case0*b7:num=43;break;case0*77:num=44;break;}while(temp!=0*f0){temp=P1;temp=temp&0*f0;}}}returnnum;}//**************************显示函数**********************//voiddisplay(ucharaa){uintnum1,num2;num1=aa/10;num2=aa%10;P2=0*fe;P0=table[num1];delay(5);P2=0*fd;P0=table[num2];.z.:..delay(5);P0=0;}教师评语:教师:日期:设计过程30﹪课设报告40﹪辩论30﹪.