单片机系统设计实训报告

合集下载

单片机实训报告范文精选5篇

单片机实训报告范文精选5篇

单片机实训报告范文精选5篇实训报告是展示自身实训收获成长的重要报告,那么实训报告该如何写呢?小编精选了一些关于实训报告的优秀范例,一起来看看吧。

单片机课程设计心得体会在学校学习期间我有幸的参加了学校的单片机学习小组,在小组里我了解了什么是单片机,单片机有哪些用途,利用单片机可以实现哪些功能来方便人们的生活如交通灯,时钟,还有手机中,电子玩具等等,它们里面都有单片机的存在来实现某种功能。

通过在单片机小组里的学习我简单总结了几点心得和体会:第一:万事开头难,要勇敢的迈出第一步,不要总找借口说没有学习过就总推脱。

凡事都有第一步可以先可简单的来,然后可以逐步的向深层次学习。

可以从建项目开始,然后可以找一个简单的小程序先把它敲进单片机内然他运行起来,感觉一下单片机的运行,让自己了解单片机整个运行。

第二:对于知识点,学过的要掌握牢固,对于没有学的和暂时用不到的先不用学习。

比如:小灯得点亮就没有用到中断可以先不用看。

这样可以避免知识过多记不住的麻烦。

对于程序这里的知识点不能只停留在理论层次上,一定要结合着程序进行学习这样才能掌握的很牢靠,当用到哪里的知识点不记得了可以去看书,对于用不到的可以不去看。

第三:程序不要只是看别人得,一定要自己写过才是自己的。

开始不懂可以参考别人的,看看每一句代表着什么意思,能够实现什么现象。

明白之后自己再重新写一遍,你会发现看别人的能懂到自己写的时候很困难。

当你自己能写出来的时候说明你真懂了。

第四:一定要学会程序调试的方法。

有时候把程序写完了然后运行时不能实现理想的现象。

这时有人就晕了不知该怎么办,然后就去问别人。

当别人找出问题出在哪里时就会恍然大悟。

其实当遇到问题一定要自己尝试着解决,不能遇到问题就去问别人。

自己一定要掌握解决问的方法和思路。

第五:在学习初期看别人的代码,学习别人的思路这个很有用。

通过看别人的代码特别是有多年编程经验的人的程序,可以迅速提高自己的编程水平。

也可以结合着别人的手法,与自己的想法结合在一起写出更好的程序。

关于单片机实训报告万能【六篇】

关于单片机实训报告万能【六篇】

关于单片机实训报告万能【六篇】【篇1】单片机实训报告万能通过今次单片机实训,使我对单片机的认识有了更深刻的理解。

系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。

由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。

例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。

踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。

当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。

我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

但在这次实训中同时使我对汇编语言有了更深的认识。

当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。

这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。

这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。

希望这次的经历能让我在以后学习中激励我继续进步。

【篇2】单片机实训报告万能通过这一个学期的单片机学习,我收获了很多关于单片机的知识,并且这些知识和日常的生活息息相关。

了解了一些简单程序的录入,LED显示器、键盘、和显示器的应用和原理。

LED显示器:LED显示器是由发光二管组成显示字段的器件。

通常的8段LED显示器是由8个发光二极管组成,LED显示器分共阳极和共阴极两种。

有段选码和和位选码。

当LED显示器每段的平均电流位5MA时,就有较满意的亮度,一般选择断码5-10MA 电流;位线的电流应选择40-80MA。

LED显示器的显示方式有动态和静态两种。

7289A芯片是具有SPI串行接口功能的显示键盘控制芯片,它可同时取得8位共阴极数码管和64个键的键盘矩阵。

单片机设计实训报告范例优选5篇

单片机设计实训报告范例优选5篇

单片机设计实训报告范例优选5篇实训报告是展现本身实践获得发展的关键汇报,那麼实训报告该要怎么写呢?我优选了一些有关实训报告的出色案例,一起来瞧瞧吧。

单片机设计课题设计体会心得校园内学习培训期内我荣幸的参与了院校的单片机学习工作组,在工作组里我了解了什么叫单片机设计,单片机设计有什么主要用途,运用单片机设计能够完成什么作用来便捷大家的日常生活如交通信号灯,数字时钟,也有手机上中,电动玩具这些,他们里边都是有单片机设计的存有来完成某类作用。

根据在单片机设计工作组里的学习培训我简易汇总了几个方面体会心得和感受:第一:开头难,要英勇的迈出第一步,不必总找借口说沒有学习培训过就总推诿。

