单片机控制4位数码管程序设计数码管滚动显示控制

如何实现按键控制数码管移位显示! - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
如何实现按键控制数码管移位显示!
15:05:02  
本帖最后由 小易不易啊 于
15:30 编辑
已退回1积分
17:19:13  
不是有位选嘛,每次按键加一位应该很简单的
17:32:11  
不是有位选嘛,每次按键加一位应该很简单的
矩阵键盘要怎么写呢
19:19:27  
看你I/O口多不多了,如果很多就直接用I/O口分开控制,如果不够用就会复杂一点了
10:31:23  
已经解决了,谢谢各位
09:14:31  
可以看下你那个任务书吗
09:34:47  
可以看下你那个任务书吗
什么任务书?。。。。
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司数码管滚动显示
在电子工程世界为您找到如下关于“数码管滚动显示”的新闻
数码管滚动显示资料下载
 3.4 花样流水灯
 3.5 LED模拟交通灯
 3.6 单只数码管循环显示0~9
 3.7 8只数码管滚动显示单个数字
 3.8 8只数码管显示多个不同字符
 3.9 数码管闪烁显示
 3.10 8只数码管滚动显示数字串
 3.11 K1~K4控制LED移位
 3.12 K1~K4按键状态显示
 3.13 K1~K4分组控制LED...
