(9) 第14章 动态数码管显示与键盘
在数码管上动态显示矩阵键盘数字

/**********************************************程序功能:在数码管上动态显示矩阵键盘数字***********************************************/#include <msp430x14x.h>typedef unsigned char uchar;typedef unsigned int uint;#define LED_IN_USE 8//共阴极数码管7位段码:0--fuchar scandata[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar led_Buf[LED_IN_USE]; // LED显示缓冲区,// 存放要显示数据uchar led_Ctrl;//记录显示位数的全局变量uchar key_Pressed; //按键是否被按下:1--是,0--否uchar key_val; //存放键值uchar key_Flag; //按键是否已放开:1--是,0--否//设置键盘逻辑键值与程序计算键值的映射uchar key_Map[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};uchar Dispbuf[2];/******************************************************* * 模块初始化*******************************************************/ void init_LED(void){//uchar tmpv;P5DIR = 0xff; //设置P5的IO方向为输出P3DIR |= 0x18; //设置P3.3 P3.4的IO方向为输出P3OUT &= 0xe7;//设置P3.3 P3.4为0,关闭两锁存器P5OUT = 0x00;//设置P5的输出初值led_Ctrl = 0; // led_Ctrl用于控制哪个LED可显示//for(tmpv=0;tmpv<LED_IN_USE;tmpv++)//{ // 初始化缓冲区,可放入主函数//led_Buf[tmpv] = 0;// }}void led_Display(){//P5DIR = 0xff; //设置P5的IO方向为输出//P3DIR |= 0x18; //设置P3.3 P3.4的IO方向为输出//P3OUT &= 0xe7;//设置P3.3 P3.4为0,关闭两锁存器//P5OUT = 0x00;//设置P5的输出初值P5OUT = scandata[Dispbuf[led_Ctrl]]; // 设置显示值P3OUT |= 0x10; // 打开数据锁存器P3OUT &= 0xef; // 关闭数据锁存P5OUT = ~(1 << (led_Ctrl)); // 设置哪只LED显示P3OUT |= 0x08; // 打开控制锁存P3OUT &= 0xf7; // 关闭控制锁存led_Ctrl++;if(led_Ctrl == 2) led_Ctrl = 0; // 设置下一个要显示的LED}/*******************************************函数名称:Init_Keypad功能:初始化扫描键盘的IO端口参数:无返回值:无********************************************/void Init_Keypad(void){P1DIR = 0xf0; //P1.0~P1.3设置为输入状态, P1.4~P1.7设置为输出状态P1OUT |= 0xf0; // P1.4~P1.7输出高电平key_Flag = 0;key_Pressed = 0;key_val = 0;}/********************************************** Check_Key(),检查按键,确认键值*********************************************//*******************************************函数名称:Check_Key功能:扫描键盘的IO端口,获得键值参数:无返回值:无********************************************/void Check_Key(void){uchar row ,col,tmp1,tmp2;tmp1 = 0x80;for(row = 0;row < 4;row++) //行扫描{P1OUT = 0xf0; //P1.4~P1.7输出全1P1OUT -= tmp1; //P1.4~p1.7输出四位中有一个为0tmp1 >>=1;if ((P1IN & 0x0f) < 0x0f) //是否P1IN的P1.0~P1.3中有一位为0{tmp2 = 0x01; // tmp2用于检测出那一位为0for(col = 0;col < 4;col++) // 列检测{if((P1IN & tmp2) == 0x00) // 是否是该列,等于0为是{key_val = key_Map[row * 4 + col]; // 获取键值return; // 退出循环}tmp2 <<= 1; // tmp2左移1位}}}}/*******************************************函数名称:delay功能:延时约15ms,完成消抖功能参数:无返回值:无********************************************/void delay(){uint tmp;for(tmp = 12000;tmp > 0;tmp--);}/*******************************************函数名称:Key_Event功能:检测按键,并获取键值参数:无返回值:无********************************************/void Key_Event(void){uchar tmp;P1OUT &= 0x00; // 设置P1OUT全为0,等待按键输入tmp = P1IN; // 获取p1INif ((key_Pressed == 0x00)&&((tmp & 0x0f) < 0x0f)) //如果有键按下{key_Pressed = 1; // 如果有按键按下,设置key_Pressed标识delay(); //消除抖动Check_Key(); // 调用check_Key(),获取键值}else if ((key_Pressed == 1)&&((tmp & 0x0f) == 0x0f)) //如果按键已经释放{key_Pressed = 0; // 清除key_Pressed标识key_Flag = 1; // 设置key_Flag标识}else{_NOP();}}/********************主函数********************/void main(void){WDTCTL = WDT_ADLY_1_9; // 设置内部看门狗工作在定时器模式,1.9ms中断一次IE1 |= WDTIE; // 使能看门狗中断init_LED();_EINT(); //打开全局中断Init_Keypad();while(1){Key_Event();if(key_Flag == 1){key_Flag = 0;Dispbuf[0] = key_val / 10;Dispbuf[1] = key_val % 10;}}// _BIS_SR(GIE);//_BIS_SR(LPM3_bits + GIE); //CPU进入LPM3低功耗模式,同时打开全局中断//_BIS_SR(CPUOFF+ GIE); //进入LPM0//_BIS_SR(LPM0_bits + GIE); //进入LPM0 }/*******************************************函数名称:watchdog_timer功能:看门狗中断服务函数,在这里输出数码管的段选和位选信号参数:无返回值:无********************************************/#pragma vector=WDT_VECTOR__interrupt void watchdog_timer(void){led_Display();}。
数码管动态显示与矩阵键盘的编程