一切都是有第一步能够先可简易的来,随后能够逐渐的向多方面学习培训。

能够从建新项目逐渐,随后能够找一个简易的微信小程序先把它敲进单片机设计内然他运作起來,觉得一下单片机设计的运作,让自身掌握单片机设计全部运作。

第二:针对知识要点,学过的要把握坚固,针对沒有学的和临时用不上的先无需学习培训。

例如:灯泡得照亮就沒有采用终断能够先无需看。

那样能够防止专业知识太多记不得的不便。

针对程序流程这儿的知识要点不可以只滞留在基础理论层级上,一定要融合着程序流程开展学习培训那样才可以把握的很牢固,当采用哪儿的知识要点不记得了能够看看书,针对用不上的可以不去看看。

第三:程序流程不必仅仅看他人得,一定要自身读过才算是自身的。

逐渐不明白能够参照他人的,看一下每一句意味着着是什么意思,可以完成哪些状况。

搞清楚以后自身再再次写一遍,你能发觉看他人的能懂到自身写的情况下很艰难。

如果你自身能写出去的情况下表明你真明白了。

第四:一定要学好调试程序的方式。

有时把程序流程写完了随后运作时不可以实现梦想的状况。

这时候有些人就晕了不知道应该怎么办,随后就去问他人。

当他人找到难题出在哪儿时便会如梦初醒。

实际上当碰到难题一定要自身试着着处理,不可以碰到难题就去问他人。

自身一定要把握处理问的方式和构思。

单片机实训报告范文精选5篇精选

单片机实训报告范文精选5篇精选

单片机实训报告范文精选5篇实训报告是展示本身实训收获成长的重要报告,那么实训报告该如何写呢?小编精选了一些关于实训报告的优秀范例,一起来看看吧。

单片机课程设计心得体会在学校学习期间我有幸的参加了学校的单片机学习小组,在小组里我理解了什么是单片机,单片机有哪些用途,利用单片机可以实现哪些功能来方便人们的生活如交通灯,时钟,还有中,电子玩具等等,它们里面都有单片机的存在来实现某种功能。

通过在单片机小组里的学习我简单总结了几点心得和体会:第一:万事开头难,要英勇的迈出第一步,不要总找借口说没有学习过就总推脱。

凡事都有第一步可以先可简单的来,然后可以逐步的向深层次学习。

可以从建工程开始,然后可以找一个简单的小程序先把它敲进单片机内然他运转起来,感受一下单片机的运转,让本人理解单片机整个运转。

第二:关于知识点,学过的要掌握结实,关于没有学的和临时用不到的先不用学习。

比方:小灯得点亮就没有用到中断可以先不用看。

如此可以防止知识过多记不住的苦恼。

关于程序这里的知识点不能只停留在理论层次上,一定要结合着程序进展学习如此才能掌握的特别牢靠,当用到哪里的知识点不记得了可以去看书,关于用不到的可以不去看。

第三:程序不要只是看别人得,一定要本人写过才是本人的。

开始不明白可以参考别人的,看看每一句代表着什么意思,可以实现什么现象。

明白之后本人再重新写一遍,你会觉观察别人的能明白到本人写的时候特别困难。

当你本人能写出来的时候说明你真明白了。

第四:一定要学会程序调试的方法。

有时候把程序写完了然后运转时不能实现理想的现象。

这时有人就晕了不知该如何办,然后就去征询别人。

当别人找出征询题出在哪里时就会恍然大悟。

事实受骗遇到征询题一定要本人尝试着处理,不能遇到征询题就去征询别人。

本人一定要掌握处理征询的方法和思路。

第五:在学习初期看别人的代码,学习别人的思路这个特别有用。

通过看别人的代码特别是有多年编程经历的人的程序,可以迅速提高本人的编程水平。

单片机实训综合报告

单片机实训综合报告

一、前言单片机作为一种微型的计算机系统,因其体积小、功耗低、功能强、成本低等特点,在工业控制、智能家居、通信等领域得到了广泛的应用。

为了提高学生的实践能力,培养创新精神和工程实践能力,我们进行了单片机实训。

本文将对本次实训进行总结,分析实训过程中遇到的问题及解决方法,并对实训成果进行展示。

二、实训目的1. 熟悉单片机的基本原理和组成,掌握单片机的开发环境。

2. 学习单片机编程,了解C语言在单片机中的应用。

3. 学会使用单片机外围电路,实现基本的功能。

