单片机创新设计
单片机创新设计

密码防盗键盘指导老师:张儒姓名:肖均强学号:200710330223 班级:07电子(2)班时间:2010-6-16目录一、目的、用途、功能 (3)1.1 目的 (3)1.2用途与功能 (3)二、硬件设计 (3)2.1 硬件设计思想 (3)2.2 部分硬件方案论述 (4)2.3 硬件电路图 (5)2.4 硬件单元 (6)三、软件 (7)3.1 软件基本思想 (7)3.2 程序框图 (8)3.3 程序简述 (8)3.4 程序代码 (8)四、总结 (13)4.1 基本成果 (13)4.2 技术特色与创新 (13)4.3 应用拓展 (13)4.4 与同类课题研究的比对和优势 (13)五、心得体会 (14)六、附录 (15)5.1 所需资源列表 (15)5.2 作品照片 (15)5.3 参考文献 (15)密码防盗键盘机电学院电子专业2007级肖均强摘要:本实验是基于A VR mega16 单片机所设计的,可以实现键位与数字动态显示的一种新型密码防盗键盘。
通过单片机内部产生随机数,使用LED数码七段数码管予以显示,每一个数码管对应一个键位。
单片机对各个键位进行扫描,确定键位的输入。
关键词:mega16七段数码管ULN2003 密码防盗一、目的、用途、功能1.1 目的:设计一种投资少,简单易行,仅仅只是在现在的设备的基础之上稍加改造,又能从根本上解决摄像头拍摄盗取密码的设备。
1.2用途与功能:我们就设想让键上的10个数字位置分布可变。
10个键上的数字是由七段数码管显示。
每次取款时,键盘上数字的分布都会随机变化。
因而知道了键的位置并不能绝对判断出键上的数字是多少。
因此会给犯罪分子获得提款人的密码造成麻烦,从而解决摄像头盗取密码的难题。
二、硬件设计2.1 硬件设计思想键盘的数字和键位关系不固定,而且通过单片机内部产生随机数,通过LED数码管显示出来,每一个数码管对应一个键位。
基本设备是基于AVR单片机,外围设备采用的是12个七段数码管,2个ULN2003芯片,11个七段数码管, 1个74LS248芯片,若干电阻,电源电池。
科技创新研究报告单片机

科技创新研究报告单片机单片机是一种集成电路芯片,具有计算机的中央处理器、存储器和各种输入输出接口等功能。
单片机具有体积小、功耗低、功能强大等优点,被广泛应用于各个领域的科技创新研究。
1. 应用领域:单片机广泛应用于电子设备、自动化控制、通信、仪器仪表、医疗器械等领域。
例如,单片机可以用于家电产品的控制和管理,或者用于车辆的智能控制系统等。
2. 硬件设计:单片机的硬件设计是科技创新研究中的重要一环。
需要根据具体的应用需求选择合适的单片机型号,并设计相应的电路板,包括外设接口、传感器接口、电源管理等。
硬件设计要兼顾性能、功耗、成本等因素。
3. 软件开发:单片机的软件开发也是科技创新研究的重要一环。
基于单片机的开发环境,可以使用各种编程语言进行程序开发,如C语言、汇编语言等。
通过编写程序,可以实现对硬件的控制和管理。
4. 通信技术:单片机在科技创新研究中还经常涉及到通信技术。
通过与其他设备的通信,单片机可以获取外部数据或者将数据传输到其他设备。
常见的通信方式包括串口通信、SPI通信、I2C通信等。
5. 数据处理与算法:单片机可以进行各种数据处理和算法运算。
在科技创新研究中,常常需要对传感器采集的数据进行处理,提取有用的特征,通过算法实现特定功能。
6. 创新应用:单片机的广泛应用为科技创新提供了丰富的可能性。
通过充分发挥单片机的功能特点,可以实现各种创新应用,如智能家居、智能农业、智能交通等。
在科技创新研究中,单片机是一个重要的工具和平台。
通过合理利用单片机的硬件和软件功能,可以实现各种创新应用和解决实际问题。
同时,单片机的不断发展也为科技创新提供了更多的可能性。
单片机优秀毕业设计