数码管动态显示与矩阵键盘的编程实验四综合应用设计——数码管动态显示与矩阵键盘的编程一、实验目的:1、掌握单片机I/O技术和子程序设计等综合知识。
2、了解矩阵式键盘的内部结构和数码管显示的基本原理,掌握至少一种常用的按键识别方法。
3、熟练掌握数码管动态显示和矩阵键盘识别的综合应用。
二、实验内容:设计一个矩阵键盘的识别和动态显示综合的系统,控制8个8段数码管动态扫描显示4*4矩阵键盘上按下的按键所对应的值。
三、实验要求:给定一个4*4的矩阵键盘,16个按键对应显示0123456789ABCDE,第1次按下某按键在第一个8段数码管上显示对应的值,第2次在第二个数码管上显示,以此类推,第9次又在第一个数码管上显示,以此循环下去。
其中ABCDE在数码管上无法表达,可以用其它代替,例如:B用8表示,D用0表示,E用H表示等。
四、实验设备及实验耗材:计算机一台,W A VE6000软件模拟器,完成ISP下载的XLISP 软件,XL1000单片机综合仿真试验仪一台(8个8段数码管,4*4矩阵键盘一个,89S51一片,9针对9针的串口线一条,5V稳压电源线一条)五、实验基本原理与方法:查阅相关资料掌握矩阵式键盘的内部结构,8段数码管动态显示原理和常用的按键识别方法,建议使用按键识别方法中最常用的“行扫描法”编写程序。
结合动态显示技术和矩阵键盘识别技术。
六、实验方案设计:1、采用哪些I/O口完成通信,采用何种按键识别的方法,如何综合动态显示技术和矩阵键盘识别技术。
2、说明该程序的功能。
3、硬件连接原理图。
七、实验步骤:1.弄清实验内容和实验要求。
2.学习相关理论知识,提出实验方案,画出程序流程图。
软件流程图3.编写软件程序,作相关的程序注释,便于查看和调试。
4.编译和调试。
伟福软件:1.打开伟福W A VE V3.20软件,采用伟福默认的仿真器就可以了。
文件——新建文件,在弹出的窗口中输入实验程序,保存为“文件名.asm”文件,若窗口内的部分程序字体颜色发生改变,表示保存成功。
数码管静态显示和动态显示原理课件