4. 培养学生的动手能力、团队协作能力和创新精神。

三、实训内容1. 单片机硬件电路搭建在本次实训中,我们搭建了基于51单片机的最小系统,包括单片机、晶振、复位电路、电源电路等。

通过搭建电路,使学生了解单片机的硬件组成,为后续编程打下基础。

2. 单片机编程使用C语言对单片机进行编程,实现以下功能:(1)LED流水灯:通过控制LED灯的亮灭,实现流水灯效果。

(2)按键控制LED灯:通过按键控制LED灯的开关。

(3)数码管显示:将当前时间显示在数码管上。

3. 单片机外围电路应用(1)使用继电器控制外部设备:通过单片机控制继电器,实现外部设备的开关。

(2)使用蜂鸣器发出声音:通过单片机控制蜂鸣器,实现不同频率的声音。

四、实训过程及问题解决1. 电路搭建过程中,遇到电路连接错误、元器件损坏等问题。

通过查阅资料、请教老师,逐一解决了这些问题。

2. 编程过程中,遇到程序运行不稳定、功能实现不完善等问题。

通过分析程序逻辑、修改代码,使程序运行稳定,功能完善。

3. 在单片机外围电路应用过程中,遇到继电器控制不灵敏、蜂鸣器声音不稳定等问题。

通过调整电路参数、优化代码,使继电器控制灵敏,蜂鸣器声音稳定。

五、实训成果1. 完成了基于51单片机的最小系统搭建。

2. 编写并调试了LED流水灯、按键控制LED灯、数码管显示等程序。

3. 应用单片机外围电路,实现了继电器控制和蜂鸣器发声等功能。

单片机实训报告【三篇】

单片机实训报告【三篇】

【导语】实训报告是展⽰⾃⾝实训收获成长的重要报告。

以下是⽆忧考整理的单⽚机实训报告,欢迎阅读!更多相关⽂章请关注⽆忧考报告频道!单⽚机实训报告篇⼀ 通过为期⼀周的单⽚机实训,是我们对这门课有了许多新的了解,弥补了在课堂上学习的不⾜。

相信这对我们以后的学习和⼯作都会有很⼤的帮助。

我们⼀定要在最短的时间⾥对这些不⾜加以改正! ⾸先,在这次试训中我被单⽚机强⼤的功能所震撼,以前在课堂上完全没有能理解可编程单⽚机的优越性。

这次通过实体仿真软件等辅助软件的共同效果,是这次试训有了鲜明的活⼒。

换是我们认识到这次试训不仅仅是⼀个软件的应⽤,更多的是使我们认识到学习到很多在课堂上⽆法得到的东西。

特别是protues软件的功能是我们了解了当今开发系统的新⽅向,简直太不可思议啦! 单⽚机作为⼀种最简单的软件,与我们的⽇常⽣活息息相关,了解⼀些单⽚机程序的简单录⼊是⾮常必要的。

如:LED显⽰器、键盘和显⽰器的应⽤和原理。

在被刺实训中我们每个⼈通过⼀个⼋位流⽔灯的制作,使我们深深地体会到了单⽚机在现实⽣活中的⼩⼩应⽤,既增强了我们的好奇⼼,⼜巩固了我们的理论知识。

更让我们体会到了单⽚机⼿动的开始平台的完善与成熟。

只要你有想法,单⽚机就有可能让他成为现实。

这⾥我学习完protues软件后的第⼀感觉是,虽然这软件⼯作不稳定,但是会有相当不错的效果出来。

这对我以后的⼯作⼀定会有帮助的。

在这次试训中不仅只对单⽚机编程有了新的认识,还对整个单⽚机的开发平台都有了⼀厅的了解,这是⼀笔不错的收获。

通过这⼏天的试训,使我的感触很深,真实“条条⼤路通罗马”,要达到⽬的,不同的⼈就有不同的⽅法。

只要你的⽅法不错!五花⼋门都可以,⽽且是各有特⾊。

⾛出来的结果都有各⾃的独到之处。

在编程中“简”字贯穿于整个程序设计中,越简单越好,毕竟单⽚机留给⽤户的资源是有限的,所以我们要充分利⽤这些资源,达到更好的效果,这些是我们在以后的学习⽣活中应值得注意的地⽅。

单片机实训报告优选范文5篇分享

单片机实训报告优选范文5篇分享

单片机实训报告优选范文5篇分享单片)是一种集成电路芯片,是具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

