单片机数码管与独立按键实验实验报告7篇

篇一:单片机数码管与独立按键实验实验报告

  

  单?机原理独?按键识别单?机原理实验报告宁德师范学院计算机系实验报告(2014—2015学年第2学期)课程名称单?机原理实验名称独?按键识别专业计算机科学与技术(?师)年级12级学号B2012102147姓名王秋指导教师杨烈君实验?期2015.5.2、创建?个Keil应?程序:新建?程项??件;为?程选择?标器件(项?创建源程序?件并输?程序代码;保存创建的源程序项??件;把源程序?件添加到项?中。、把程序经过编译后?成的HEX?件添加到仿真电路中的处理器中(编辑元件→?件路径)程序代码:1.实现单按键控制Led灯闪烁#include"reg51.h"#defineucharunsignedcharsbitLed1=P1^0;sbitKey=P3^2;ucharMode=0;

  图2单按键多功能识别,控制4路Led灯闪烁的计数器效果,按?下数值加1#include"reg51.h"#defineucharunsignedchar#definedisp_null10sbitKey=P3^2;ucharcodetab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};共阳数码管显?0~9的段码表

  图30-99的计数器效果,按?下数值加10-99码表(按?次开始计时,第?次停?,第三次清零)#include"reg51.h"#defineucharunsignedchar#definedisp_null10sbitKey=P3^2;ucharcodetab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};共阳数码管显?0~9的段码表ucharDispBuf[8];ucharsec=0;uchartemp=30;

  图40-99码表,按?次开始计时,第?次停?

  图73按键实现时钟的调整,KEY1选择模式,KEY2+,KEY3-图83按键实现时钟的调整,KEY1选择模式,KEY2+,KEY3-

  注:1、报告内的项?或设置,可根据实际情况加以补充和调整2、教师批改学?实验报告应在学?提交实验报告10?内

篇二:单片机数码管与独立按键实验实验报告

  

  第

  组

  .

  西华大学实验报告(机械类)

  开课学院及实验室:机械工程与自动化学院运算机机房

  实验时刻

  :2021年4月7日

  学

  生

  姓

  名

  学生所在学院

  课

  程

  名

  称

  实验项目名称

  指

  导

  教

  师

  罗茂梁

  学

  号

  36成

  绩

  年级/专业/班

  课

  程

  代

  码

  项

  目

  代

  码

  项

  目

  学

  分

  2010级机制7班

  机械工程与自动化学院

  单片机原理及应用

  键盘、LED数码管显示实验

  张恕远

  8417421一、实验目的把握独立键盘、LED数码管的电路连接和编程方式。

  二、实验内容

  (1)编写程序,按KEY1只有红灯亮;按KEY2只有黄灯亮;按KEY3只有绿灯亮。

  (2)开始后LED数码管显示0,每按KEY1一次,数码管显示加1,至9后,在循环从0显示到9。

  三、实验电路

  +5VRP11k

  +5V1C130pFX1CRYSTAL19U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617C230pF18XTAL2+5VC322nF9RSTR11k293031PSENALEEAR2200R3200D2LED-REDR4200D3LED-YELLOW12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7AT89C5223456789KEY1KEY2KEY3Q1R72kNPNQ2NPNR62kR5200D1LED-GREEN+5V

  四、实验程序

  实验程序如下:

  1实验内容1#ifndef_KEY_H_#define_KEY_H_#include<>#defineucharunsignedchar

  #defineKEY10x01#defineKEY20x02#defineKEY30x03sbitKEY1_key=P2^0;sbitKEY2_key=P2^1;sbitKEY3_key=P2^2;

  voiddelayms(unsignedintx){unsignedcharj;while(x--)

  {for(j=0;j<123;j++){;}}}

  ucharKeyScanNUM(void){ucharkey=0;KEY1_key=1;KEY2_key=1;KEY3_key=1;if(KEY1_key==0){delayms(10);if(KEY1_key==0)key=KEY1;elsekey=0;}if(KEY2_key==0){delayms(10);if(KEY2_key==0)key=KEY2;elsekey=0;}if(KEY3_key==0){delayms(10);if(KEY3_key==0)key=KEY3;elsekey=0;}returnkey;}#endif

  #include""sbitled_red=P1^4;验内容2#ifndef_KEY_H_#define_KEY_H_#include<>#defineucharunsignedchar#defineKEY10x01sbitKEY1_key=P2^0;voiddelayms(unsignedintx){unsignedcharj;while(x--){for(j=0;j<123;j++){;}}}ucharKeyScanNUM(void){ucharkey=0;KEY1_key=1;if(KEY1_key==0){delayms(10);if(KEY1_key==0)key=KEY1;elsekey=0;}returnkey;}#endif#include<>sbitLED0=P2^5;

  ucharcodedispcope[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};voidmain(void){ucharnum=0;P0=dispcope[num];LED0=0;while(1){

  ucharkey=KeyScanNUM();if(key==KEY1){num++;

  if(num>9)num=0;P0=dispcope[num];LED0=0;while(!KEY1);}}}

  五、实验步骤

  (1)依如实验原理图编写程序,用“keiluVision4”编译元件进行编译,如未通过,修改程序,直至通过。

  (2)用软件将所编程序的“HEX”码下载到实验板的STC89C52芯片中。

  (3)运行程序,按实验板右下侧的KEY一、KEY二、KEY3,观看LED中的红黄绿灯是不是按要求点亮,若是不符合要求,改写程序,按步骤(1)开始从头做实验,直至成功。

  (4)按一样的方式调试编写实验内容(2)的程序,直至调试成功。

  六、附录

  (1)参考程序在运行时必需一次按键,如何改成只按KEY1键,每按一次使对应的红、黄、绿LED依次点亮一个?

  答:添加常数x,x++,若是x>3,x=0.如此循环。X=1,2,3时,按KEY对应亮1个灯。

  (2)若是没有电路原理图,如何通过编程来获取LED数码管的段码?

  答:一样是在程序中附加一节段码表,然后在程序中依照要显示的字符用查表的方式查得段码,然后送到LED数码管的段选端。

篇三:单片机数码管与独立按键实验实验报告

  

  单片机实训报告(一)

  班

  级:测

  控901学

  号:

  姓

  名

  实用文档

  实验名称:键盘和数码管显示

  实验目的:熟悉掌握ZLG7289的功能和特性,ZLG7289芯片各引脚名称及功能和ZLG7289与微控制器的接口,ZLG7289的SPI接口和控制指令。同时进一步熟悉掌握keil软件的操作和编程。

  实验原理:ZLG7289是一款数码显示驱动和键盘扫描管理的芯片。主要有如下的特性:

  1.直接驱动8位共阴式数码管或64只独立的LED;

  2.管理多达64只按键,自动消除抖动;

  3.段电流可达15mA以上,位电流可达100mA;

  4.具有左移、右移、闪烁、消隐、段点亮等多种功能;

  5.与微控制器之间采用三线SPI总线接口,占用I/O资源少。

  电路主要由芯片ZLG7289、8位共阴极数码管、64键的键盘矩阵以及单片机构成。

  ZLG7289的控制电路图:

  实用文档

  电路的工作原理:

  当ZLG7289接收到单片机发出的指令(包括纯指令)后,经过读取、分析和处理,将会在数码管上显示相对应的操作指令。当ZLG7289检测到有效的按键时,KEY脚将从高电平变为低电平,并一直保持到按键结束。在此期间,如果ZLG7289接收到“读键盘数据指令”,则输出当前按键的键盘代码。

  ZLG7289芯片各引脚名称及功能:

  引脚

  名称

  实用文档

  说明

  1、23、5RTCC、Vcc

  NC

  Vss

  /CS

  接电源

  悬空

  接地

  片选输入端,低电平时,可向其发指令或读键盘。

  CLK

  同步时钟输入端,发送或读数据时,上升沿数据有效。

  DIO

  /INT

  串行数据输入/输出端。

  按键有效输出端,检测到有效按键时,输出低电平。

  10-16SG/KR0-SA/KR6段G-段A驱动输出/键盘行信号0-6。

  1DP/KR小数点驱动输出/键盘行信号7。

  18-25DIG0/KC0-DIG7数码管位选信号0-7/键盘列信号0-7。

  /KC26262OSC2OSC1/RST

  晶振输出信号。

  晶振输入信号。

  复位信号,低电平有效。

  Zlg7289与微控制器的接口

  ZLG7289使用SPI串行总线与微控制器接口。

  SPI接口

  SPI串行总线是Motorola公司推出的一种同步串行接口。通常它需实用文档

  要四条线,就可与微控制器之间实现全双工的同步串行通讯。SPI串行总线主要有如下的特性:

  1.采用主从模式(MasterSlave)架构,支持多Slave模式,一般只支持单Master,Master控制时钟。

  2.采用四线,实现全双工通信。

  图1SPI接口连线示意图

  SPI的数据传输时序模式

  SCLKMOSI

  SPIMaster接口定义了四种数据传输的时序模式。SPI总线工作于那种MISOSlave/SS时序模式下是由CPOL控制位和CPHA控制位决定的。它们分别表示时钟极性选择和时钟相位选择。

  CPOL控制位决定了设备激活后,而没有进行数据传输时,SCLK的空闲(Idle)电平是高电平还是低电平。

  SCLK(CPOL=0)SCLK(CPOL=1)CPHA控制位决定设备是在时钟信号的第一个跳变沿采样数据还12345678/SS是在第二个跳变沿采样数据。

  DATA(CPHA=0)

  DATA(CPHA=1)MSBMSB

  665544332211LSBLSB实用文档

  图2SPI的四种数据传输时序模式示意图

  ZLG7289的SPI接口:

  ZLG7289与微控制器的接口采用3线制的SPI串行总线。三条分别是/CS、CLK和DIO。其中DIO信号是双向的,在与微控制器相接时,要接到控制器的双向I/O上。操作ZLG7289的SPI接口,主要有三种时序。分别是单字节指令、带数据指令和读数据指令。如下所示:

  1SCLK(CPOL=0)T2T32345678/CSDATA(CPHA=0)T1MSB654321LSB图3单字节指令时序图

  注:在图3中,T1是/CS信号的建立时间,大约需要50μs。

  T2是时钟SCLK信号的高电平持续时间,大约是8μs。

  实用文档

  T3是时钟SCLK信号的低电平持续时间,大约是8μs。

  1SCLK(CPOL=0)T2T32345678T49T2T3/CSDATA(CPHA=0)T1MSB654321LSBMSB...

  图4带数据指令时序图

  1SCLK(CPOL=0)T2T32......

  8T512T7...T3T8/CSDATA(CPHA=0)T1T6MSB6...LSBMSB...1LSB图5读数据指令时序图

  注:图4中,T5命令字与输出数据之间的时间间隔,大约25μs

  T6输出数据建立时间,大约8μs。

  T7是输出数据时SCLK高电平持续时间,大约8μs。

  实用文档

  T8是DIO信号从输出状态切换到输入状态的时间,大约是5μs。

  实验内容:

  作业1:

  测试ZLG7289的功能,编写一段程序,使8位LED数码管从高位到低位分别显示8、7、6、5、4、3、2、1,闪烁后并消隐。然后对这8位数字进行左移或者右移。

  程序流程图如下图所示:

  开始初始化有按键?N发送测试指令Y左移或者右移?N最高位闪烁PY左移或右移消隐后显示数字8、7、6、5、4、3、2、1功能键处理程序

  作业2:

  列出C51与ANSIC之间的主要差别:

  实用文档

  不同系列的嵌入式系统的C编译器,根据它所对应的不同芯片系列有其各自的特点,在这里,以KEIL公司的针对51系列的KEILC51编译器为例,简要说明

  它与ANSI-C的主要区别,其它的编译系统与ANSI-C的差别,可具体参照指定编译系统手册,找出它们的不同之处。清楚嵌入式系统的C编译器与标准

  ANSI-C的区别是用C编译器系统进行嵌入式系统开发的前提条件。

  不同的嵌入式C编译系

  统之所以与ANSI-C有所不同,主要是由于它们所针对的硬件系统有其各自不同的硬件特点,对国内开发人员熟悉的51系列单片机,有着最为丰富的编译系

  统,其中最为出色的当属KEIL(也就是大家熟知的FRANKLING,但FRANKLING只相当于KEIL的早期产品,它是KEIL公司在美国销售时

  曾使用的一个品牌)。

  从头文件来说,51系列有不同的厂家,不同的系列产品,如仅

  ATMEL公司就有大家熟悉的89c2051、89c51、89c52以及大家不熟悉的89s8252等系列产品。它们都是基于51系列的芯片,唯一不同

  之处在于内部资源如定时器、中断、I/O等数量以及功能的不同,为了实现这些功能,只需将相应的功能寄存器的头文件加载在程序中就可实现它们所指定的不同

  功能。因此,KEILC51系列头文件集中体现了各系列芯片的不同功能。

  从数据类型来说,由于8051系列器件包含位操作空间和丰富的位操作指令,直接嵌入式C与ANSI-C相比,比ANSI-C多一种位类型,使得它能如同汇编一样,灵活的进行位指令操作。从数据存储类型来实用文档

  说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定

  变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模

  式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。

  从数据运算操作和程序

  控制语句以及函数的使用上来讲,它们几乎没有什么明显的不同,只是在函数的使用上,由于嵌入式系统的资源有限,它的编译系统不允许太多的程序嵌套,C语言

  的丰富的库函数对程序开发提供了很大的帮助,但它的库函数和ANSI-C也有一些不同之处,从编译相关的不同来说,由于51系列是8位机,扩展16位字符

  不被C51所支持,其次,ANSI-C所具备的递归特性不被C51所支持,在C51中,要使用递归特性,必须用REENTRANT进行申明才能使用。

  KEILC51与标准ANSI-C在库函数,由于部分库函数不适合嵌入式处理系统,因此被排除在外,如字符屏幕和图形函数,也有一些库函数继续使用,但这些库函数是厂家

  针对硬件特点相应开发的,它们与ANSI-C的构成及用法都有很大不同,如printf和scanf。在ANSI-C中这两个函数通常用于屏幕打和,接收

  字符,而在KEILC51中,它们则主要用于串行数据的收发。

  实用文档

  实用文档

篇四:单片机数码管与独立按键实验实验报告

  

  1

  摘要

  单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。在硬件电路的基础上加上软件程序的控制来实现本设计。其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。

  关键字:单片机、流水灯、数码管、控制系统

  SCMsincethenineteenseventies,withitshighprice,andaconvenientcompactattentionandgreatconcern.Thisdesignusesmsp430f249chipasthecontrolchip,torealizethecontroloftheLEDdigitaltubedisplaymatrixkeyboard.Throughtheinternalcontrolsinglechiptorealizethehardwaredesignofthecircuit,soastorealizethedetectionandrecognitionof4*4matrixkeyboard.4*4matrixkeyboardconnectedwiththeMCUP3port,andtheMCUP3.0P3.3portforakeyboardinput,MCUP3.4P3.7portasthelinesofkeyboardinput,andthenusetheP0.0P0.7astheoutputline,byapull-upresistordisplaydifferentcharacters"0Fondisplay".Controlwithsoftwareprogramsbasedonthehardwarecircuittorealizethedesign.Theworkingprocessis:firsttodeterminewhetherakeyispressed,ifnokeyispressed,itwillcontinuetotestthewholeprocedure,ifakeyispressed,the

  Keywords:SCM,waterlights,digitaltubes,controlsystem

  键盘控制流水灯和数码管实验报告

  目录

  一

  设计的目的....................................................................2二

  任务描述及方案设计

  ...................................................31.任务描述....................................................................................31

  2

  2.方案设计.....................................................................................3三

  硬件设计方案

  ...........................................................................31.Msp430f149单片机的功能说明.................................................32.显示器功能..................................................................................43.复位电路......................................................................................44.按键的部分..................................................................................45.74HC573的特点............................................................................46.流水灯和数码管电路原理图......................................................47.元器件清单..................................................................................4四

  程序设计方案...........................................................................51.用IAREmbeddedWorkbench软件编程序..............................................52.仿真电路图...................................................................................................6五

  实物实验...............................................................................1.实物图..........................................................................................................2.测试结果与分析.....................................................................................7六

  结论................................................................................................11八

  参考文献..........................................................................................16一、设计目的1、进一步巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文献查阅、报告撰写等基本技能

  ;

  2、培养学生实践动手能力及独立分析和解决工程实践问题能力;

  3、培养学生的团队协作精神、创新意思、严肃认真的治学态度和

  2

  3

  严谨求实的工作作风。二、任务描述及设计方案

  1.任务描述

  闭合按键1时,从P1.0—1.7逐个灯,并且P1.0亮一下,P1.1亮两下,P1.2亮三下,P1.3亮四下,P1.4亮五下,P1.5亮六下,P1.6亮七下,P1.7亮八下;再是P1.0亮一下,P1.0—1.1亮两下,P1.0—1.2亮三下,P1.0—1.3亮三下,P1.0—1.4亮五下,P1.0—1.5亮六下,P1.0—1.6亮七下,P1.0—1.7亮八下。

  闭合按键2时,先是从P1.0—1.7逐个灯亮,再是P1.0、P1.1—P1.6、P1.7两两灯亮,接着是P1.0、P1.1、P1.2—P1.6、P1.7每三个灯亮,最后是P1.0、P1.1、P1.2、P1.3—P1.4、P1.5、P1.6、P1.7每四个灯亮。

  闭合按键3时,从P1.0—P1.7逐个的亮,而且在P1.X灯亮过后紧接着前面的灯两两灯亮。

  7ESG-MPX4-CC数码管按a、b、c、d、e、f、g顺序组成“8”字形。

  2、设计方案

  实验此功能有两种方案,一种是使用传统的模拟电路,另一种是用单片机控制电路。我们选择单片机控制系统。其中系统工作原理为:

  我们利用循环移位指令,采用循环程序结构进行编程。我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现了“流水”效果了。

  以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。电平信号按照dp,g,e...a的顺序组合形成的数据字称为该字符对应的段码。7SEG-MPX4-CC是四个共阴二极管显示器,它的1234是阴极公共端。

  三、硬件设计方案

  1、单片机功能说明

  1CPU:MSP430系列单片机的CPU和通用微处理器基本相同,只是在设

  3

  4

  计上采用了面向控的结构和指令系统。MSP430的内核CPU结构是按照精简指令集和高透明的宗旨而设计的,使用的指令有硬件执行的内核指令和基于现有硬件结构的仿真指令。这样可以提高指令速度和效率,增强了MSP的实时处理能力。

  2存储器

  :存储程序、数据以及外围模块的运行控制信息。有程序存储器和数据存储器。对程序存储器访问总是以字形式取得代码,而对数据可以用字或字节方式访问。其中MSP430各系列单片机的程序存储器有ROM、OTP、EPROM和FLASH型。

  3外围模块

  :经过MAB、MDB、中断服务及请求线与CPU相连。MSP430不同系列产品所包含外围模块的种类及数目可能不同。它们分别是以下一些外围模块的组合:时钟模块、看门狗、定时器A、定时器B、比较器A、串口0、1、硬件乘法器、液晶驱动器、模数转换、数模转换、端口、基本定时器、DMA控制器等。

  2、显示器的功能

  显示器通常也称为监视器。显示器是属于电脑的I/O的设备,即输入输出设备。它可以分为CRT、LCD等多种。它是一种将一定的电文件通过特定的传输设备显示到屏幕上再到反射到人眼的显示工具。

  3、复位电路

  电阻给电容充电,电容的电压缓慢上升直到vcc,没到vcc时芯片复位脚近似低电平,于是芯片复位,接近vcc时芯片复位脚近高电平,于是芯片停止复位,复位完成。

  复位原理图

  4、按键部分

  4

  5

  4.1键盘的结构形式一般有独立式键盘和矩阵式键盘两种。

  独立式键盘就是各个按键相互独立,每个按键各接一个I/O接口线,而不会影响其他I/O接口线,所以我们在控制流水灯的三种闪法时用的是独立式键盘。

  矩阵式键盘又叫行列式键盘,在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

  矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

  ·键

  盘,的检测,首先要解决的问题是键盘抖动现象。消抖的方法有两种,软件消抖和硬件消抖。由于硬件消抖结构比软件复杂,所以本设计采用的是软件消抖的方法,既在程序中加入5毫秒的延时,延时后再次返回P3的值二次判断是否有键盘按下。

  5、74HC573的特性

  74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不是影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可与直接与系统总线接口并驱动总线,而不需要外接口。

  5

  6

  74HC573引脚图

  Z=高阻抗

  6

  7

  数码管引脚图

  6、流水灯和数码管电路原理图

  如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1—P1.7口的其他7个LED的点亮和熄灭的方法同LED1。要实现流水灯功能,我们只要将发光二极管LED1—LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们应该注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

  7SEG-MPX4-CC数码管就是阴极为数码管的公共端,按照发光管二极管的原理,当阳极接电源正极,阴极接电源负极,发光二极管点亮。换句话说,共阴极的数码管,当a,b,c,d,e,f,g脚分别接到电源的正极,而COM脚接的电源负极,此时相当于7个发光二极管同时点亮,并且显示数字“8”~~~所以某些类型的数码管称为7端数码管~~别漏了“dp”,是小数点~~共阳极的取反就是了

  7

  8

  P4.4P4.5P4.6P4.6.1流水灯和数码管电路原理图

  8

  9

  6.2独立按键控制流水灯部分

  9

  10

  6.3单片机复位部分

  7、元器件清单

  元器件

  单片机

  电阻

  发光二极管

  开关

  数码管

  电容

  芯片

  型号

  MSP430f2410LED-BIBY

  BUTTON

  7SEG-MPX4-CCCAP74HC573数目

  1111四、程序设计方案

  1、用IAREmbeddedWorkbench软件编程序

  #include#defineROWP4OUT

  //矩阵键盘的行宏定义

  #defineCOLP4IN

  //矩阵键盘的列宏定义

  #defineDPYOUTP1OUT

  //数码管输出口宏定义

  #defineucharunsignedchar#defineuintunsignedintucharkeyval;ucharm=0;ucharremain=0xff;uchartable1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};uchartable2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};uchartable3[]={0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};

  10

  11

  ucharseg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelay(uintn){

  uinti,j;

  for(i=0;i

  for(j=0;j<225;j++);}ucharkeyscan(){

  inti=0;

  ucharkey=0;

  ROW=0x0f;

  if((COL&0x0f)!=0x0f)

  {

  doi++;

  while(i<3000);

  ROW=0x7f;

  if((COL&0x0f)==0x0f)

  {ROW=0xbf;

  if((COL&0x0f)==0x0f)

  {ROW=0xdf;

  if((COL&0x0f)==0x0f)

  {ROW=0xef;

  if((COL&0x0f)==0x0f)

  key=17;

  elsekey=((ROW&0xf0)|(COL&0x0f));

  }

  elsekey=((ROW&0xf0)|(COL&0x0f));

  }

  elsekey=((ROW&0xf0)|(COL&0x0f));

  }

  elsekey=((ROW&0xf0)|(COL&0x0f));

  }

  returnkey;

  }voidfun1(){

  uinti,j;

  for(i=0;i<8;i++)

  for(j=0;j<=i;j++)

  {

  P3OUT=table1[i];delay(50);

  P3OUT=0X00;delay(50);

  11

  12

  }

  for(i=0;i<8;i++)

  for(j=0;j<=i;j++)

  {

  P3OUT=table2[i];delay(50);

  P3OUT=0X00;delay(50);

  }

  }

  voidfun2(){

  uinti;

  P3OUT=0X01;delay(100);

  for(i=1;i<8;i++)

  {P3OUT<<=1;delay(100);}

  P3OUT=0X03;delay(100);

  for(i=1;i<=4;i++)

  {P3OUT<<=2;delay(100);}

  P3OUT=0X07;delay(100);

  for(i=1;i<=3;i++)

  {P3OUT<<=3;delay(100);}

  P3OUT=0X0f;delay(100);

  P3OUT=~0X0f;;delay(100);}voidfun3(){

  uinti,j;

  for(i=0;i<8;i++)

  {

  P3OUT=table1[i];delay(100);

  P3OUT=0X00;delay(100);

  for(j=0;j

  {

  P3OUT=table3[j];delay(100);

  P3OUT=0X00;delay(100);

  }

  }

  }

  voidmain(void){

  WDTCTL=WDTPW+WDTHOLD;

  //keyval=17;

  P4DIR|=0Xf0;

  12

  13

  P1DIR|=0Xff;

  P1OUT|=0Xff;

  P3SEL=0X00;

  P3DIR|=0XFF;

  P3OUT&=~0xff;

  P2DIR|=0X00;

  P2IE=0X07;P2IES=0X07;

  _EINT();

  while(1)

  {

  delay(100);

  switch(keyscan())

  {

  case0xd7:DPYOUT=seg[0];remain=seg[0];break;

  case0x77:DPYOUT=seg[13];remain=seg[13];break;

  case0x7b:DPYOUT=seg[12];remain=seg[12];break;

  case0x7d:DPYOUT=seg[11];remain=seg[11];break;

  case0xb7:DPYOUT=seg[15];remain=seg[15];break;

  case0xbb:DPYOUT=seg[9];remain=seg[9];break;

  case0xbd:DPYOUT=seg[6];remain=seg[6];break;

  case0xbe:DPYOUT=seg[3];remain=seg[3];break;

  case0xdb:DPYOUT=seg[8];remain=seg[8];break;

  case0xdd:DPYOUT=seg[5];remain=seg[5];break;

  case0xde:DPYOUT=seg[2];remain=seg[2];break;

  case0xe7:DPYOUT=seg[14];remain=seg[14];break;

  case0xeb:DPYOUT=seg[7];remain=seg[7];break;

  case0xed:DPYOUT=seg[4];remain=seg[4];break;

  case0xee:DPYOUT=seg[1];remain=seg[1];break;

  case0x7e:DPYOUT=seg[10];remain=seg[10];break;

  default:DPYOUT=remain;break;

  }

  switch(m)

  {

  case1:fun1();break;

  case2:fun2();break;

  case3:fun3();break;

  default:break;

  }

  }}#pragmavector=PORT2_VECTOR__interruptvoidPORT2(void)

  13

  14

  {P2IFG=0x00;if(P2IN!=0X07)

  {

  switch(P2IN&0X07)

  {

  case0X06:m=1;break;

  case0X05:m=2;break;

  case0X03:m=3;break;

  default:m=0;break;

  }

  }}

  2.

  仿真电路图

  闭合按键1时的仿真图

  闭合按键2时的仿真图

  14

  15

  闭合按键3时的仿真图

  数码管仿真图

  五、实物实验

  1、实物图

  15

  16

  2.测试结果与分析

  16

  17

  经过用软件做硬件仿真后,将程序烧进MSP430单片机后,通过独立式键盘控制流水灯的三种“流”法,按下某一个键时,流水灯就会实现编程所设计的“流”法,而矩阵键盘则是通过特定的按键控制数码管显示程序控制的字符,从0~9,a,b,c,d,e,f字符的显示,复位按键则是是单片机复位。

  六、心得体会

  通过这段时间课程设计实验设计大大培养了我们的动手能力和同学间的相互合作精神。从一开始看到这个题目就在想怎样才能设计出一个正确的原理图,这个很重要,也是所有工作的基础,如果要完成原理图设计工作,这就要求我们有足够的理论知识储备,这个功夫就在平时了;原理图的设计是理论和实践的交叉点,原理图设计好之后,我们可以利用仿真软件进行仿真,这样便可以我们设计的准确性,积累了经验并且掌握了软件的基本使用方法和一些快捷的用途。当电路板做好之后,就是焊接器件了,需要相互共同合作,这次试验增强了我们的解决问题能力和团队合作能力。

  七、参考文献

  【1】康华光。

  模拟电子技术基础

  高等教育出版社,2005【2】康华光。

  数字电子技术基础

  高等教育出版社,2005【3】秦

  龙。

  MSP430单片机常用模块与综合系统实例精讲,20017

  18

  18

篇五:单片机数码管与独立按键实验实验报告

  

  单片机课程实验报告目录实验一:单灯闪烁......................................................................................................................................................1实验二:炮马灯设计..................................................................................................................................................5实验三:以循环方式实现流水灯..............................................................................................................................9实验四:中断控制流水灯........................................................................................................................................13实验五:音乐门铃实验............................................................................................................................................18实验六:交通路口读秒计时显示器........................................................................................................................23实验七:矩阵式键盘的扩建....................................................................................................................................27实验八:独立式案件................................................................................................................................................32实验九:小小显示屏...................................................................................................................................................35实验一:单灯闪烁实验目的1.熟悉单片机I/O接口的线路连接。2.学习仿真器的使用方法。3.学习单片机I/O接口的控制方法。实验器材一个470欧姆的电阻,一个二极管,一个+5V电源,一个AT89C51。实验原理一个470欧姆的电阻,一个二极管,一个+5V电源,一个AT89C51,KeiluVision2软件,ISIS7Professional软件。软件程序ORG0000HSTARTP1.0ACALLSETBACALLAJMPDELAY:MOVD1:MOVD2:MOVNOPDJNZDJNZDJNZRETENDDELAYP1.0DELAYSTARTR5,#4R6,#200R7,#123R7,$R6,D2R5,D11硬件电路2效果描述单片机的P1.0控制1只LED灯,实现其亮灭的变化,间隔0.2s.操作截图操作截图3实验体会通过这次实验可以我们可以知道:(1)这是通过指令来实现的,如果使用了某条指令,CPU在执行该指令时就会完成相应的操作,通过指令能实现对单片机I/O接口或其他外部设备的控制。计入,P1.0表示从P1.0引脚输出高电平“1”,CLRP1.0表示从P1.0引脚输出低电平“0”.(2)随着电阻值的增大,灯泡变暗(3)发现问题要及时解决,不能拖延,可以请教老师和同学。4实验二:炮马灯设计实验目的1.进一步熟悉单片机I/O接口的线路连接。2.学习数据传送指令和位移指令的应用。3.学习单片机输出口的控制。4.进一步熟悉仿真器的使用方法。5.学习程序固化及系统脱机运行的方法。实验器材一个+5V电源,八个二极管,八个470欧姆的电阻,一个AT89C51,KeiluVision2软件,ISIS7Professional软件。实验原理1.用单片机的P1口控制8只LED灯,每次点亮两只,完成P1.0P1.1→P1.2P1.3→P1.4P1.5→P1.6P1.7→P1.0P1.1的循环闪烁,时间间隔0.2s。软件程序ORGSTART:MOVA,#3FHMAIN:RLARL,AMOVP1,AACALLDELAYAJMPMAINDELAY:MOVR5,#4D1:MOVR6,#200D2:MOVR7,#123NOPDJNZR7,$DJNZR6,D2DJNZR5,D1RETEND硬件电路5效果描述1.单片机的P1口控制8只LED灯,每次点亮两只,完成P1.0P1.1→P1.2P1.3→P1.4P1.5→P1.6P1.7→P1.0P1.1的循环闪烁,时间间隔0.2s。操作截图实验体会1.2.通过本次试验可以知道:只要保证每次从P1口送出的数据中有两个保持电平,就可以将相应的灯点亮。单片机的P1口控制8只LED灯,每次点亮两只,完成P1.0P1.1→P1.2P1.3→P1.4P1.5→P1.6P1.7→P1.0P1.1计进一步加深了。实验三:以循环方式实现流水灯实验目的:1.进一步熟悉单片机I/O接口的线路连接。2.学习循环的编程技术。实验器材一个+5V电源,八个二极管,八个470欧姆的电阻,一个AT89C5,KeiluVision2软件,ISIS7Professional软件1。实验原理实验要求用单片机的P1口控制8只LED灯,每次点亮两只,完成P1.0→P1.1→P1.2→P1.3→P1.4→P1.5→P1.6→P1.7的一次单灯点亮,间隔0.2s,接下来8只LED灯全灭一次,间隔0.2s;接着做P1.7→P1.6→P1.5→P1.4→P1.3→P1.2→P1.1→P1.0的一次点亮,间隔0.2s,接下来0000H灭一次,间隔0.2s,再从开始状态循环,8只LED灯呈现出流水灯的状态。软件程序ORG0000HSTART:MOVA,#0FFHMOVR0,#8CLRCLOOP1:RLCAMOVP1,AACALLDELAYDJNZR0,LOOP1MOVA,#0FFHMOVP1,AACALLDELAYMOVA,#0FFHMOVR0,#8CLRCLOOP2:RRCAMOVP1,AACALLDELAYDJNZR0,LOOP2MOVA,#0FFHMOVP1,AACALLDELAYAJMPSTARTDELAY:MOVR5,#4D1:MOVR6,#200D2:MOVR7,#123NOPDJNZR7,$DJNZR6,D2DJNZR5,D1RETEND硬件电路1效果描述单片机的P1口控制8只LED灯,每次点亮两只,完成P1.0→P1.1→P1.2→P1.3→P1.4→P1.5→P1.6→P1.7的一次单灯点亮,间隔0.2s,接下来8只LED灯全灭一次,间隔0.2s;接着做P1.7→P1.6→P1.5→P1.4→P1.3→P1.2→P1.1→P1.0的一次点亮,间隔0.2s,接下来8只LED灯全灭一次,间隔0.2s,再从开始状态循环,8只LED灯呈现出流水灯的状态。操作截图11实验体会1.2.通过本次试验我更加熟悉了I/O接口的线路连接。3.学会了制作灯的循环点亮。我对本次实验有了更深层的理解。12实验四:中断控制流水灯实验目的1.学习外部中断的基本方法。2.掌握中断处理程序的编制方法。3.实验器材一个+5V电源,八个二极管,八个470欧姆的电阻,一个AT89C51,KeiluVision2软件,ISIS7Professional软件。实验原理在程序正常运行时,P1口的8个LED灯座单灯左移8次之后单灯右移7次,如此循环;中断时(即I/N/T/O/)按键按下)P1口的8个LED灯闪烁3次(即全亮,全灭3次)。软件程序ORG0000HLJMPSTARTORG0003HLJMPINT_0ORG0100HSTART:MOVSP,#60HMOVIE,#81HSETBIT0L1:MOVA,#0FFHMOVR0,#8CLRCL2:RLCAMOVP1,AACALLDELAYDJNZR0,L2MOVR0,#7L3:RRCAMOVP1,AACALLDELAYDJNZR0,L3AJMPL1DELAY:MOVR5,#4D1:MOVR6,#200D2:MOVR7,#123NOPDJNZR7,$DJNZR6,D2DJNZR5,D113INT_0:RETPUSHPUSHPSWSETBMOVRS0ACCA,#00HL4:MOVMOVLCALLP1,AR2,#6CPLDJNZADELAYPOPPOPACCR2,L4RETIPSWEND硬件电路1415效果描述程序正常运行后,P1口德8个LED灯做单灯左移8次,之后再做右移7次,如此循环;中断时即按下开关,P1的8个LED灯闪烁3次,即全亮全灭。操作截图16实验体会1.中断控制流水灯的主要任务是8个LED灯循环左移,右移;在终端服务程序中完成的功能是8个灯闪烁3次。2.中控制流水灯的闪烁后,我对流水灯的理解进一步加深。对实训有了更大的兴趣。1实验五:音乐门铃实验实验目的1.掌握终端与定时/技术中和程序的设计方法。2.学习音乐门铃的设计过程。实验器材一个+5V电源,一个喇叭,一个LM386,五个接地电源,一个470欧姆电阻和一个10K欧姆电阻,一个0.0047uF二极管,一个0.1uF二极管,一个10uF二极管,一个47uF二极管和一个AT89C51,KeiluVision2软件,ISIS7Professional软件。实验原理利用程序来控制单片机某个口线的高电平或低电平,则在该口上就能产生一定频率的方波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制干低电平的持续时间,就能改变输出频率,从而改变音调。软件程序ORG0000HLJMPMAINORG001BHLJMPTIM1ORG0100HMAIN:MOVTMOD,#10HMOVIE,#88HMAIN1:MOV60H,#00HNEXT:MOVA,60HMOVDPTR,#TABLEMOVCA,@A+DPTRMOVR1,AJZSTOPANLA,#0FHMOVR6,AMOVA,R1SWAPAANLA,#0FHJNZSINGCLRTR1AJMPDTSING:DECAMOV22H,ARLAMOVDPTR,#TABLE1MOVTH1,AMOV21H,AMOVA,22HRLA1INCMOVCAMOVA,@A+DPTRMOVTL1,ADT:SETB20H,ATR1INCLCALL60HDELAYSTOP:CLRAJMPNEXTTIM1:PUSHAJMPMAIN1TR1PUSHACCMOVPSWMOVTH1,21HCPLPOPP1.0TL1,20HPOPPSWDELAY:MOVRETIACCD2:R5,#2D3:MOVMOVR4,#187DJNZR3,#248DJNZR3,$DJNZR4,D3DJNZR5,D2R6,DELAYTABLE1:RETDWDW64260,64400,64524,64580DW64684,64777,64820,6489864968,65030,65058,65110TABLE:DW65157,65178,65217;1DBDB82H,01H,81H,94H,84HDB0B4H,0A4H,04HDB82H,01H,81H,94H,84H;20C4H,0B4H,04HDBDB82H,01H,81H,0F44H,0D4HDB0B4H,0A4H,94HDB0E2H,01H,0E1H,0D4H,0B4HDB0C4H,0B4H,04HEND001硬件电路2效果描述按下开关,即可弹奏出美妙的“生日快乐“歌曲。操作截图21实验体会1.2.通过本次试验,我掌握了中断定时更深一层的了解了音乐门铃的制作过程。/技术综合程序的方法。22实验六:交通路口读秒计时显示器实验目的1.学习LED数码管的驱动方法。2.掌握两位LED数码管的编制方法3.掌握单片机基本I/O口的控制应用实验器材一个89C51,两个7447,四个+5V电源,十六个470欧姆的电阻。,两个SEG,KeiluVision2软件,ISIS7Professional软件。实验原理:利用两只共阳极的LED数码管模拟交通路口的读秒显示器,一60s为例。用AT89C51芯片的P1.0—P1.3经7447扩展个位的七段显示器,P1.4—P1.7经7447扩展个位的十段显示器。软件程序ORG0000HAJMPMAINORG0001HMAIN:MOVR4,#60HLOOP:MOVP1,R4LCALLDELAYMOVA,R4CLRCSUBBA,#01HJBAC,BCDMOVR4,AAJMPLOOPBCD:JCMAINSUBBA,#06HMOVR4,AAJMPLOOPDELAY:MOVR5,#50D1:MOVR6,#50D2:MOVR7,#248DJNZR7,SDJNZR6,D2DJNZR5,D1RETEND23硬件电路效果描述按下开关,交通灯呈现出0—9的动态显示。24操作截图25实验体会我在本次实验中学习LED数码管的驱动方法,掌握两位LED数码管的编制方法,以及单片机基本I/O口的控制应用。另外当实验顺利完成时我特别有成就感。26实验七:矩阵式键盘的扩建实验目的1.熟悉矩阵式键盘扫描的基本原理。2.学习单片机基本I/O口真是键盘的电路设计方法。3.学习矩阵式键盘程序设计基本方法。实验器材一个+5V电源,四个200欧姆的电阻,四个二极管,一个AT89C51,16个开关,KeiluVision2软件,ISIS7Professional软件。实验原理1.用P1口扩展4*4矩阵式键盘,简直分别为0—15,bingjiangP1口所读的键值(二进制数)从P2.0—P2.3显示出来。2.四位发光二极管分别代表4位二进制数,二进制中的数码“1”用发光二极管亮来表示,数码“0”用发光二极管灭来表示。例如:若1号键被按下,则发光二极管L1亮,,L2—L4灭(0001B);若6号键被按下,则发光二极管L2和L3亮,L12和L4灭,依此类推,L4灭0001B),依此类推。软件程序ORG0000HAJMPMAINORG0100HMAIN:MOVR1,#00HMOVR2,#00HMOVR4,#04HMOVR5,#11111110BMOVA,R5LOOP:MOVP1,AORLP1,#0F0HMOVA,P1LCALLDELAYMOVR3,#04HMOVR2,#00HSETBCLOOP1:RLCAJNCDISPLAYINCR2DJNZR3,LOOP1MOVA,R5RLAMOVR5,AINCR1DJNZR4,LOOPLJMPMAIN2DISPLAY:MOVMOVB,#04HA,R1ADDMULCPLMOVAA,R2ABDELAY:MOVLJMPMAINP2,AD1:MOVDJNZDJNZR7,$R7,#0A0HR6,#0C8HRETR6,D1END硬件电路22效果描述若1号键被按下,则发光二极管L1亮,L2—L4灭(0001B);若6号键被按下,则发光二极管L2和L3亮,L12和L4灭,依此类推,L4灭0001B),依此类推。操作截图(6号键被按下,L2和L3亮(1号键被按下,L1亮,L2—L4灭)30)

  实验体会1.通过本次试验,我熟悉了矩阵式键盘的基本原理。2.学习了单片机基本I/O口扩展矩阵式键盘的电路设计方法及矩阵式键盘程序设计的基本方法。3.另外,在实验中遇到不懂的地方要尽快的想办法解决,不能拖延。31实验八:独立式案件实验目的:1.熟悉独立式按键程序设计的基本方法。2.学习单片机I/O接口的控制方法。实验器材:一个+5V电源,一个接地,三个470欧姆的电阻,三个二极管,一个AT89C51,三个开关,KeiluVision2软件,ISIS7Professional软件实验原理:软件程序void{Delay(uintdel)uintfor(i=0;i,j;for(j=0;i

篇六:单片机数码管与独立按键实验实验报告

  

  数码管显示按键键号实验

  单片机实验报告

  数码管显示按键键号实验

  一.实验目的1.熟悉数码管的功能和使用。

  2.熟悉延时子程序的编写和使用。

  3.熟悉独立按键的使用和编程方法。

  二.实验仪器

  计算机、Keil编程环境、普中下载软件、单片机开发实验仪。

  三.实验原理与内容

  P0口做输出口,接一个共阳极数码管,要求循环显示。共阳极数码管字形表同上一实验。

  独立按键为K1;K8接P2口。四.实验线路及原理

  五

  五.注意事项1.安装实验仪时,先接通讯串口线,再开电源开关。

  2.实验过程中,在进行接插线操作时,必须先关闭电源。

  六.实验步骤

  1、主机连线说明:

  JP10单片机0P0口(88位)

  JP3共阳极数码管

  JP11单片机2P2口(88位)

  JP588个独立按键

  七.实验步骤

  1.打开Keil编程软件编写程序,并进行汇编产生HE_文件。

  (1)流程图

  (2)源程序

  ORG0000HLJMPMAIN;初始地址0000H跳转MAI程序ORG0030HMAIN:MOVSP,#60H;赋值SP=60HMOVA,P2;A=P2CJNEA,#0FFH,LP3;ane;FFH跳转LP3LJMPLP1;跳转LP1LP2:LCALLDEY10;调用DEY10延时子程序

  MOVA,P2;赋值A=P2CJNEA,#0FFH,LP3;Ane;FFH时跳转LP3LJMPLP1;跳转LP1LP3:MOVR3,#1;R3=1MOVR2,#8;R2=8LP4:RRCA;A带进位循环右移

  JNCLP5;无进位跳转LP5INCR3;R3加一DJNZR2,LP4;R2减一ne;0转

  跳转LP4LJMPLP1;跳转LP1LP5:MOVA,P2;A=P2CJNEA,#0FFH,LP5;Ane;FFH跳转LCALLDISPLAY;调用

  LP1:LJMPMAIN;跳转DISPLAY:MOVA,R3MOVDPTR,#500H;将数组首地址赋给数据指针寄存器MOVCA,@A+DPTR;根据R3的值取第几个数据MOVP0,A;P0=ARETDEY10:MOVR6,#20__MOVR7,#0DEY11:DJNZR7,DEY11DJNZR6,DEY11;执行

  256_____20__次后返回调用处

  RETdey1:MOVR5,#40DEYY1:LCALLDEY10;调用延时子程序DEY10DJNZR5,DEYY1;256_____20_______40RET;返回调用处

  ORG500H;数组从500H开始存储TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFHEND2.点击普中下载软件,检查设置是否正确,然后下载到实验仪的单片机中。

  3.运行程序看结果。反复修改和下载。

  八.实验结果及总结

  程序编写无误生成HE_文件,通过普中下载软件,将程序下载到实验仪的单片机中,8个独立按键随机按,可观察到数码显示管显示对应的按键数。

  总结:通过这次数码管显示按键键号的实验完成,加深了数码管的使用方法和对操作过程熟悉,明白了数码管的基本原理,学会了共阴极和共阳极的不同,以及可以写出两种不同的显示码,还了解到了如何判断按键是否按下。

篇七:单片机数码管与独立按键实验实验报告

  

  精品学习资料范文

  单片机按键实验报告

  篇一:单片机按键扫描实验报告

  键盘扫描

  一.实验目的(1)掌握矩阵键盘接口电路和键盘扫描编程方法。

  (2)掌握按键值处理与显示电路设计。

  二.实验任务

  (1)设计4*4键盘,编写各个键的特征码和对应的键值(0~F);

  (2)编程扫描按键,将按键对应的数字值使用数码管显示出来。

  三.实验电路及连线方法

  1.采用动态显示

  连线方法:电路由2片74LS573,1个六字一体的共阴数码管组成。由U15输出段选码,U16做位选码,与单片机的采用I/O口连接方式,短路片J22连接P2.0,J23连接P2.3,做输出信号锁存。

  (实际电路连接是d7-d6-d5-d4-d3-d2-d1-d0?h-c-d-e-g-b-a-f)。PW12是电源端。

  2.键盘电路

  连线方法:电路由16个按键组成,用P1口扩展4×4行列式键盘。

  J20是键盘连接端,连接到P1口。J21是行列键盘、独立键盘选择端,当J21的短路片连接2-3脚时,构成4×4行列式键盘;当J21的短路片连接2-1脚时,精品学习资料范文

  可形成3×4行列式键盘,4个独立式

  按键S4、S8、S12、S16,这4个独立按键分别连接P1.4~P1.7;其他12个键3×4行列式键盘。

  PW15是电源端。

  四.编程思路

  1.采用反转法识别按键的闭合。

  2.采用动态显示将键值显示出来。

  五.算法流程图

  六.资源分配

  1.用P1口进行查找按键

  2.用R3做键值指针

  3.用R1做动态显示为选码指针。

  4.R5为延时指针。

  七.程序设计

  KPIN:ORGMOVMOVANLMOV0000HP1,#0F0HA,P1A,#0F0HB,AMOVP1,#0FHMOVA,P1ANLA,#0FHORLA,BCJNEA,#0FFH,KPIN1AJMPEXIT

  精品学习资料范文

  KPIN1:MOVB,AMOVDPTR,#TABKPMOVR3,#0KPIN2:MOVA,R3MOVCA,@A+DPTRCJNEA,B,KPIN3MOVA,R3LOOP:MOVR1,#0FEH;键盘动态显示

  LOOP1:MOVA,R3ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRCLRP2.0CLRP2.1MOVP0,ASETBP2.0NOPCLRP2.0LOOP2:MOVA,R1;位选码

  MOVP0,ASETBP2.1MOVR5,#25精品学习资料范文

  LOOP3:DJNZR5,LOOP3CLRP2.1SJMPLOOPKPIN3:INCR3CJNEA,#0FFH,KPIN2EXIT:RETTABKP:DB0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBHDB0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,67H,0FFHTAB:DB77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FHDB79H,33H,7CH,3BH,1BHEND

  八.调试出现的问题及解决

  问题1:程序正常运行,但按键显示出现乱码

  解决:动态显示笔形码错误,并改正。

  问题2:发现有些按键按下时不出现键值

  解决:发现按键坏了,换机器再实验,并且成功。

  总结:与硬件想结合的实验要有足够的耐心,并且不仅要懂得如何编程,还要有足够多的电路知识,这样才能够保证实验成功。

  篇二:单片机实验报告

  姓名

  学号

  单片机实验报告

  四

  时间

  周一11-13地点

  计708指导老师:实验题目C51单片机片上资源开发实验

  一.

  实验目的与要求

  精品学习资料范文

  ??学习单片机片上资源开发技术

  研究用片上资源实现自动控制的方案

  二:实验环境

  在KeiluVision2下实验。

  三.实验内容

  1.用51单片机I/O端口和扩展口控制LED和按键

  ①按键扫描子程序,每50ms检查按键状态。

  ②LED输出子程序

  ③按1次键,377扩展输出口驱动LED灯(位输出“1”点亮相应位灯)显示内容改变1次(0x00-0x01-0x02-0x04-0x08-0x10-0x20-0x40-0x80-0xff循环),初始状态显示0x00。

  四.系统实施

  ①按键扫描子程序,每50ms检查按键状态。

  ②LED输出子程序

  五、体会

  这个实验对我初学单片机的我有点难度,因为最初接触这个实验时,对于单片机的I/O端口和按键都不是很清楚,最后通过对课本知识的学习,还有上机实验对此基本了解。通过这次试验,实现了对课本知识的时间,更加了解单片机结构以及组成原理。对于更加深入的学习单片机有很大好处。

  精品学习资料范文

  六.附录

  1.用51单片机I/O端口和扩展口控制LED和按键

  DISPLAY_NUMEQUR0;显示内容的表索引

  KEY_DOWNBITPSW.5;模式键按下标志位(PSW的F0)KEY_DEMOBITP1.ADDR_377EQU0FFFH;按键输入引脚

  ;377的地址,P2.6~P2.4=000的地址均可

  ORG0000H;仿真调试时,用户程序起始地址8000HLJMP0030HORG0030HSTART:;初始化

  MOVSP,#30HMOVDISPLAY_NUM,#0;LED显示内容初始为0;通过377口将LED显示为R0为索引的表容ACALLLED_DISPLAYLED_KEY_LOOP:ACALLDELAY50MS;延时50msACALLKEY_SCAN;检查按键,若按下,DISPLAY_NUM+1SJMP;输出(KEY0_ENTR+DISPLAY_NUM)的内容给377LED_DISPLAY:MOVA,#0AH

  精品学习资料范文

  CLRC;C标志位清0LED_KEY_LOOP;返回主程序循环

  SUBBA,DISPLAY_NUM;判断是否超出状态

  JNZMOVDISP:MOVDPTR,#KEY0_ENTRMOVA,DISPLAY_NUMMOVC

  MOVDPTR,#ADDR_377A,@A+DPTR;取得(KEY0_ENTR+DISPLAY_NUM)的内容DISPDISPLAY_NUM,#0;是,清零

  MOVX@DPTR,A;输出到377RETKEY_SCAN:;按键扫描程序

  JNBKEY_DEMO,KEY_SCAN1;键是否按下?是(KEY_DEMO=0),要检测按键是否有效;

  KEY_SCAN0:

  CLRKEY_DOWN;否(KEY_DEMO=1),清除标志位SJMPKEY_SCAN_EXIT;返回

  KEY_SCAN1:JBKEY_DOWN,KEY_SCAN_EXIT;是,检测标志位,确认是否为有效按键

  ;(KEY_DOWN=1),标志位没有发生0-1(松开-按下)状态变化为

  精品学习资料范文

  无效按键,返回CLRKEY_DOWN;按键有效(即KEY_DEMO=0,KEY_DOWN=0),;置位按键标志位

  INCDISPLAY_NUM;并把显示内容加1ACALLLED_DISPLAYKEY_SCAN_EXIT:RET;延时子程序

  延时50ms,使用了R5,R6,R7DELAY50MS:MOVR7,#04HDELAY0:MOVR6,#81HDELAY1:MOVR5,#7EHDELAY2:DJNZDJNZR5,DELAY2R6,DELAY1DJNZRETR7,DELAY0;指示灯编码

  KEY0_ENTR:DB00H;显示00000000DB01H;显示00000001DBDB

  精品学习资料范文

  DBDBDBDBDBDB

  END显示

  00000010显示

  00000100显示

  00001000显示

  00010000显示

  00100000显示

  01000000显示

  10000000显示

  1111111102H;04H;08H;10H;20H;40H;80H;0FFH;

  篇三:单片机

  矩阵键盘实验

  实验报告

  实验五

  矩阵键盘实验

  一、实验内容

  1、编写程序,做到在键盘上每按一个数字键(0-F)用发光二极管将该代码显示出来。按其它键退出。

  2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能。可定义“A”键为“+”键,“B”键为“=”键。

  二、实验目的1、学习独立式按键的查询识别方法。2、非编码矩阵键盘的行反转法识别方法。

  三、实验说明

  1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向

  精品学习资料范文

  端口写入“1”。

  2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。3、识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

  行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。

  由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。

  行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,精品学习资料范文

  使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。

  四、接线方法

  键盘连接成4×4的矩阵形式,占用单片机P1口的8根线,行信号是P1.0-1.3,列信号是P1.4-1.7。

  五、实验电路

  参考学习板说明书P14。

推荐访问: 单片机数码管与独立按键实验实验报告 实验 单片机 按键