电子设备中,如计算器、仪表、电视等。
02
它由多个LED或其他发光器件组成,可以同时显示一
到多个数字或字符。
03
根据不同的结构和发光器件,数码管可以分为七段数
码管、八段数码管、点阵数码管等。
数码管分类
01
02
03
七段数码管
由七个LED段和一个小数 点组成,可以显示0~9的 数字。
八段数码管
由八个LED段和一个小数 点组成,可以显示0~9的 数字以及一些字母和符号 。
的速度和效率。
通过调整字段和段驱动信号 的时序和电平,可以实现不 同的显示效果,如闪烁、跑
马灯等。
数码管动态显示具有体积小 、重量轻、耗电少等优点, 因此在很多领域得到了广泛 的应用。
04
CATALOGUE
数码管在电子系统中的应用
数码管在计数器中的应用
七段计数器
使用数码管实现计数器的数字显示,可以实时更 新显示的数值。
在点阵数码管中,通过控制各个LED 的亮灭状态来组成不同的数字、字母 和图像。
02
CATALOGUE
数码管静态显示原理
数码管静态显示电路
七段数码管
由七个LED组成的显示器 件,每个LED代表一个数 字的特定部分(例如十位 、百位等)。
共阴极数码管
使用公共阴极连接所有 LED的数码管,通过控制 阳极电压来点亮或熄灭 LED。
相关规范和规定
GB 8898-2011音频 、视频及类似电子设 备安全要求
GB 2423.1-2008电 工电子产品环境试验 标准
SJ/T 11238-2000数 字电视接收机测量方 法
THANKS
感谢观看
产品的性能和功能。
动态数码管显示

Created with novaPDF Printer (). Please register to remove this message.
4. 实物连接图如下: 实物图 1:
实物图 2:
Created with novaPDF Printer (). Please register to remove this message.
5.
C 语言程序
//MCU:AT89S51 //晶振:12M #include"AT89X51.H" unsigned char code numcode[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90 };//数字 0~9 共阳数码管代码 unsigned char code charcode[]={0xff,0xc0,0xc7,0xc7,0x86,0x89,0xff,0xff}; // HELLO 字样共阳数码管代码 unsigned char code bitcode[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f}; //数码管位选代码 /********1ms 延时子程序***********/ delay_nms(unsigned int n) { unsigned int i; unsigned char j; for(i=0;i<n;i++) for(j=0;j<120;j++) ; //空操作 }
3. 实验板上操作:
1) 将数码管位选开关拨到 ON(请看下面实物图 1) ,原先有做其他实验的短路冒建议 全部拨起来放在旁边; 2)把液晶那边的拨码开关全部拨到 OFF,也就是不要拨到 ON 上(看实物图 2) 3)将¡ 动态数码管显示程序¡ 的 HEX 文件烧到单片机里; 4) 如说原先做了流水灯的实验,建议将流水灯那个部分的短路冒拔起来。
飞思卡尔s12单片机-动态数码管显示与键盘模块 共23页PPT资料