下面就是小编给大家带来的单片机实训报告优选范文5篇分享,希望大家喜欢!单片机实训报告范文(一)前言一周的单片机实训很快就结束咯,在这一周的时间里,我学到了很多关于单片机各方面的知识。

老师在实训课中也教会咯我们很多关于单片机软件编程与硬件设施的知识。

一周的实训中我们一共实训咯好几个项目,通过这几个项目的实训,我们掌握咯一些单片机的汇编语言和硬件调试,达到了很好的效果。

一周时间实训过后,我把之前在课堂上不懂的知识点,通过实际操作的练习,我都搞明白咯。

当然在实训过程中也遇到咯很多问题,就是有时在调试方面不能调试成功,有时程序是没有错误,但是就是调试不好,一直找原因也找不出是什么原因。

希望以后能够拥有更多的实训时间和机会学习单片机。

实训任务一一、实验目的熟悉Keil C51集成开发环境的使用方法二、实验设备及器件IBM PC机三、实验内容按照本书的第2章的2.1节到2.4节内容进行Keil C51集成开发环境的安装和使用练习。

然后按照以下内容建立文件并编译产生HEX文件。

ORG 8000HLJMP MainORG 80F0HMain:MOV R7,#0LOOP:MOV R6,#0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,LOOP ;延时一台CPL P1.0CPL P1.1CPL P1.2CPL P1.3CPL P1.4CPL P1.5CPL P1.6CPL P1.7SJMP MainEND ;P1.0取反 ;P1.1取反 ;P1.2取反 ;P1.3取反 ;P1.4取反 ;P1.5取反 ;P1.6取反 ;P1.7取反通过该程序实现八盏灯的同时亮和同时灭的功能,更好的掌握汇编指令。

关于单片机的实训报告范文

关于单片机的实训报告范文

一、前言随着科技的飞速发展,单片机作为一种重要的嵌入式系统,广泛应用于工业控制、智能家居、物联网等领域。

为了提高我们的实践能力,培养创新精神和工程实践能力,我们选择了单片机作为实训课程。

以下是我对单片机实训过程的总结和心得体会。

二、实训目的1. 掌握单片机的基本原理和组成。

2. 熟悉单片机的编程方法和调试技巧。

3. 学会使用单片机进行简单的嵌入式系统设计。

4. 培养团队协作和解决问题的能力。

三、实训内容1. 单片机基本原理和组成实训过程中,我们学习了单片机的基本原理和组成。

单片机是由中央处理器(CPU)、存储器(RAM、ROM)、输入输出接口(I/O)、定时器/计数器等组成。

通过学习,我们了解了单片机的指令系统、寻址方式、中断系统等基本概念。

2. 单片机编程和调试实训中,我们学习了Keil C51集成开发环境的使用方法,掌握了单片机的编程技巧。

通过编写程序,我们实现了单片机的输入输出控制、定时器/计数器功能、中断控制等功能。

同时,我们还学习了调试技巧,解决了程序运行过程中出现的问题。

3. 嵌入式系统设计在实训过程中,我们设计了一个简单的嵌入式系统,实现了温度检测、报警功能。

系统主要由单片机、温度传感器、蜂鸣器、显示模块等组成。

通过设计,我们了解了嵌入式系统的设计流程,掌握了硬件选型、软件编程、系统调试等技能。

4. 团队协作和解决问题实训过程中,我们分组进行项目设计,培养了团队协作能力。

在遇到问题时,我们积极思考、讨论,最终找到了解决方案。

这让我们认识到,在团队中,沟通和协作至关重要。

四、实训心得体会1. 理论与实践相结合实训过程中,我们深刻体会到理论与实践相结合的重要性。

通过实际操作,我们对单片机的原理和编程有了更深入的理解。

2. 学会编程和调试技巧实训过程中,我们学会了Keil C51集成开发环境的使用方法,掌握了单片机的编程技巧。

同时,我们还学会了调试技巧,能够快速解决程序运行过程中出现的问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机系统设计实训报告专业:生产过程自动化目录一.实验目的: (3)二.实验要求: (3)三.实验基本原理: (4)四.实验设计分析: (4)1.设计思想: (4)五.实验要求实现: (6)1. 电路设计: (6)2.主流程图: (7)3.4x4键盘行列式键盘原理电路图: (8)4. 显示模块 (9)五.总电路设计如下 (9)六.程序 (11)七.实验心得 (21)一.实验目的:1.熟悉单片机定时器的编程方法。