单片机优秀毕业设计单片机优秀毕业设计在现代科技发展的浪潮中,单片机作为一种重要的电子元器件,被广泛应用于各个领域。
在工程技术类专业中,单片机的应用已经成为学生毕业设计的重要组成部分。
优秀的毕业设计不仅能够展示学生的专业能力,还能够为实际应用提供有益的创新。
一、智能家居控制系统设计随着智能家居的兴起,人们对于家居生活的便利性和舒适度的要求也越来越高。
基于单片机的智能家居控制系统设计,可以实现对家居设备的远程控制和智能化管理。
例如,通过手机APP可以控制家中的灯光、空调、窗帘等设备,实现智能化的场景切换。
此外,还可以添加温湿度传感器、烟雾传感器等,实现对环境的实时监测和报警功能。
这样的毕业设计不仅能够展示学生的硬件设计和编程能力,还能够为智能家居的推广和应用提供有益的参考。
二、智能农业监控系统设计农业是国民经济的重要支柱,而智能农业监控系统的设计可以提高农业生产的效率和质量。
基于单片机的智能农业监控系统可以实现对温室、大棚等农业环境的实时监测和控制。
例如,通过温湿度传感器和土壤湿度传感器可以监测温室内的温度、湿度和土壤湿度,通过单片机控制水泵和灌溉系统可以实现自动的灌溉和施肥。
此外,还可以添加摄像头和图像识别算法,实现对病虫害的自动监测和预警。
这样的毕业设计不仅能够展示学生的传感器应用和数据处理能力,还能够为农业生产的智能化提供有益的技术支持。
三、智能交通信号控制系统设计城市交通拥堵一直是一个严重的问题,而智能交通信号控制系统的设计可以提高交通的流畅性和安全性。
基于单片机的智能交通信号控制系统可以通过车辆检测器和红外传感器实时监测道路上的车辆流量和行驶速度,通过单片机控制信号灯的切换,实现根据实际交通情况进行智能的信号控制。
此外,还可以添加车牌识别系统和违章监测系统,实现对交通违法行为的自动监测和处罚。
这样的毕业设计不仅能够展示学生的算法设计和控制逻辑能力,还能够为城市交通管理提供有益的技术支持。
四、智能健康监测系统设计随着人们健康意识的提高,智能健康监测系统的设计成为一种新的趋势。
单片机 车 毕业设计

单片机车毕业设计一、引言随着科技的不断发展和进步,单片机技术在汽车行业中的应用越来越广泛。
单片机车的设计实现了对脉冲波信号的实时检测、转换和显示,为汽车电子控制系统的安全运行提供了有效的保障。
本文将结合单片机技术,设计一款基于单片机的智能车辆控制系统,以满足当前汽车行业对安全性、节能性和环保性的需求。
二、项目背景和意义随着汽车产业和社会经济的快速发展,车辆控制系统的安全性和智能化程度已成为汽车设计和开发的重点。
本项目旨在利用单片机技术,设计一种能够实现对汽车行驶过程中脉冲波信号的实时检测和显示的智能车辆控制系统。
该系统将能够及时发现车辆动态参数的异常波动,为驾驶员提供及时的警报和安全提示,从而提高汽车的整体安全性和控制精度。
三、设计方案1.系统整体设计本项目将使用单片机作为控制核心,配合传感器模块、显示模块和报警器构成一个完整的车辆控制系统。
通过单片机实时采集车辆的动态参数,并进行数据处理和分析,最终在显示模块上实时显示车辆的运行状态,并通过报警器提供相应的安全提示。
2.硬件设计硬件系统由单片机模块、传感器模块、显示模块和报警器模块组成。
单片机模块负责控制整个系统的运行,传感器模块用于采集车辆的动态参数,显示模块用于展示数据信息,报警器模块用于提供相应的安全提示。
其中传感器模块包括速度传感器、转向传感器、刹车传感器等,用于实时采集车辆的运行状态。
3.软件设计软件系统主要由单片机程序和上位机程序组成。
单片机程序负责对传感器模块采集的数据进行实时处理和分析,并控制显示模块和报警器模块的工作。
上位机程序用于与单片机进行数据通信,实现对车辆控制系统的远程监控和管理。
四、关键技术和创新点1. 数据采集与处理技术通过单片机对传感器模块采集的数据进行实时处理和分析,能够实现对车辆动态参数的准确监测和分析,为车辆安全提供有效保障。
2. 数据显示与报警技术通过显示模块实时展示车辆的运行状态,并通过报警器模块提供相关的安全提示,提高了对车辆的实时监测和控制。
基于单片机的智能鱼缸温控系统设计

