秘书部第二学期第一次培训总结

秘书部第二学期第一次培训总结

一、   静态数码管

1、数码管介绍

单片机系统中常用的显示器有:

     发光二极管LED(Light Emitting Diode)显示器、液晶LCD(LiquidCrystal Display)显示器、TFT液晶显示器等。LED显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。

    LED数码管根据LED的不同接法可以分为2类:共阴和共阳。

2、共阳数码管段码表

0xC0 , 0xF9, 0xA4 , 0xB0 , 0x99 , 0x92

   0         1       2         3         4        5

0x82 , 0xF8, 0x80 , 0x90 , 0x88 , 0x83

 6          7        8        9        A        B

0xC6 , 0xA1, 0x86 , 0x8E , 0xFF

 C          D       E         F     无显示

3、演示代码

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;


u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
					0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

u8 i;


void main()
{	
	while(1)
	{
		for(i=0;i<8;i++)
		{
			P0=~smgduan[i];
		}
	}
}

二、   动态数码管

1、动态数码管显示原理

动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

2、动态数码管模块电路

3、74HC138芯片介绍

74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。

74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。

其真值表如下图:


3、演示代码

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
					0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
u8 i;
void delay(u16 i)
{
	while(i--);	
}


void main()
{	
	while(1)
	{	
		for(i=0;i<8;i++)
		{
			switch(i)	 //位选,选择点亮的数码管,
			{
				case(0):
					LSA=0;LSB=0;LSC=0; break;//显示第0位
				case(1):
					LSA=1;LSB=0;LSC=0; break;//显示第1位
				case(2):
					LSA=0;LSB=1;LSC=0; break;//显示第2位
				case(3):
					LSA=1;LSB=1;LSC=0; break;//显示第3位
				case(4):
					LSA=0;LSB=0;LSC=1; break;//显示第4位
				case(5):
					LSA=1;LSB=0;LSC=1; break;//显示第5位
				case(6):
					LSA=0;LSB=1;LSC=1; break;//显示第6位
				case(7):
					LSA=1;LSB=1;LSC=1; break;//显示第7位	
			}
			P0=smgduan[i];//发送段码
			delay(100); //间隔一段时间扫描	
		}	
	}		
}

三、   按键

1、按键介绍

轻触开关是一种电子开关,使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开。我们使用的开关如下图:


按键在闭合和断开时,触点会存在抖动现象,所以需要通过硬件或软件手段进行消抖。


2、独立按键原理图

3、矩阵按键原理图

4、演示代码

#include "reg52.h"  //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;  //对数据类型进行声明定义

typedef unsigned char u8;

#define GPIO_DIG P0

#define GPIO_KEY P1

u8 KeyValue; //用来存放读取到的键值

u8 codesmgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,                               0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

void delay(u16 i)
{

       while(i--);     

}

void KeyDown(void)
{

       chara=0;

       GPIO_KEY=0x0f;

       if(GPIO_KEY!=0x0f)//读取按键是否按下

       {

              delay(1000);//延时10ms进行消抖

              if(GPIO_KEY!=0x0f)//再次检测键盘是否按下

              {     
                     //测试列

                     GPIO_KEY=0X0F;

                     switch(GPIO_KEY)

                     {

                            case(0X07):    KeyValue=0;break;

                            case(0X0b):    KeyValue=1;break;

                            case(0X0d):KeyValue=2;break;

                            case(0X0e):    KeyValue=3;break;

                     }

                     //测试行

                     GPIO_KEY=0XF0;

                     switch(GPIO_KEY)

                     {

                            case(0X70):    KeyValue=KeyValue;break;

                            case(0Xb0):    KeyValue=KeyValue+4;break;

                            case(0Xd0):KeyValue=KeyValue+8;break;

                            case(0Xe0):    KeyValue=KeyValue+12;break;

                     }

                     while((a<50)&&(GPIO_KEY!=0xf0))    //检测按键松手检测

                     {

                            delay(1000);

                            a++;

                     }

              }

       }

}

void main()

{     

       while(1)

       {     

              KeyDown();             //按键判断函数

              GPIO_DIG=~smgduan[KeyValue];       //

       }            

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值