2.灵活运用单片机C语言程序中的字符串、数组、指针。

3.熟悉数码显示、LCM1602液晶显示器、YJD12864液晶显示器的编程方法。

4.熟悉掌握4x4矩阵键盘的C语言编程。

二.实验要求:1:用4×4矩阵键盘组成0-f数字键及。

2:可以自行设定或删除8位密码,3:用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示PASS,若密码显示错误时,显示ERR.4:自由发挥其他功能.5:要求有单片机硬件系统框图,电路原理图,软件流程图。

三.实验基本原理:这个密码锁的功能是使用矩阵键盘中的十六个键输入密码0到F还有,输入的同时在八位数码管上显示用户所输入的密码,未输入的位置用横杆填补表述未输入。

当输入的密码超出设置的位数时,数据溢出,清零。

用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示pass,若密码不正确,则显示err;模拟密码锁,密码固化到ROM 不能通过按键输入更改。

四.实验设计分析:1.设计思想:1. 本系统采用单片机AT89S51作为核心元件的一款具有本机开锁,加锁,修改密码和错误2.报警的电子密码锁。

3. 电子密码锁的原理是:从键盘输入一组密码,CPU把该密码和设置密码比较,对则将锁打开,错则要求重新输入,并记录错误次数,如果三次错误,则被强制锁定并报警。

初步设计思路如下:1.输入密码用矩形键盘,数字键,字母键。

2.LED数码管显示输入密码,但是只是输出显示符号8 。

采用动态扫描输出。

3. 输入密码错误时显示ERR,密码正确时显示PASS。

软件的设计主要包括矩形键盘键值的读取、LED动态扫描输出程序、密码判断程序。

电子密码锁工作的主要过程是LED数码管显示密码啊。

通过键盘输入密码,按下确认键后判断密码的正确性,正确显示PASS,错误显示ERR。

程序将分为主程序和中断服务子程序。

主程序负责键盘键值读取,密码判断和开锁,中断服务子程序主要是负责LED 数码管显示。

根据程序功能,程序主要分为以下几部分:1.键盘键值读取程序键盘键值读取程序包括键盘扫描、消除抖动、键译码等内容。

按键的识别主要有两种方法:行反转法和行扫描法。

因为键盘为机械开关,容易引入抖动。

为了消除抖动干扰,在程序中要加入消除抖动的部分。

2)LED数码显示程序LED数码显示器是一种应用很普遍的显示器。

程序主要负责把要显示的数字或字母对应的显示码送到相应的LED显示管。

有多位需要同时显示时,可以采用动态刷新的方法,就可以得到稳定的输出。

循环显示8个数码管,可以实现稳定的数字显示。

中断服务程序只负责数据的输出显示,主程序根据所处的状态修正显示数据。

3)密码判断程序密码判断程序放在主程序中,有按键时读取,当确定键按下时作出判断。

在程序中设置6字节的空间存放设定的密码和8字节存放键盘输入的数据。

根据读取的键盘数据和预先设定的密码逐位比较就可以判断输入密码的正确性。

2.密码显示与开锁当密码输出时候,显示屏上逐步显示密码,逐一显示。

4.密码错误报警当用户键入正确密码并按下“确认”键时,屏幕清零会显示PASS。

当用户键入错误密码按下“确认”时,屏幕清零会显示ERR。

五.实验要求实现:1.电路设计:2.主流程图:3.4x4键盘行列式键盘原理电路图:每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N 条行线和M条列线,即可组成具有N×M个按键的键盘。

本设计发射部分采用4x4键盘,接收部分采用4x4键盘。

键盘扫描时,首先由I/O口低四位输出高电平,高四位输出低电平,假若有键按下,那么在I/O口低四位即可读出低电平,接着延时消抖,再具体判断是何键按下。