基于单片机的智能鱼缸温控系统设计智能鱼缸温控系统是一种基于单片机技术的创新设计,旨在为鱼缸提供稳定的温度环境,以促进鱼类的生长和健康。
本文将详细介绍智能鱼缸温控系统的设计原理、硬件组成和软件实现,并对其在实际应用中的效果进行评估和分析。
一、引言随着人们对休闲娱乐生活的需求不断增加,养殖观赏鱼成为了一种越来越流行的养殖方式。
然而,不同种类的观赏鱼对水温要求不同,过高或过低的水温都会对其健康产生负面影响。
因此,设计一个能够自动调节水温的智能鱼缸温控系统势在必行。
二、设计原理智能鱼缸温控系统主要由传感器、单片机、执行器以及人机交互界面组成。
传感器用于实时监测水温,并将监测结果传输给单片机进行处理;单片机根据预设设定值与实际监测值之间的差异来判断是否需要调节水温;执行器负责控制加热器或制冷器的开关状态,以实现水温的调节;人机交互界面则提供了对系统参数进行设置和监测的功能。
三、硬件组成智能鱼缸温控系统的硬件组成主要包括传感器、单片机、执行器和人机交互界面。
传感器:系统采用高精度的水温传感器,能够准确测量鱼缸内水温,并将测量结果以数字信号的形式传输给单片机。
单片机:系统采用高性能的单片机作为控制核心,具有强大的处理能力和丰富的外设接口。
通过与传感器和执行器进行连接,实现对水温进行监测和调节。
执行器:系统根据单片机处理结果控制加热器或制冷器。
加热器通过加热元件将电能转化为热能,提高鱼缸内水温;制冷器则通过压缩循环原理将热量从鱼缸中排出,降低水温。
人机交互界面:为了方便用户对系统参数进行设置和监测,智能鱼缸温控系统还配备了一个直观友好的人机交互界面。
用户可以通过触摸屏或按钮等方式与系统进行交互,实现对温度设定值、工作模式等参数进行调整。
四、软件实现智能鱼缸温控系统的软件实现主要包括传感器数据采集、数据处理与控制策略、执行器控制以及人机交互界面。
传感器数据采集:单片机通过与传感器进行通信,实时获取鱼缸内的水温数据。
基于多学科融合的单片机教具设计

基于多学科融合的单片机教具设计设计背景:随着科技的发展和教育理念的变革,传统的教学模式已经不能满足对学生创新思维和实践能力培养的要求。
为了促进学科之间的交叉融合,培养学生的综合能力,本文提出了基于多学科融合的单片机教具设计的创新思路。
一、设计目标:1. 提高学生的跨学科综合应用能力;2. 培养学生的创新思维和实践能力;3. 促进学生的科技探究兴趣。
二、设计思路:1. 设计结构化的任务活动:通过设计一系列结构化的任务活动,以多学科融合为导向,让学生在解决实际问题的过程中培养跨学科的综合应用能力。
例如,利用单片机制作一个智能家居系统,要求学生了解电路原理、编程控制等知识,并将其应用到实际生活中,发挥单片机的功能。
2. 引导学生进行实践探究:通过设计一系列实践探究活动,引导学生主动观察、思考和实践,培养学生的创新思维和实践能力。
例如,学生可以设计一个自动浇花系统,通过单片机控制水泵的启停,实现植物的自动浇水。
在这个过程中,学生需要考虑到土壤湿度传感器的使用、电路的搭建以及编程的实现。
3. 提供合适的教具和实验平台:为了帮助学生更好地理解和掌握单片机的原理和应用,设计合适的教具和实验平台非常重要。
可以借助虚拟仿真软件或者实际硬件平台,为学生提供一个真实的实验环境,让他们能够在实践中学习和探索。
三、教具设计案例:以设计一个具有温湿度监测和报警功能的温室为例,介绍基于多学科融合的单片机教具设计。
1. 结构化任务活动:任务一:学生需要了解温室的基本原理、功能以及温湿度的监测与控制方法;任务二:学生需要学习单片机的基本原理、编程语言以及与温湿度传感器的连接与通信;任务三:学生需要设计温湿度监测和报警系统的电路图,并进行硬件搭建;任务四:学生需要编程实现温湿度监测和报警功能,并将其应用到实际温室中。
2. 实践探究活动:实践一:学生通过观察和调试单片机、传感器等硬件,了解其工作原理;实践二:学生通过实践编程,实现温湿度的实时监测和报警功能;实践三:学生通过实际操作和调试,调整和优化温湿度监测和报警系统的参数和功能。
单片机创意课程设计

