按键控制数码管和流水灯设计报告实验报告

摘要  

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

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

   
SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to realize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the

Keywords: SCM, water lights, digital tubes, control system

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

                                           目录

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

任务描述及方案设计 ...................................................3

  1. 任务描述....................................................................................3

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

硬件设计方案 ...........................................................................3

  1. Msp430f149单片机的功能说明.................................................3

  2. 显示器功能..................................................................................4

  3. 复位电路......................................................................................4

  4. 按键的部分..................................................................................4

  5. 74HC573的特点............................................................................4

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

  7. 元器件清单..................................................................................4

  程序设计方案...........................................................................5

   1. IAR Embedded Workbench软件编程序..............................................5

   2. 仿真电路图...................................................................................................6

  实物实验...............................................................................7

   1. 实物图..........................................................................................................7

    2. 测试结果与分析.....................................................................................7

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

  参考文献..........................................................................................16

一、设计目的 

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

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

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

二、任务描述及设计方案

 1. 任务描述

    闭合按键1时,从P1.01.7逐个灯,并且P1.0亮一下,P1.1亮两下,P1.2亮三下,P1.3亮四下,P1.4亮五下,P1.5亮六下,P1.6亮七下,P1.7亮八下; 再是P1.0亮一下,P1.01.1亮两下,P1.01.2亮三下,P1.01.3亮三下,P1.01.4亮五下,P1.01.5亮六下,P1.01.6亮七下,P1.01.7亮八下。

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

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

7ESG-MPX4-CC数码管按abcdefg顺序组成“8”字形。

2、设计方案

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

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

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

  

三、硬件设计方案

  1、单片机功能说明 

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

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

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

2、显示器的功能

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

3、复位电路

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

            

                    复位原理图

4、按键部分

  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)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不是影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可与直接与系统总线接口并驱动总线,而不需要外接口。

            74HC573引脚图

  

              Z=高阻抗

         

                         数码管引脚图

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

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

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

              

左箭头: P4.7左箭头: P4.6左箭头: P4.5左箭头: P4.4

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

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

      6.3  单片机复位部分

    

  

7、元器件清单

                                                  

四、程序设计方案

 1、用IAR Embedded Workbench软件编程序

 

#include<msp430F249.h>

#define ROW P4OUT  //矩阵键盘的行宏定义

#define COL P4IN   //矩阵键盘的列宏定义

#define DPYOUT P1OUT    //数码管输出口宏定义

#define uchar unsigned char

#define uint unsigned int

uchar keyval;

uchar m=0;

uchar remain = 0xff;

uchar table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

uchar table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};

uchar table3[]={0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};

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

             0x7f,0x6f,0x77,0x7c,0x39, 0x5e,0x79,0x71};

void delay(uint n)

{

  uint i,j;

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

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

}

uchar keyscan()

{

   int i=0;

   uchar key=0;

   ROW=0x0f;

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

   {

     do i++;

     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;

           else key=((ROW&0xf0)|(COL&0x0f));

          }

           else key=((ROW&0xf0)|(COL&0x0f));

         }

          else key=((ROW&0xf0)|(COL&0x0f));   

       }

        else key=((ROW&0xf0)|(COL&0x0f));

   }

   return key; 

}

void fun1()

{

  uint i,j;

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

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

       {

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

        P3OUT=0X00;delay(50);

       }

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

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

      {

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

       P3OUT=0X00;delay(50);

      }  

}

void fun2()

{       

 uint i;

 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);

}

void fun3()

{

 uint i,j;

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

  {

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

    P3OUT=0X00;delay(100);

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

     {

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

      P3OUT=0X00;delay(100);

     }

  }

}

void main(void)

{

   WDTCTL = WDTPW + WDTHOLD;

   //keyval=17;

   P4DIR|=0Xf0;

   P1DIR|=0Xff;

   P1OUT|=0Xff;

   P3SEL=0X00;

   P3DIR|=0XFF;

   P3OUT&=~0xff;

   P2DIR|=0X00;

   P2IE=0X07;P2IES=0X07;

   _EINT();

  

   while(1)

  {

      delay(100);

      switch(keyscan())

     {

     case 0xd7:DPYOUT=seg[0];remain=seg[0];break; 

     case 0x77:DPYOUT=seg[13];remain=seg[13];break;

     case 0x7b:DPYOUT=seg[12];remain=seg[12];break;

     case 0x7d:DPYOUT=seg[11];remain=seg[11];break;

     case 0xb7:DPYOUT=seg[15];remain=seg[15];break;

     case 0xbb:DPYOUT=seg[9];remain=seg[9];break;

     case 0xbd:DPYOUT=seg[6];remain=seg[6];break;

     case 0xbe:DPYOUT=seg[3];remain=seg[3];break;

     case 0xdb:DPYOUT=seg[8];remain=seg[8];break;

     case 0xdd:DPYOUT=seg[5];remain=seg[5];break;

     case 0xde:DPYOUT=seg[2];remain=seg[2];break;

     case 0xe7:DPYOUT=seg[14];remain=seg[14];break;

     case 0xeb:DPYOUT=seg[7];remain=seg[7];break;

     case 0xed:DPYOUT=seg[4];remain=seg[4];break;

     case 0xee:DPYOUT=seg[1];remain=seg[1];break;

     case 0x7e:DPYOUT=seg[10];remain=seg[10];break;

     default:DPYOUT = remain;break;

     }

      switch(m)

    {

      case 1: fun1();break;

      case 2: fun2(); break;  

      case 3: fun3(); break;

      default:break;

    }

  }

}

#pragma vector=PORT2_VECTOR

__interrupt void PORT2 (void)

{

P2IFG=0x00;

if(P2IN!=0X07)

 {

  switch(P2IN&0X07)

  {

  case 0X06: m=1;break;

  case 0X05: m=2;break;

  case 0X03: m=3;break;

  default:m=0;break;

  }

 }

}

2. 仿真电路图

                闭合按键1时的仿真图

     

  闭合按键2时的仿真图

 闭合按键3时的仿真图

数码管仿真图

五、实物实验      

 1实物图

 

   2. 测试结果与分析

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

六、心得体会

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

、参考文献

1】康华光。模拟电子技术基础高等教育出版社,20##

2】康华光。数字电子技术基础高等教育出版社,2005 

3】秦龙。  MSP430单片机常用模块与综合系统实例精讲,20##

相关推荐