PTP=DisplayDecode[showdata[DisplayNumber]];
if(DisplayNumber==2) PTP&=0x7f;
switch(DisplayNumber) {
case 0:
PTT=0xfe;
break;
case 1:
PTT=0xfd;
break;
case 2:
PTT=0xfb;
利用视觉暂留现象,定时更改
位控制信息和段控制信息,得
到稳定的数字显示
位控制
多个LED同时点亮的电流都经 过公共端,MCU的IO无法承受 ,必须使用三极管
为了减小MCU的灌入电流,段 注:所有引脚都是低电平有效
控制端都连接了输出驱动器
74LS07
Page 4
第十四章数码管的显示与键盘识别 —数码管的显示
12 11 10 9 8 7 6 5 4 3 2 1 T3 P0 P5 T2 T1 P1 T0 P6 P2 P7 P3 P4
Page 5
第十四章数码管的显示与键盘识别 —数码管的显示
14.1.4 数码管显示软件设计
显示一位数字: const unsigned char DisplayDecode[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07, ~0x7f,~0x6f,~0x77,~0x7c,~0x39,~0x5e,~0x79,~0x71}; //0-9 ABCDEF
Page 6
第十四章数码管的显示与键盘识别 —数码管的显示
示例程序 //unsigned char showdata[4];
void Show(){
unsigned char DisplayNumber;
汇编数码显示及键盘实验实验报告

数码显示及键盘实验【实验内容】1、数码管显示0-72、独立按键识别【需要了解的知识】1、GPIO设定2、数码管动态扫描显示原理,键盘扫描工作原理,输入与输出及其处理【实验预习】仔细预读实验指导电子文档的实验六、七及其前面的实验流程【实验设备】Keil C51软件、ICE52 仿真驱动、MEFlash编程软件、USB驱动程序【实验过程】实验一数码管显示0-7实验任务:1)先将“0-7”数码管的段码值写入存储器中,使8位数码管从右至左显示0-7.实验步骤:1)首先在硬盘上建立一个文件夹;2)启动Keil C51软件;3)执行Keil C51软件的菜单“Project|New Project……”,弹出一个名为“Create New Project”的对话框。
输入工程文件名,选择保存路径uv2后缀,点击“保存”按钮;4)紧接着弹出“Options for Target‘Target 1’”,为刚才的项目选择ATMEL的AT89S52的CPU。
选择之后,点击“确定”按钮;5)接下来弹出一个对话框提示你是否要把标准8051的启动代码添加项目中去,此时,点击“否”按钮;6)执行菜单“File|New……”,出现一个名为“Text1”的文档。
接着执行菜单“File|Save”弹出一个名为“Save As”的对话框,将文件名改为“.asm”后缀,然后保存;7)添加源程序文件到工程中,一个空的源程序文件建成。
单击Keil C51软件左边项目工作窗口“Target1”上的“+”,将其展开。
然后右击“Source Group1”文件夹弹出下拉菜单,单击其中的“Add Files to Group‘Source Group1’”项;8)在弹出的对话框中先选择文件类型为“Asm Source file(*.s*;*.src;*.a*)”,这时对话框内创建的空的源程序文件已经出现在项目工作窗口的“Source Group1”文件夹中;输入源程序代码;9)点击工具栏“Options for target”按钮,弹出一个对话框,定义“Xtal”为11.0592.下面依序是存储模式、程序空间大小等设置,均用默认值即可。
数码管动态显示及实现方法
值 ,使数码管显示相应 的数值 ,然后 再把锁存
数 码 管 由于价 格便 宜,使 用 简单 ,在 电 器特 别是 家电领 域 ( 比如空调、热水器和冰箱 等 )得 到了极为广泛的应用。在高校 电子信息 类专 业单 片机的教学过程中,数码管动态显示 及 实现方 法是学生普遍反映较难掌握的 内容 。 鉴 于此 ,本 文通 过实际案例详细阐述 了数码管 的动态 显示特 点及 实现方法 。 器 U4的锁 存端 L E设置 为低 电平 ,这 时候段 选和位选都赋上值 了,数码管就 亮了,并且 显
这一 位的数码 管亮 了以后,然后 把锁存端 L E
设为低 电平 ,锁存器 的数据输 出端 的位选就保
பைடு நூலகம்
【 关键词 】动 态显 示 数码管 锁存 器
持住 了,然 后再把控制 段选 的锁存器 U4的锁 存端L E设置为 高 电平 ,然 后通 过 P O口送数
v o i d t i me c a l c u l a t e O ( ) i n t e r r u p t 1, / 中断
速度加快;将数码管显示速度进一步加快 ,通
过修改程 序让数 码管 中的数值依 次每隔 5 0毫 秒显示 ,观察数码管的变化效果 ,可 以看到 数 码管显示 速度加快 ,6个数值在 数码管上 隐约 全部显示 出来 ;再让数码管 中的数值依次每 隔 5毫秒显 示,看看数码管 的变 化效果 ,可 以看 到 1 2 3 4 5 6这 六个数在 数码管 上完全 清晰地 显 示 出来 了。
示相 应的数值 。这就是 用一个 P O 端 口通过 两
个锁存器 U3和 U 4控 制六位 数码 管。 要在第一个 数码 管上显示数字 1 ,可以这 样操 作:将 锁存器 U3的锁存 端 L E设为高 电 平 ,通过 P 0口送数 O x f e ,然后再将锁存端 L E 设为 低电平,这时在锁 存器 U3的右端就保 持
矩阵键盘和动态数码管显示
ONE: 转TWO MOV LJMP TWO: JB MOV LJMP SHR: JB MOV LKP: ADD PUSH
MOV LJMP
A,#0 ;装第0行行值 LKP ;转计算键码 JB ACC.6, TWO ;ACC.6=1,第0行无键闭合,
A,#04H ;装第1行行值 LKP ;转计算键码 ACC.5, THR ;ACC.5=1,第0行无键闭合,转THR A,#08H ;装第2行行值 LKP ;转计算键码 ACC.4,NEXT ;ACC.4=1,第0行无键闭合,转NEXT A,#0CH ;装第3行行值 A,R3 ;计算键码 ACC ;把键码推入堆栈保存
;键仍然闭合,继续延时 ;按键起,键码回送A ;列号加1 ;第0位为0,已经扫描完毕,转KND ;未扫描完,循环右移一位 ;转去扫描下一列
KND:
KS1:
MOV RET
A,#0FFH ;无按键返回码 ;返回
MOV P1, #0FH ;所有列置低电平 MOV A, P1 ;读取P1口状态 CPL A ANL A,#0FH ;屏蔽高4位,保留低4位信息 RET DELAY: MOV R7,#50 ;延时子程序 D1: MOV R6,#100 DJNZ R6,$ DJNZ R7,D1 RET 键盘扫描子程序运行的结果是把键码存放在累加器A中,在主程 序中根据键码进行相应处理。
图13-2 扫描法键盘识别程序流程图
下面是4×4矩阵键盘的扫描法程序清单。如果有键按下,则在累加器A中 返回键码,如果没有键按
KEY: LCALL KS1
;调用判断按键闭合子程序,检查是否有按键 闭合 JNZ LK1 ;A非0,说明有键按下 LJMP KND ;无按键返回 LK1: LCALL DELAY ;有键闭合时延时10ms,去抖动 JNZ LK2 ;延时10ms以后,再次检查是否有按键闭合 AJMP KND ;无按键返回 LK2: MOV R2,# 0F7H ;扫描初值送R2 MOV R3,#00H ;回送初值送R3 LK3: MOV A,R2 MOV P1,A ;扫描初值送P1口 MOV A,P1 ;取回送线状态 JB ACC.7, ONE ;ACC.7=1,第0行无键闭合,转ONE
数码管静态显示和动态显示原理剖析课件
直接驱动方式的优点是电路简单,易于实现。但是,由于每个数码管的阳极和阴极都需要单独连接,因此需要较 多的连接线,适用于数码管数量较少的场合。
串并转换驱动方式
工作原理
串并转换驱动方式是通过将多个数码管的阳极或阴极串联或并联在一起,然后使用一个公共驱动器来 控制它们的电平。
特点
串并转换驱动方式的优点是能够减少连接线数量,适用于数码管数量较多的场合。但是,由于需要使 用公共驱动器,因此对于显示不同的数字时,需要对公共驱动器进行不同的控制。
• 功耗高:选择低功耗的数码管产品,降低功耗。优化电路设计 ,减少电路中的电阻和电容等元件的功耗。在不需要显示时, 可以通过软件控制数码管进入休眠状态,降低功耗。
06
数码管的未来发展趋势及 展望
高亮度数码管的发展趋势
技术创新
高亮度数码管在技术上将不断得 到创新,如提高亮度、降低功耗
、增强可靠性和稳定性等。
性。
02
多样化应用场景
柔性数码管将应用于多种类 的产品中,如可穿戴设备、车
载显示、家居装饰等。
03
智能化与个性化
柔性数码管将实现智能化和个 性化发展,如自适应亮度和色 彩调节、个性化显示等功能。
THANKS
应用领域扩大
随着高亮度数码管技术的不断完善 ,其应用领域也将不断扩大,如户 外广告、交通信号灯、航空航天显 示等领域。
智能化发展
高亮度数码管将与物联网、人工智 能等技术结合,实现智能化发展, 提高显示效果和用户体验。
多位数码管的发展趋势
多位集成
多位数码管将向更高集成度发展 ,实现多位一体显示,提高空间
数码管静态显示和动态显示 原理剖析课件
目录
• 数码管概述 • 数码管静态显示原理 • 数码管动态显示原理 • 数码管的驱动方式 • 数码管的常见问题及解决方案 • 数码管的未来发展趋势及展望
数码管静态与动态显示课件
按颜色分类
按位数分类
优点
结构简单、体积小、重量轻、价格便宜、维护方便。
缺点
只能显示数字和字母,不能显示图像和视频,且亮度较低。
02
CHAPTER
数码管静态显示
七段数码管
由七个LED灯组成的,可以显示0-9的数字和部分字母。
显示原理
通过控制LED灯的亮灭来显示不同的字符。
8位数码管
05
CHAPTER
数码管显示常见问题及解决方案
数码管在显示时出现显示不全或者闪烁的问题,主要是由于硬件电路设计不合理或者软件编程有误所致。
这类问题通常是由于电源电压不稳定、驱动电路故障、显示数据不正确或者刷新频率过低等原因引起的。解决这类问题需要检查硬件电路设计和电源电压是否正常,同时检查软件程序中是否存在错误。
缺点
04
CHAPTER
数码管显示实例
数码管结构
4位7段数码管由7个LED段和4个位组成,通过控制各段的亮灭状态可以显示不同的数字。
电路设计
为了驱动4位7段数码管,需要设计相应的电路,包括电源、译码器、驱动器等部分。译码器的作用是将输入的BCD(二进制编码的十进制)信号转换成相应的LED段信号,驱动器则负责驱动各LED段。
注意事项
VS
除了4位数码管外,还有8位数码管,可以显示0~9999等更大的数字。在电路设计和编程实现上,8位数码管与4位数码管类似,只是需要更多的LED段和位。
点阵式数码管
点阵式数码管由多个LED点组成,可以显示各种文字和图案。在电路设计和编程实现上,点阵式数码管与7段数码管类似,但需要更多的LED点和驱动器。
总结词
详细描述
总结词
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
g
f 1
e 1 1
d 1 1 1
c 1 1
b 1 1 1
a 1 1 1 3F 06 5B 4F 66
a
1 1 1 1
1 1
1 1
f
b g
4
5
6 c 7
1
1
1
1 1
1
1
1
1 1 1
1
1 1
6D
7D 07
e
8
d
DP
1
1
1
1
1
1
1
1
1
1
1
1
1
7F
6F
5
9
College of Communication Engineering, Jilin University
College of Communication Engineering, Jilin University
{
9
14.1 数码管显示
14.1.5 数码管显示软件设计
示例程序 void delay(unsigned int countert) { unsigned int i,j; for(i=0;i<countert;i++) for(j=0;j<4000;) j++; }
14.2 键盘识别
14.2.1 开关与键盘 14.2.2 键盘的消抖问题 14.2.3 键盘的识别功能 14.2.4 键盘的硬件设计 14.2.5 键盘扫描法软件设计 14.2.6 键盘的扫描策略 14.2.7 键盘识别应用实例
College of Communication Engineering, Jilin University 13
14.2 键盘识别
14.2.1 开关与键盘 14.2.2 键盘的消抖问题 14.2.3 键盘的识别功能 14.2.4 键盘的硬件设计 14.2.5 键盘扫描法软件设计 14.2.6 键盘的扫描策略 14.2.7 键盘识别应用实例
College of Communication Engineering, Jilin University 2
键盘
由多个按键组合而成 为了区分按键,给每个按键安排了一个 代码,称键码。 编码键盘和非编码键盘相比,前者较复 杂,较贵。后者较简单,极便宜。 非编码键盘分独立式键盘和行列式键盘
College of Communication Engineering, Jilin University 15
College of Communication Engineering, Jilin University 14
14.2 键盘识别
14.2.1 开关与键盘
开关(Switch)
状态-闭合和断开 种类-船形开关,拨位开关
按键
带有自恢复装置的开关,常开常闭型 各种形状,各种尺寸 耐高压,轻触式,带指示
为了减小MCU的灌入电流,段 控制端都连接了输出驱动器 74LS07
注:共阳极,所有引脚低电平有效
6
College of Communication Engineering, Jilin University
14.1 数码管显示
14.1.4 数码管显示硬件设计
实验板上有4位数码管,共阳极结构,引出12根连线,8根段控制, 4根位控制,对应关系如下:
14.1 数码管显示
14.1.3 数码管动态扫描
通过段控制信息确定数码管显 示的数字(多位复用) 通过位控制信号使得任意时刻 只有一位数码管处于显示状态 利用视觉暂留现象,定时更改 位控制信息和段控制信息,得 到稳定的数字显示
段控制
位控制
多个LED同时点亮的电流都经 过公共端,MCU的IO无法承受, 必须使用三极管
1 X1
5 9 D
6 A E
7 B
Y3
F
Y4
1 X2
0 X3
1 X4 列端口输入
19
College of Communication Engineering, Jilin University
14.2 键盘识别
14.2.5 键盘扫描法软件设计
当所有行输出为0,列输入码若 行端口输出 不全为1,说明有键按下; 令一行输出为0,其余行输出为 0 0 1,列输入码若不全为1,说明 该行有键按下: 0 4
14.1 数码管显示
14.1.5 数码管显示软件设计
显示一位数字: const unsigned char DisplayDecode[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07, ~0x7f,~0x6f,~0x77,~0x7c,~0x39,~0x5e,~0x79,~0x71}; //0-9 ABCDEF DDRP|=0xFF; DDRT|=0xFF; //点亮一个数码管,显示2 PTP=DisplayDecode[2]; PTT=0xFE; LED动态显示: 按人眼的反应,刷新频率得大于80Hz,即所有LED在12ms内必须刷新 一次。现有4组LED,即每段显示3ms。这个3ms可以用软件延迟实现, 但为提高CPU效率,一般使用定时器。
使用多个数码管表示数字 应用非常广泛
多种颜色,多种尺寸
College of Communication Engineering, Jilin University 4
14.1 数码管显示
14.1.2 七段数码管编码
共阴型:1 – 表示点亮 0 – 表示熄灭 共阳型:取反
N 0 1 2 3
12 11 10 9 8 7 C4 a f C3 C2 b
6 5 C1 g
4 c
3 2 dp d
1 e
实验中可将段控制连接到P口,将位控制连接到T口,连线关系如下:
12 11 10 9 8 7 6 5 4 3 2 1 T3 P0 P5 T2 T1 P1 T0 P6 P2 P7 P3 P4
College of Communication Engineering, Jilin University 7
College of Communication Engineering, Jilin University 3
14.1 数码管显示
14.1.1 七段数码管原理与结构
把7个细长的LED排成 8个LED,使用一个公用端 字型
共阳型:所有LED的阳极连在一起
共阴型:所有LED的阴极连在一起
单独控制每个段的亮灭,可以表示出数字 0~9
本章提要
14.1 数码管显示
14.1.1 七段数码管原理与结构 14.1.2 七段数码管编码 14.1.3 数码管动态扫描 14.1.4 数码管显示硬件设计 14.1.5 数码管显示软件设计 14.1.6 LED显示应用实例
14.2 键盘识别
14.2.1 开关与键盘 14.2.2 键盘的消抖问题 14.2.3 键盘的识别功能 14.2.4 键盘的硬件设计 14.2.5 键盘扫描法软件设计 14.2.6 键盘的扫描策略 14.2.7 键盘识别应用实例
(2)在4位数码管上实现“0”字符跑马灯
(3)编制实验1中的已知年月,求天数的C程序,将天数显示在 数码管中间两位上,前后放上分隔符“-” 例如:
(4)利用实验1中的已知年月,求天数的汇编程序作子程序,实 现混合编程。
(5)利用DIP开关实现上述功能的菜单(中断控制)
College of Communication Engineering, Jilin University 11
单片机原理与应用
第14章 动态数码管显示与键盘识别
College of Communication Engineering, Jilin University
本章提要
14.1 数码管显示
14.1.1 七段数码管原理与结构 14.1.2 七段数码管编码 14.1.3 数码管动态扫描 14.1.4 数码管显示硬件设计 14.1.5 数码管显示软件设计 14.1.6 LED显示应用实例
根据行输出码和列输入码中同 时为0的行号和列号,可以确定键 号。
0 0 5V
1 5 9 D
2 6 A E
3 7
Y1(PA0) Y2(PA1)
8 C
B
Y3(PA2)
多键识别时需要依次扫描所有 行(shift+A) 窜键问题:软件处理 连续输入问题:需要考虑扫描 策略
F
Y4(PA3)
1 1 0 1 X1 X2 X3 X4 列端口输入 (PA4) (PA5) (PA6) (PA7)
1 2 3/1
//3ms
晶振16M,总线时钟8M,延时为: 4000*(1+2+3)/(8*106)s=3ms
College of Communication Engineering, Jilin University
10
14.1 数码管显示
14.1.6 LED显示应用实例(实验11) 任务: (1)在4位数码管上显示班级和学号,之间用小数点分隔
14.2 键盘识别
14.2.4 键盘的硬件设计 实验板上有一个4*4的薄膜键盘,板上无上拉电阻,接口是 X1-4、Y1-4,实验中可连接到PORTA口上,Y1-4(PA0-3) 为输出, X1-4(PA4-7)做为输入,使能PORTA的上拉电阻 1 2 3 0 0
Y1
Y2 0 行端口输出 0 0
4 8 C
17
14.2 键盘识别
14.2.4 键盘的硬件设计
5V
0 0 行端口输出 0 0
0 4 8 C
1 X1
1 5 9 D
2 6 A E
3 7
Y1
1 5 9 C