单片机创意课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其内部结构及工作流程。
2. 学生能掌握单片机编程的基本语法和编程技巧。
3. 学生能了解并运用单片机在创意项目中的应用。
技能目标:1. 学生能运用所学知识,设计并实现具有实用性和创新性的单片机项目。
2. 学生能通过编程和调试,使单片机实现预定的功能。
3. 学生能运用跨学科知识,对单片机项目进行优化和改进。
情感态度价值观目标:1. 学生对单片机及其应用产生浓厚兴趣,培养主动探究和实践的精神。
2. 学生在团队合作中,学会相互尊重、沟通和协作,培养集体荣誉感。
3. 学生通过课程学习,认识到科技对社会发展的作用,增强创新意识和责任感。
课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和创新能力。
学生特点:学生具备一定的电子基础和编程能力,对单片机有一定了解,但对创新项目的实践经验较少。
教学要求:结合学生特点,注重理论与实践相结合,鼓励学生进行创新设计,提高学生的综合运用能力。
在教学过程中,关注学生的个体差异,提供个性化指导,确保每位学生都能在课程中取得进步。
通过课程目标的实现,使学生具备实际应用单片机解决现实问题的能力。
二、教学内容1. 单片机基础知识:介绍单片机的内部结构、工作原理、性能特点,使学生了解单片机的基本概念和功能。
教材章节:第一章 单片机概述2. 单片机编程语言:讲解单片机编程的基本语法、指令系统,使学生掌握编程方法和技巧。
教材章节:第二章 单片机编程基础3. 单片机外围设备:介绍单片机常用的外围设备,如LED、蜂鸣器、传感器等,使学生了解其功能和用法。
教材章节:第三章 单片机外围设备4. 单片机项目设计:结合实际案例,讲解单片机项目设计的方法和步骤,引导学生进行创新设计。
教材章节:第四章 单片机项目设计与实践5. 单片机编程与调试:教授单片机程序编写、调试和下载的方法,提高学生的实践能力。
教材章节:第五章 单片机编程与调试6. 创意项目实践:组织学生进行创意项目实践,鼓励学生运用所学知识解决实际问题。
单片机产品设计与开发课程的创新实践