上显示数字
4、 编写程序在6个数码管上滚动显示数字
5、 重点讲解动态显示,保持时间,以及扫描频率对闪烁和亮暗程度的影响。
第五讲:键盘检测原理(比较复杂)
1、 键盘作用,检测原理,如何消抖,独立键盘检测程序编写。
2、 矩阵键盘检测程序编写,涉及到返回值函数调用。
第六讲:1602液晶的使用
1、 看手册,管脚、写指令和数据、时序图。
2、 编写程序...
数码管动态显示 能实现数码管的滚动显示...
数码管滚动显示.rar...
数码管滚动显示年月日和时分秒...
4.1 系统功能描述57
4.2 系统方案及电路设计57
4.2.1 系统方案57
4.2.2 单片机计时原理58
4.2.3 LED数码管显示器显示原理58
4.2.4 LED数码管显示器的显示方法60
4.2.5 电路设计62
4.3 程序设计63
4.3.1 主程序设计63
4.3.2 变量定义及初始化模块64
4.3.3 判断按键输入的T1定时中断服务子程序模块65...
8只数码管滚动显示单个数字 (2).rar...
8只数码管滚动显示数字串.rar...
8只数码管滚动显示单个数字.rar...
51单片机 数码管滚动显示年月日 源代码...
数码管滚动显示相关帖子
1先是从最右移动到最左端,接着2也从最右端移动,到1的后面停止,依此类推。(1,12,123)实在是想不出该怎么动态扫描,写在哪了。只是会控制位选来移动数字了,但不知道该怎么让它常亮。 数码管一种滚动显示问题 这叫从右到左叠加,吧一个数码管看做一个LED试试。。流水叠加...
, 8, \"2015\", 4, 1); //7段屏显示数字2015
53.& && &&&LCD_Display_ElecFans(); //滚动显示Elec-Fans
55.& && &&&while(1)
56.& && &&nbsp...
用软件实现8位数字在数码管上滚动显示,用什么方法? 数码管显示 用C语言就可以了
回复 楼主lh 的帖子 动态扫描
跟显示静态内容一样,区别只是要定时更新。...
,整个P3口)都引出来了,还是有一定扩展性的......& ”
是触摸屏时钟么?
感觉外设挺复杂的,如果可以用带有部分这些外设的单片机,是不是更简单啊?
“我最近正在考虑用51做一个车辆测速报警的东东,正在构思 ”
希望你有详细些的想法。比如说,采用什么做检测装置?用什么显示?LCD还是数码管?
/id_XOTIzNjM1ODA=.html
相关程序: 第十一课 LED数码管之二 玩流水灯(1) 第十二课 LED数码管之三 玩流水灯(2)--花样式流水灯
这是一个有趣的综合性实验,会用到前面讲的一些东西
/*--------------------------------------------------------------*/
//LED八位数码滚动显示
//显示部分用中断方式...
;├─LED数码管最简流水灯
│&&├─LED数码管最简显示原理
│&&├─LED数字钟
│&&├─LED数码管玩流水灯
│&&├─LED数码管滚动显示
│&&└─595数字钟
├─4. 时钟芯片
│&&├─DS1302+LCD1602
│&&nbsp...
,显示8位拨码开关对应数据,这里包括拨码开关的输入和动态数码管的数据显示,其中包括对拨码开关输入的数据进行出来和BCD码转换为七段码的函数设计。
第五讲:按键检测例程,主要讲解了按键检查方法以及显示控制的设计。
第六讲:按键消抖例程,主要介绍了按键消除抖动的方法,用两个按键控制数据的加减改变数码管显示数据。
第七讲:交通灯控制例程,主要介绍了交通灯控制电路的设计方法...
控制的设计。
第六讲:按键消抖例程,主要介绍了按键消除抖动的方法,用两个按键控制数据的加减改变数码管显示数据。
第七讲:交通灯控制例程,主要介绍了交通灯控制电路的设计方法,让大家了解时如何控制时序。
第八讲:字符滚动显示例程,主要讲解了如何控制点阵显示字符,并且进行滚动。
第九讲:模数转换控制例程,主要讲解了如何控制ADC0804进行电压采集并显示数据。
第十讲:正弦波发生器例程...
第一讲:开发板和软件的操作使用
第二讲:AVR单片机的概述和C语言的基础知识
第三讲:点亮发光二极管、驱动蜂鸣器、继电器
第四讲:数码管工作原理
1、共阴共阳数码管内部结构,显示原理。
2、用数字万用表标定数码管的段选和位选
3、编写程序使1个数码管上显示数字
4、编写程序在6个数码管上滚动显示数字
5、重点讲解动态显示,保持时间,以及扫描频率对闪烁和亮暗程度的影响。
,这里包括拨码开关的输入和动态数码管的数据显示,其中包括对拨码开关输入的数据进行出来和BCD码转换为七段码的函数设计。
第五讲:按键检测例程,主要讲解了按键检查方法以及显示控制的设计。
第六讲:按键消抖例程,主要介绍了按键消除抖动的方法,用两个按键控制数据的加减改变数码管显示数据。
第七讲:交通灯控制例程,主要介绍了交通灯控制电路的设计方法,让大家了解时如何
控制时序...
数码管滚动显示视频
你可能感兴趣的标签
热门资源推荐
&TI 最新应用方案,助力智能开发51单片机控制数码管动态显示程序
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
51单片机控制数码管动态显示程序
&&&&& 说明: 驱动四位一体数码管动态显示数字,可方便的移植到其它程序中。
&&&&&&&&&&&& 例如:1、硬件改为三位一体或二位一体数码管,只需修改Display_Scan()函数COM个数。
&&&&&&&&&&&&&&&&&& 2、本例中,采用了共阴数码管,如果用在共阳数码管,只需修改相应段码表。
&&&  &&&&&&
&&&&&&&&&&&& 本程序使用P0口作为段码数据发送端,P2.0-P2.3作为数码管扫描选通,
&&&&&&&&&&&& 使用P0口时,因单片机内部没有上拉电阻,所以要外接上拉电阻(参考阻值470欧姆).
//&&&&&&&&&&&&&&&&& STC89C52RC
//&&&&&&&&&&&&&& +---------------+&&&&&&&&
//&&&&&&&&&&&&&&&& |&&&&&&&&&&&&&&&& |
//&&&&&&&&&&&&&&&& |&&&&&&&&&&&&&&&& |&&&&&&&&&& Digital Number
//&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&& _______________________
//&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&& |&&&& __&&&&& __&& __&&&&& __&&& |
//&&&&&&&&&&&&&& |&&&& P0.0--P0.7|===&| |& | |& | |& | |& | |
//&&&&&&&&&&&&&& |&&& (a,b...g,h)|&&& | |--| |--| |--| |--| | 4位共阴数码管
//&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&& |&&& |__|.|__|.|__|.|__|.|
//&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&&&& -----------------------
//&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&&&&&&&& |&&&&&& |&&& |&&& |
//&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&&&&&&&& |&&&&&& |&&& |&&& |
//&&&&&&&&&&&&&& |&&&& P2.7(COM3)|--------+&&&&&& |&&& |&&&& |
//&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&& |&&&& |
//&&&&&&&&&&&&&& |&&&& P2.6(COM2)|-------------+&&& |&&&& |
//&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&&&&&&&&&&&&&&&&&& |&&&& |
//&&&&&&&&&&&&&& |&&&& P2.5(COM1)|------------------+&&&& |
//&&&&&&&&&&&&&& |&&&&&&&&&&&&&& |&&&&&&&&&&&&&&&&&&&&&&&& |
//&&&&&&&&&&&&&& |&&&& P2.4(COM0)|-----------------------+
//&&&&&&&&&&&&&& +---------------+
#include&&&&
//&&&&&&&&&&&&&&&&&&&&&&     函数声明
//=======================================================================
void DisplayNumber(unsigned int Num);
void delayms( int ms);
//=======================================================================
unsigned char code LED_table[]={&&&&&& //使用附带&51单片机工具箱&可以很容易编码
0x3f,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&0&
0x06,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&1&
0x5b,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&2&&&&&&&&&&&& AAAA
0x4f,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&3&&&&&&&&&&& F&&& B
0x66,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&4&&&&&&&&&&& F&&& B
0x6d,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&5&&&&&&&&&&&& GGGG
0x7d,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&6&&&&&&&&&&& E&&& C
0x07,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&7&&&&&&&&&&& E&&& C
0x7f,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&8&&&&&&&&&&&& DDDD&&& H
0x6f,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&9&
0x00,&&&&&&&&&&&&&&&&&&&&&&&&&&&& //black
0x80&&&&&&&&&&&&&&&&&&&&&&&&&&&& //dot
#define black 10&&&&&&&&&&&&&&& // 空白
#define dot&& 11&&&&&&&&&&&&&&& // 小数点
unsigned char DisBuff[4];&&&&&&& //定义显示缓冲数组
unsigned char COM;
//&&&&&&&&&&&&&&&&&& 定义通信端口
//===========================================================================
sbit COM0=P2^4;
sbit COM1=P2^5;&&&&&&&&&&&&&&& //对应口线由硬件确定
sbit COM2=P2^6;
sbit COM3=P2^7;
//===========================================================================
void Sys_Init()
& TMOD=0x01;&&&&&&&&&&&&&&& //定时器/计数器0为定时器方式 16位工作模式  
& TH0=()/256;&&&&&&& //初始时间常数
& TL0=()%6;&&&& //1.0ms
& ET0=1;&&&&&&&&&&&&&&&&&&& //定时器/计数器0中断允许
& EA=1;&&&&&&&&&&&&&&&&&&&&&&& //总中断允许
& TR0=1;&&&&&&&&&&&&&&&&&&& //启动定时器/计数器开始工作
void DisplayNumber(unsigned int Num)&&&&& //显示程序
&&&&&&&&&&&&&&&&&&&&&&
&&& EA=0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //禁止总中断
&&& for(i=0;i&4;i++)
&&&& DisBuff[i]=N&&&&&&&&&&&&&&&&&&&&&&&&&&& //拆分数字
&&& Num/=10;
&&& for(i=3;i&=0;i--)&&&&&&&&&&&&&&&&&&&& //循环4次
&&& if (DisBuff[i]==0) DisBuff[i]=& //消隐无效&0&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //例如将 0123 改成 123,仅显示有效数字
&&& EA=1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //总中断允许
void Display_Scan() interrupt 1&&&&&&&&&&&&&&&& // 中断服务程序,数码管选通扫描
TR0=0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
& TH0=()/256;&&&&&&&&&&&&&&&&&&&&&&&& //高8位和低8位时间常数
& TL0=()%6;&
TR0=1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //启动定时器0
&&& if(COM&3) COM=0;
&&& COM0=COM1=COM2=COM3=1;&&&&&&&&&&&&&&&&&&&& //将COM0-COM3置1,全暗
&&& switch(COM)
&&& case 0:&&& P0=LED_table[DisBuff[0]]; COM0=0;&&&& //分别选通COM0-COM3&& 低电平有效
&&& case 1: P0=LED_table[DisBuff[1]]; COM1=0;&&&
&&& case 2:&&& P0=LED_table[DisBuff[2]]; COM2=0;&&&
&&& case 3:&&& P0=LED_table[DisBuff[3]]; COM3=0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 与decp(0x20)位或,恰好点亮小数点位段
&&& COM++;&&&&&&&&&&&&&&&&&&&
void delayms(int ms)
&& for(;ms&0;ms--)&&&&&&&&&&& //循环ms次
&&&&& for(i=0;i&123;i++);&& // for(i=0;i&123;i++); 每次1ms延迟@ 12.0MHz
&& }&&&&&&&&&&&&&&&&&&&&&&& // for(i=0;i&113;i++); 每次1ms延迟@ 11.0592MHz
void main()
&&&&&&&&&&&&&&&& //定义变量
&Sys_Init();&&&&&&&&&&&&&&&&&&&&&&& //初始化timer0
&while(1)&&&&&&&&&&&&&&&&&&&&&&&& //死循环,单片机必须是死循环
&&& DisplayNumber(i);&&&&&&&&&&& //调用数码管显示函数&&&
&&& delayms(200);&&&&&&&&&&&&&&&& //调用延时函数,使显示数字保持一段时间
&&& i++;&&&&&&&&&&&&&&&&&&&&&&& //这里演示一个数字累加的程序
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //也可以直接写一个常数用来显示,看实际效果
&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&& //例如DisplayNumber(1234); 编译后将HEX文件
}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //下载到学板里应该正常显示数字&& 1234&&& 。
//&&&&&&&&&&&&&&&&&& 另一种段编码方法&&&
//===========================================================================
//宏定义,数码管a-g各段对应的比特,更换硬件只用改动以下8行
#define&&& a 0x04&&&&&&&&&&&&&&&&& //& AAAA
#define&&& b 0x01&&&&&&&&&&&&&&&&&&& // F&&& B
#define&&& c 0x10&&&&&&&&&&&&&&&&&&& // F&&& B
#define&&& d 0x40&&&&&&&&&&&&&&&&&&& //& GGGG
#define&&& e 0x80&&&&&&&&&&&&&&&&&&& // E&&& C
#define&&& f 0x02&&&&&&&&&&&&&&&&&&& // E&&& C
#define g 0x08&&&&&&&&&&&&&&&&&&& //& DDDD&&& H
#define&&& h 0x20
&&&&&&&&&&&
//用宏定义自动生成段码表,很好的写法,值得学习
//更换硬件无需重写段码表
unsigned char code LED_table[]={
a+b+c+d+e+f,&&&&&&&&&&&&&&&&&& //&0&
b+c,&&&&&&&&&&&&&&&&&&&&&&&&&& //&1&
a+b+d+e+g,&&&&&&&&&&&&&&&&&&&&&& //&2&
a+b+c+d+g,&&&&&&&&&&&&&&&&&&&&&& //&3&
b+c+f+g,&&&&&&&&&&&&&&&&&&&&&& //&4&
a+c+d+f+g,&&&&&&&&&&&&&&&&&&&&&& //&5&
a+c+d+e+f+g,&&&&&&&&&&&&&&&&&& //&6&
a+b+c,&&&&&&&&&&&&&&&&&&&&&&&&&& //&7&
a+b+c+d+e+f+g,&&&&&&&&&&&&&&&&&& //&8&
a+b+c+d+f+g,&&&&&&&&&&&&&&&&&& //&9&
b+c+e+f+g,&&&&&&&&&&&&&&&&&&&&&& //&H&
a+f+e+g,&&&&&&&&&&&&&&&&&&&&&& //&C&
d+e+f,&&&&&&&&&&&&&&&&&&&&&&&&&& //&L&
g,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&-&
0x00&&&&&&&&&&&&&&&&&&&&&&&&&& //black
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网 51hei.com , All Rights Reserved您现在的位置是: &
51单片机的数码管动态显示技术
清远职业技术学院,广东清远511510
摘 要:在实际应用中,单片机的数码管显示一般都用动态显示方式,正确、高效应用数码管动态显示技术是这类设计成功与否的一个关键问题之一。
  摘要:在实际应用中,单片机的数码管显示一般都用动态显示方式,正确、高效应用数码管动态显示技术是这类设计成功与否的一个关键问题之一。
  关键词:单片机;数码管;动态显示;数据
  在信息时代的今天,单片机技术应用越来越广泛,涉及各行各业,也渗透到人们的日常生活之中,如洗衣机、空调、冰箱等的控制系统,就可以用单片机实现。为了让人们很直观的了解相关设备当前的工作状态,很多时候需要将当前的时间、温度、工作程序等状态通过数码管显示出来,这就涉及到单片机的数码管显示技术。
  1 单片机与LED数码管动态显示接口电路
  动态显示方式是将所有数码管的8段按同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,显示数码同时传到每个数码管,但每个瞬时由位选通信号选通一个数码管,即在某一瞬时只有一个数码管显示数据,且显示时间不能太长,一般为1-10MS,依次循环扫描,轮流显示,由于人的视觉滞留效应,人们看到的是多位同时稳定显示。占用I/O端线少,电路较简单,编程较复杂,CPU要定时扫描刷新显示,一般适用于显示位数较多的场合。
  由于动态显示情况下,CPU要定时扫描刷新显示,数码管的信号在不停的通断变化,为了保证显示效果,一般会在数据端口接一个缓冲驱动芯片(如74HC244、74LS244等),而在位选通端接一个PNP三极管作驱动(如等)。(如图1)
  2 单片机控制数码管显示软件设计
  2.1创建显示代码表
  在单片机内部,各种数据都是以二进制的形式存在,但是数码管显示的数据是给人们直接读取的,是根据人们的习惯方式使某些段点亮来直接显示出1、2、3...等,如共阳数码管显示数据1,就要使数码管的b和c两端点亮,则8段代码就为0F9H,这和1的二进制代码01H是不一样,所以数码管的显示代码和二进制不是对应的,必须要建显示代码表。
  在程序设计时一般在显示程序最后定义一个显示代码表,根据数码管是共阴还是共阳,显示代码是不一样的,共阳数码管在应用时公共极COM接+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管在应用时公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
  2.2显示数码转换
  在很多运用单片机进行测量的系统中,通过传感器或A/D转换后的数据只是测量数据,并非显示数据,这些8位二进制测量数据可能包含很多位十进制数信息,因为数码管要显示出十进制信息或十六进制信息,人们才能直接看出结果。所以必须将这些测量数据转换为二进制的显示数据,才能通过查表的方式正确显示直观数据。
  因为8位二进制能表示的范围为0-255,如果测量的数据按权位展开所得的十进制数正好就是我们所需要的十进制数,则可以按照二进制转换为十进制BCD码的方式先将测量数据除以100,所得的商即是十进制数的百位,再用余数除以10,所得的商即为十位,而所得的余数就是个位,将这三位数分别用三个内存单元存储,通过查表指令读出对应的显示代码传给数码管,即可显示3位十进制数据。
  当测量的数据按权位展开所得的十进制数不是我们所需要的十进制数,就必须按照测量的要求,找出实际的数据与测量的数据之间的对应关系来进行转换。如在电压测量系统中,测量范围为0-5V,测量精度为0.02V,这样通过ADC0809转换后的数据就是8位二进制测量数据。这个数据就包含了十进制电压值得个位、十分位和百分位,必须从这8位二进制数据中拆出个位、十分位和百分位的电压值,每一位用一个数码管显示,这样才能直观的读出当前测量的电压值是几点几几伏。
  8位二进制有0-255共256个值,但是电压值却只有0-5V,此时如用二进制直接除以100、10就不能得到正确的结果,必须根据实际情况寻求另外的方法。根据电压测量的范围可以把8位二进制的0和电压的0V对应,而8位二进制的255和电压值的5V对应,这样可以近似的把0-255分成5分,每份分别对应一伏的电压,即255/5=51,每一伏电压用51个二进制值来表示,1/51=0.0196V,即一个8位二进制值所代表的电压值近似为0.0196伏。然后再按照这样的关系去除以51,得到个位电压值;再将余数与26比较(因为8位存贮单元最大值为255,如果余数大于26,乘以10后,8位存贮单元就不能存),小于26直接乘以10再除以51,所得商就是十分位电压值;如大于26则先减去26,再乘以10,然后除以51,所得商最后将结果再加上5,即得十分位电压值;将第二次除以51所得余数,按第二次除以51的方法进行计算,所得结果就是百分位电压值。
......(未完,请点击下方“在线阅读”)
特别说明:本文献摘要信息,由维普资讯网提供,本站只提供索引,不对该文献的全文内容负责,不提供免费的全文下载服务。
金月芽期刊网 2018后使用快捷导航没有帐号?
手机&智能终端
元器件/物料库
当前位置:
查看: 900|回复: 0
8位数码管显示动态显示电路图及程序
8位数码管显示动态显示电路图及程序
15:32 上传
点击文件名下载附件.
54.03 KB, 下载次数: 2
售价: 1 rd币 &[]
技术词条:
项目累计金额
对接项目数量
最新项目:
展开版块导航
获取手机验证码

我要回帖

更多关于 单片机控制数码管 的文章

 

随机推荐