4.显示模块五.总电路设计如下六.程序#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换#define KeyPort P1sbit LATCH1=P2^2;//定义锁存使能端口段锁存sbit LATCH2=P2^3;// 位锁存unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0 x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~F unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]; //存储显示值的全局变量unsigned char code password[8]={1,2,3,4,5,6,7,8};//可以更改此密码做多组测试void DelayUs2x(unsigned char t);//us级延时函数声明void DelayMs(unsigned char t); //ms级延时void Display(unsigned char FirstBit,unsigned char Num);//数码管显示函数unsigned char KeyScan(void);//键盘扫描unsigned char KeyPro(void);void Init_Timer0(void);//定时器初始化/*------------------------------------------------主函数------------------------------------------------*/ void main (void){unsigned char num,i,j;unsigned char temp[8];bit Flag;Init_Timer0();while (1) //主循环{num=KeyPro();if(num!=0xff){if(i==0){for(j=0;j<8;j++)//清屏TempData[j]=0;}if(i<8){temp[i]=dofly_DuanMa[num];//把按键值输入到临时数组中for(j=0;j<=i;j++) //通过一定顺序把临时数组中//的值赋值到显示缓冲区,从右往左输入TempData[7-i+j]=temp[j];}i++; //输入数值累加if(i==9)//正常等于8即可,由于我们需要空一个用于清屏,//清屏时的按键不做输入值{i=0;Flag=1;//先把比较位置1for(j=0;j<8;j++)//循环比较8个数值,//如果有一个不等则最终Flag值为0Flag=Flag&&(temp[j]==dofly_DuanMa[password[j]]);//比较输入值和已有密码for(j=0;j<8;j++)//清屏TempData[j]=0;if(Flag)//如果比较全部相同,标志位置1{TempData[0]=0x3f; // "o"TempData[1]=0x73; // "p"TempData[2]=0x79; // "E"TempData[3]=0x54; // "n"//说明密码正确,输入对应操作显示"open"}else{TempData[0]=0x79; // "E"TempData[1]=0x50; // "r"TempData[2]=0x50; // "r"//否则显示"Err"}}}}}/*------------------------------------------------ uS延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5 uS------------------------------------------------*/ void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------ mS延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/ void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------ 显示函数,用于动态扫描数码管输入参数FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示如输入0表示从第一个显示。

Num表示需要显示的位数,如需要显示99两位数值则该值输入2------------------------------------------------*/ void Display(unsigned char FirstBit,unsigned char Num) {static unsigned char i=0;DataPort=0; //清空数据,防止有交替重影LATCH1=1; //段锁存LATCH1=0;keyPort=dofly_WeiMa[i+FirstBit]; //取位码LATCH2=1; //位锁存LATCH2=0;DataPort=TempData[i]; //取显示数据,段码LATCH1=1; //段锁存LATCH1=0;i++;if(i==Num)i=0;}/*------------------------------------------------定时器初始化子程序------------------------------------------------*/ void Init_Timer0(void){TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响//TH0=0x00; //给定初值//TL0=0x00;EA=1; //总中断打开ET0=1; //定时器中断打开TR0=1; //定时器开关打开}/*------------------------------------------------定时器中断子程序------------------------------------------------*/ void Timer0_isr(void) interrupt 1{TH0=(65536-2000)/256; //重新赋值2msTL0=(65536-2000)%256;Display(0,8); // 调用数码管扫描}/*------------------------------------------------ 按键扫描函数,返回扫描键值------------------------------------------------*/ unsigned char KeyScan(void) //键盘扫描函数,使用行列反转扫描法{unsigned char cord_h,cord_l;//行列值中间变量KeyPort=0x0f; //行线输出全为0cord_h=KeyPort&0x0f; //读入列线值if(cord_h!=0x0f) //先检测有无按键按下{DelayMs(10); //去抖if((KeyPort&0x0f)!=0x0f){cord_h=KeyPort&0x0f; //读入列线值KeyPort=cord_h|0xf0; //输出当前列线值cord_l=KeyPort&0xf0; //读入行线值while((KeyPort&0xf0)!=0xf0);//等待松开并输出return(cord_h+cord_l);//键盘最后组合码值}}return(0xff); //返回该值}/*------------------------------------------------ 按键值处理函数,返回扫键值------------------------------------------------*/ unsigned char KeyPro(void){switch(KeyScan()){case 0x7e:return 0;break;//0 按下相应的键显示相对应的码值case 0x7d:return 1;break;//1case 0x7b:return 2;break;//2case 0x77:return 3;break;//3case 0xbe:return 4;break;//4case 0xbd:return 5;break;//5case 0xbb:return 6;break;//6case 0xb7:return 7;break;//7case 0xde:return 8;break;//8case 0xdd:return 9;break;//9case 0xdb:return 10;break;//acase 0xd7:return 11;break;//bcase 0xee:return 12;break;//ccase 0xed:return 13;break;//dcase 0xeb:return 14;break;//ecase 0xe7:return 15;break;//fdefault:return 0xff;break;}}七.实验心得在科技高度发展的今天,计算机在人们之中的作用越来越突出。

相关文档
最新文档