单片机产品设计与开发课程的创新实践单片机产品设计与开发是一门应用性较强的课程,其目标是培养学生具备单片机产品的设计与开发能力。
在传统的单片机课程中,学生多数只是通过课堂讲解和实验演示来学习相关知识,缺乏实际应用和产品设计的实践经验。
为了提高学生的实践能力,我们需要进行创新实践。
可以通过实践项目作为主要教学方式。
学生可以选择自己感兴趣的项目进行创新设计和开发,例如智能家居控制系统、智能车等。
通过实际操作,学生可以掌握单片机的基本原理和使用方法,并且了解产品设计与开发的完整流程。
这种项目实践可以使学生将所学知识应用于实际,并且培养学生的创新和解决问题的能力。
在实践过程中引入跨学科的知识。
单片机产品设计与开发需要涉及到多个学科的知识,如电子电路、嵌入式系统、传感器技术等。
在教学中可以引入相关的跨学科知识,并让学生了解和掌握这些知识,以提高他们的综合能力和创新能力。
可以邀请其他学科的教师进行联合教学,或者开设相关的选修课程。
可以通过参与实际的竞赛或项目合作来进行创新实践。
学生可以参加一些单片机设计和开发的竞赛,如创客比赛、电子设计竞赛等。
通过与其他学生的交流和竞争,学生可以提升自己的技术水平和创新能力。
还可以与企业或研究机构进行合作项目,学生可以亲身参与项目的设计与开发,了解实际的工程实践和需求。
可以在课程中加入教学资源的创新。
除了传统的讲解和实验,可以使用一些先进的教学资源,如虚拟实验室、虚拟仿真软件等。
通过这些资源,学生可以进行更加真实和复杂的实践操作,从而提高他们的实践能力和操作技巧。
还可以引入在线学习平台和社交媒体工具,让学生之间可以进行互动交流和合作。
单片机产品设计与开发课程的创新实践对于学生的能力培养和创新能力的提升具有重要意义。
在实践项目中引入跨学科的知识,参与竞赛和项目合作,以及使用先进的教学资源,可以使学生真正掌握单片机产品设计与开发的技能,并且培养其创新思维和解决问题的能力。
这样的创新实践教学模式将促进学生的综合素质和就业竞争力的提高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全院选修课程A VR单片机嵌入式系统入门作业题目:基于AVR单片机mega16的密码防盗键盘设计学生姓名: X X X专业班级:自动化09-1学号: 5409010101xx院系:电气信息工程学院密码防盗键盘摘要:本实验是基于A VR mega16 单片机所设计的,可以实现键位与数字动态显示的一种新型密码防盗键盘。
通过单片机内部产生随机数,使用LED数码七段数码管予以显示,每一个数码管对应一个键位。
单片机对各个键位进行扫描,确定键位的输入。
关键词:mega16七段数码管ULN2003 密码防盗一、目的、用途、功能1. 目的:设计一种投资少,简单易行,仅仅只是在现在的设备的基础之上稍加改造,又能从根本上解决摄像头拍摄盗取密码的设备。
2.用途与功能:我们就设想让键上的10个数字位置分布可变。
10个键上的数字是由七段数码管显示。
每次取款时,键盘上数字的分布都会随机变化。
因而知道了键的位置并不能绝对判断出键上的数字是多少。
因此会给犯罪分子获得提款人的密码造成麻烦,从而解决摄像头盗取密码的难题。
二、硬件设计2.1 硬件设计思想键盘的数字和键位关系不固定,而且通过单片机内部产生随机数,通过LED数码管显示出来,每一个数码管对应一个键位。
基本设备是基于AVR单片机,外围设备采用的是12个七段数码管,2个ULN2003芯片,11个七段数码管, 1个74LS248芯片,若干电阻,电源电池。
部分硬件方案论述1 .七段数码管扫描显示方式的方案比较方案一:静态显示方式:静态显示方式是指当显示器显示某一字符时,七段数码管的每段发光二极管的位选始终被选中。
在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制。
静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。
其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。
随着显示器位数的增加,需要的I/O口线也将增加。
方案二:动态显示方式:动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。
对于每一位显示器来说,每隔一段时间点亮一次。
显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。
通过调整电流和时间参数,可以既保证亮度,又保证显示。
若显示器的位数不大于8位,则显示器的公共端只需一个8位I/O口进行动态扫描(称为扫描口),控制每位显示器所显示的字形也需一个8位口(称为段码输出)。
动态显示器的优点是节省硬件资源,成本较低。
但在控制系统运行过程中,要保证显示器正常显示,CPU必需每隔一段时间执行一次显示子程序,占用CPU大量时间,降低了CPU的工作效率,同时显示亮度较静态显示器低。
由于AVR ATmega16 单片机本身提供的I/O口有限,因此我们选择方案二——动态扫描方式。
扫描方式中在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的约1ms,但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
节约了电能,节省了I/O口。
2. 键盘连接方式方案比较方案一:独立式键盘一个具有4个按键的独立式键盘,每一个按键的一端都接地,另一端接mega16的I/O 口。
独立式键盘每一按键都需要一根I/O线,占用mega16的硬件资源较多。
因此独立式键盘只适合按键较少的场合。
键盘是一组按键或开关的集合,键盘接口向计算机提供被按键的代码。
特点:使用方便、结构复杂、成本高。
方案二:矩阵式键盘我们采用4×3矩阵式键盘,键盘的行线X0~X3通过电阻接+5V,当键盘没有键闭合时,所有的行线和列线断开,行线X0~X3均呈高电平。
当键盘上某一键闭合时,该键所对应的行线与列线短路,此时该行线的电平将由被短路的列线电平所决定。
如果将行线接至单片机的输入端口,列线接至单片机的输出端口,则在单片机的控制下使列线Y0为低电平,其余三根列线Y1、Y2、Y3均为高电平,然后单片机读输入口状态(即键盘行线状态),若X0、X1、X2、X3均为高电平,则Y0这一列上没有键闭合,如果读出的行线状态不全为高电平,则为低电平的行线和Y0相交的键处于闭合状态。
如果Y0这一列没有键闭合,紧接着使列线Y1为低电平,其余列线为高电平,用同样的方法检查Y1这一列有无键闭合,如此类推。
这种逐行逐列地检查键盘状态的过程称为对键盘的扫描。
CPU对键盘的扫描可以采取程序控制的随机方式,CPU空闲时才扫描键盘;也可以采取定时控制方式,每隔一段时间,CPU对键盘扫描一次;还可以采用中断方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘发出的中断请求,对键盘进行扫描,以识别哪一个键处于闭合状态,并对键输入信息作相应处理。
因为如果采用独立式键盘AVR mega16的I/O口对于方案一来说将是远远不够用的,为了节省I/O口,使我们的设计能够顺利进行,我们选用方案二——矩阵连接式键盘。
为了能够较为简单的编程,和节省CPU的资源,我们采用定时扫描,每隔一段时间,CPU对键盘扫描一次,并将键值读入。
硬件电路图图1 硬件电路图图2 原理图硬件单元1. 键盘输入单元:这是用户使用时将密码输入到银行或单片机内的输入设备,具体结构构成见图:采用12个按键开关,分别代表0~9十个数字输入键位,一个确认键和一个取消键。
采取矩阵式键位设计,此举为减少对单片机的I/O口的使用,同时也是的我们键盘的的外形更好看,使用更人性化。
键盘的航线和列现分别接AVR单片机的PORTA0~6七个端口。
对键盘的识别方式我们采取行扫描法。
具体使用由编程由单片机完成。
图3 输入设备结构图2. 显示单元:此设备是用户使用密码防盗键盘的的显示装置,用户通过它来观看键位数字的信息,找到每个键位所对应的密码数字,然后将自己的密码按照显示输入到单片机。
我们采用10个七段数码管,用来显示0~9十个数字,它们分别放在每个按键的上部,它所显示的数字即为下部按键的所输入的数字。
为节约单片机的I/O口,对数码管的显示我们采用单片机动态显示方式。
我们采用共阴接法,每个共阴极分别接一个200Ω的电阻,用来限流保护七段数码管。
在实际焊接中,我们先对每一个数码管进行测定,找出其对应的a, b, c, d, e, f, g数码管的显示段,然后将10个数码管的a显示段全部连接到一起,并接单片机的PORTB0,其他的所有b显示段,c显示段…一直到g显示段分别连接到一起,然后再分别依次连接到单片机的PORTB1~6。
由于所有的a, b, c, d, e, f, g数码管的显示段都连在一起,由于单片机的I/O口输出电流最高可输出40mA的电流,而七段数码管的共阴极端口需要100mA多的电流驱动,为提高电流驱动能力,我们采用ULN2003数码芯片,其作用是放大共阴极电流,相当于一个集成了多个三极管的芯片。
(之所以没有选择三级管,是因为三极管引脚多,占用过多的空间,焊接也不方便),共阴极单个接对应的ULN2003数码芯片,然后再由ULN2003数码芯片接到单片机的I/O口PORTD0~7和PORTC0~2。
3. 验证显示装置:图5 验证显示装置图三、软件1 . 软件基本思想:●键盘的不间断扫描。
●10个七段数码管的动态显示。
●键盘键位输入信号的处理。
●外部验证显示数码管的即时显示。
2. 程序框图图6 主程序图3. 程序简述初始化后单片机产生随机数,将随机数以动态扫描的方式显示于七段数码管,同时还对键盘进行实时扫描,在确认有按键按下后,单片机读取键值,并将键值通过验证模块显示出来。
当按下确认键后,单片机将会做出反应,所有的七段数码管将终止显示,此后如果再有按键按下也不会有任何反应。
当此时取消键按下,单片机将重新初始化,新一轮的键盘扫描将开始。
4 . 程序代码//ICC-AVR application builder : 2009-5-30 12:57:01// Target : M16// Crystal: 4.0000Mhz#include <iom16v.h>#include <macros.h>char word[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; char num[10]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90}; char led[10],shu[10],code;void port_init(void){PORTA = 0x70;DDRA = 0x8F;PORTB = 0x00;DDRB = 0xFF;PORTC = 0x00; //m103 output onlyDDRC = 0xC3;PORTD = 0x00;DDRD = 0xFF;}//call this routine to initialize all peripheralsvoid init_devices(void){char i;for(i=0;i<10;i++)led[i]=shu[i]=0x00;CLI(); //disable all interruptsport_init();MCUCR = 0x00;GICR = 0x00;TIMSK = 0x00; //timer interrupt sourcesSEI(); //re-enable interrupts//all peripherals are now initialized}//延时子程序void delay_ms(char n){char i,j;for(i=0;i<n;i++){for(j=0;j<1000;j++);}}// 是否有键按下子程序char pressed(void){DDRA=0x8F;PORTA=0x70;if(PINA!=0x70) return 1;else return 0;}//led显示子程序void display(void){char i;for(i=0;i<8;i++){PORTB=led[i]|(PINB&0x80);PORTD=0x01<<i;delay_ms(1);}PORTD=0x00;PORTB=led[8],PORTC=0x01|PINC;delay_ms(1);PORTB=led[9],PORTC=0x10|PINC;delay_ms(1);PORTC=0x00|PINC;}//键盘扫瞄子程序char keyscan(void){char j=0x77;display();display();//延时消抖do{PORTA=j|0x70;j>>=1;}while(PINA&0x70==0x70);while(pressed())display();//等待按键释放 display();display();//延时消抖return PINA;}//简单随机数列子程序void sj(void){char a,i;a=rand(10);for(i=0;i<a;i++)led[10-a+i]=word[i],shu[10-a+i]=num[i]; for(i=a;i<10;i++)led[i-a]=word[i],shu[i-a]=num[i];}main(){init_devices();while(1){if(pressed()){code=keyscan();switch(code){case 0x5E:sj();display();break;case 0x5D:PORTA=(shu[2]<<3)|(0x7F&PINA);PORTB=(shu[2]<<3)&0x80|(0x7F&PINB);PORTC=(shu[2]&0xC0)|(0x3F&PINC);break;case 0x5B:PORTA=(shu[1]<<3)|(0x7F&PINA);PORTB=(shu[1]<<3)&0x80|(0x7F&PINB);PORTC=(shu[1]&0xC0)|(0x3F&PINC);break;case 0x57:PORTA=(shu[0]<<3)|(0x7F&PINA);PORTB=(shu[0]<<3)&0x80|(0x7F&PINB);PORTC=(shu[0]&0xC0)|(0x3F&PINC);break;case 0x3E:PORTA=(shu[7]<<3)|(0x7F&PINA);PORTB=(shu[7]<<3)&0x80|(0x7F&PINB);PORTC=(shu[7]&0xC0)|(0x3F&PINC);break;case 0x3D:PORTA=(shu[8]<<3)|(0x7F&PINA);PORTB=(shu[8]<<3)&0x80|(0x7F&PINB);PORTC=(shu[8]&0xC0)|(0x3F&PINC);break;case 0x3B:PORTA=(shu[4]<<3)|(0x7F&PINA);PORTB=(shu[4]<<3)&0x80|(0x7F&PINB);PORTC=(shu[4]&0xC0)|(0x3F&PINC);break;case 0x37:PORTA=(shu[9]<<3)|(0x7F&PINA);PORTB=(shu[9]<<3)&0x80|(0x7F&PINB);PORTC=(shu[9]&0xC0)|(0x3F&PINC);break;case 0x6E:init_devices();break;case 0x6D:PORTA=(shu[6]<<3)|(0x7F&PINA);PORTB=(shu[6]<<3)&0x80|(0x7F&PINB);PORTC=(shu[6]&0xC0)|(0x3F&PINC);break;case 0x6B:PORTA=(shu[5]<<3)|(0x7F&PINA);PORTB=(shu[5]<<3)&0x80|(0x7F&PINB);PORTC=(shu[5]&0xC0)|(0x3F&PINC);break;case 0x67:PORTA=(shu[3]<<3)|(0x7F&PINA);PORTB=(shu[3]<<3)&0x80|(0x7F&PINB);PORTC=(shu[3]&0xC0)|(0x3F&PINC);break;}}display();}}11。