《数码管显示与键盘识别清华洪伟》由会员分享,可在线阅读,更多相关《数码管显示与键盘识别清华洪伟(21页珍藏版)》请在金锄头文库上搜索。
1、数码管显示与键盘识别清华洪伟 Page 2第十四章数第十四章数码管的管的显示与示与键盘识别数数码管的管的显示示14.1.1 7段数段数码管原理与管原理与结构构n把把7个个细长的的LED排成排成日日字型字型n8个个LED,使用一个公用端,共阳型:所有,使用一个公用端,共阳型:所有LED的阳极的阳极连在一起,在一起, 共阴型:所有共阴型:所有LED的阴极的阴极连在一起在一起n单独控制每个段的亮独控制每个段的亮灭,可以表示出数字,可以表示出数字 09n使用多个数使用多个数码管表示数字管表示数字n应用非常广泛用非常广泛n多种多种颜色,多种尺寸色,多种尺寸 Page 3第十四章数第十四章数码管的管的显示
2、与示与键盘识别数数码管的管的显示示14.1.2 7段数段数码管管编码bcdefgaNgfedcba01111113F111062111115B3111114F41111665111116D61111117D711107811111117F91111116F共阴型:1 表示点亮 0 表示熄灭共阳型:取反DP Page 4第十四章数第十四章数码管的管的显示与示与键盘识别数数码管的管的显示示14.1.3 数数码管管动态扫描描n通通过段控制信息确定数段控制信息确定数码管管显示的数字(多位复用)示的数字(多位复用)n通通过位控制信号使得任意位控制信号使得任意时刻刻只有一位数只有一位数码管管处于于显示状示
3、状态n利用利用视觉暂留留现象,定象,定时更改更改位控制信息和段控制信息,得位控制信息和段控制信息,得到到稳定的数字定的数字显示示n多个多个LED同同时点亮的点亮的电流都流都经过公共端,公共端,MCU的的IO无法承受,无法承受,必必须使用三极管使用三极管n为了减小了减小MCU的灌入的灌入电流,段流,段控制端都控制端都连接了接了输出出驱动器器74LS07段控制位控制注:所有引脚都是低注:所有引脚都是低电平有效平有效 Page 5第十四章数第十四章数码管的管的显示与示与键盘识别数数码管的管的显示示14.1.4 数数码管管显示硬件示硬件设计n实验板上有板上有4位数位数码管,共阳极管,共阳极结构,引出构
4、,引出12根根连线,8根段控制,根段控制,4根位控制,根位控制,对应关系如下:关系如下:n实验中可将段控制中可将段控制连接到接到P口,将位控制口,将位控制连接到接到T口,口,连线关系如下:关系如下:121110987654321C4 afC3 C2 bC1 gcdpde121110987654321T3P0P5T2T1P1T0P6P2P7P3P4 Page 6第十四章数第十四章数码管的管的显示与示与键盘识别数数码管的管的显示示14.1.4 数数码管管显示示软件件设计n显示一位数字:示一位数字:const unsigned char const unsigned char DisplayDeco
5、de=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,DisplayDecode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /0-9 ABCDEF 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /0-9 ABCDEF DDRP|=0XFF;DDRP|=0XFF; DDRT|=0XFF;DDRT|=0XFF;/点亮一个数点亮一个数码管,管,显示示2 2 PTP=DisplayDecode2;PTP=Displa
6、yDecode2;PTT=0xfe;PTT=0xfe;nLED动态显示示时,按人眼的反,按人眼的反应,刷新,刷新频率得大于率得大于80Hz,即所有,即所有LED在在12ms内必内必须刷新一次。刷新一次。现有有4组LED,即每段,即每段显示示3ms。这个个3ms可以用可以用软件延件延迟实现,但,但为提高提高CPU效率,一般使用定效率,一般使用定时器。器。 Page 7第十四章数第十四章数码管的管的显示与示与键盘识别数数码管的管的显示示n示例程序示例程序 /unsigned char showdata4; void Show()void Show() unsigned char DisplayNu
7、mber;unsigned char DisplayNumber; PTT=0x0f;PTT=0x0f;for(DisplayNumber=0;DisplayNumber4;DisplayNumber+)for(DisplayNumber=0;DisplayNumber4;DisplayNumber+) PTP=DisplayDecodeshowdataDisplayNumber;PTP=DisplayDecodeshowdataDisplayNumber; if(DisplayNumber=2) PTP&=0x7f;if(DisplayNumber=2) PTP&=0x7f; switch(
8、DisplayNumber)switch(DisplayNumber) case 0:case 0: PTT=0xfe;PTT=0xfe; break; break; case 1:case 1: PTT=0xfd;PTT=0xfd; break; break; case 2:case 2: PTT=0xfb;PTT=0xfb; break; break; default:default: PTT=0xf7;PTT=0xf7; break; break; delay(1);delay(1); Page 8第十四章数第十四章数码管的管的显示与示与键盘识别数数码管的管的显示示n示例程序示例程序 /
9、unsigned char showdata4; void delay(unsigned int countert) /3msvoid delay(unsigned int countert) /3ms unsigned int i,j;unsigned int i,j; for(i=0;icountert;i+) for(i=0;icountert;i+) for(j=0;j4000;) j+;for(j=0;j4000;) j+; 1 12 23/13/1晶振晶振16M,总线时钟8M,延,延时为:4000*(1+2+3)/(8*106)s=3msLED显示应用实例实验11任务:(1) 在8
10、位数码管上显示班级和学号,之间用小数点分隔。 (2) 在4个数码管上实现“0”字符跑马灯 (3) 编制实验一中的已知年月,求天数的C程序,将天数显示在数码管中间两位上,前后放上分隔符“。 -” 例如: (4) 利用实验一中的已知年月,求天数的汇编程序作子程序,实现混合编程。 (5) 利用DIP开关实现上述功能的菜单 Page 9第十四章数第十四章数码管的管的显示与示与键盘识别实验11第十章第十章 单片机片内外模片机片内外模块并行并行I/O硬件连线 Page 10数码管12线连P口和T口第十四章数第十四章数码管的管的显示与示与键盘识别键盘识别14.2.1 开关与开关与键盘键盘n开关(开关(Swi
11、tch)开关有两种状开关有两种状态闭合和断开合和断开船形开关,船形开关,拨位开关位开关n按按键:带有自恢复装置的开关,常开有自恢复装置的开关,常开常常闭型型各种形状,各种尺寸各种形状,各种尺寸耐高耐高压,轻触式,触式,带指示指示n键盘键盘:由多个按:由多个按键组合而成合而成为了区分按了区分按键,给每个按每个按键安安排了一个代排了一个代码,称,称键码。编码键盘和非和非编码键盘前者前者较复复杂,较贵。后者。后者较简单,极,极便宜。便宜。非非编码键盘分分为独立式独立式键盘和和行列式行列式键盘 Page 11第十四章数第十四章数码管的管的显示与示与键盘识别键盘识别14.2.2 键盘键盘的的消抖消抖问题
12、n按按键用于用于产生一个脉冲,生一个脉冲,1个个MCU的的IO口可以口可以检查一个按一个按键的状的状态n按下和按下和释放的放的时刻会有抖刻会有抖动n需要需要设计硬件消抖硬件消抖电路或路或软件消抖件消抖硬件消抖:阻容硬件消抖:阻容滤波或双波或双稳态触触发器器软件消抖:延件消抖:延时等待(等待(12ms) Page 12void delay(void) unsigned int i,j; for(i=0;i4;i+) for(j=0;j4;if(Input!=0x0F) delay(4); Input=PORTA4; if(Input!=0x0F) Output=0x01; for(i=0;i4;
13、 if(Input!=0x0F) switch(Input) case 0x0E: Keynumber=0; break; case 0x0D: Keynumber=1; break; case 0x0B: Keynumber=2; break; case 0x07: Keynumber=3; break; Keynumber=Keynumber+i*ColumnSize; Keyvalue1=KeyDecodeKeynumber; break; else Output=1; return(Keyvalue1);第十四章数第十四章数码管的管的显示与示与键盘识别键盘识别 Page 175V000
14、011011111Y1(PA0) X1(PA4)Y2(PA1)Y3(PA2)Y4(PA3) X2(PA5) X3(PA6) X4(PA7)0123456789ABCDEF第十四章数第十四章数码管的管的显示与示与键盘识别键盘识别 Page 181234567890ABCDEF键值键值表:表:const unsigned char KeyDecode= 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x00,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f; 行端口输出000011011111Y1X1Y2Y3Y4X2X3X4 列端口输入012
15、3456789ABCDEF第十四章数第十四章数码管的管的显示与示与键盘识别键盘识别14.2.6 键盘键盘的的扫描策略描策略n循循环扫描:可行、可靠,描:可行、可靠,占用占用CPU时间;n定定时扫描:可能描:可能丢失按失按键动作,需要确定作,需要确定扫描描频率,触点接触率,触点接触时间在在几十到几百几十到几百ms量量级;n键盘中断:中断:发现有任何有任何按按键按下按下时启启动键盘扫描,需要描,需要设计相相应的硬的硬件件电路路 Page 19n示例程序:示例程序:void main(void) /* put your own code here */ unsigned char Keyresult
16、; showdata0=1; showdata1=2; showdata2=3; showdata3=4;EnableInterrupts;Init_PORT(); Show(); for(;) Keyresult=KeyScan(); /键盘扫描描 if(Keyresult!=0xFF) showdata0=Keyresult; Show(); /显示示 键盘应用实例实验10任务:(1) 延续前边的实验,键盘输入年和月,在数码管上显示对应的天数。 (2) 延续前边的实验,从键盘输入班级和学号,并在8位数码管上显示。 (3) 自由发挥,如:组合键:F+1,显示班级;F+2,显示学号反转法识别键盘编制函数y=3*x+4,x由键盘输入,y用数码管显示菜单 Page 20第十四章数第十四章数码管的管的显示与示与键盘识别键盘识别第十章第十章 单片机片内外模片机片内外模块并行并行I/O硬件连线 Page 21数码管12线连P口和T口键盘8线连A口