AVR单片机-数码管2(动态扫描)

发布者:Xiaohan521最新更新时间:2015-07-13 来源: 51hei关键字:AVR单片机  数码管  动态扫描 手机看文章 扫描二维码
随时随地手机看文章
前面说了数码管的静态扫描,但是在大多数场合下都是动态扫描。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

 本程序的原理图:


 

源程序:

/*
 * shumaguan1.c
 *
 * Created: 2011-6-24 20:45:16
 *  Author: ZYIN
 */

#include
char temp;
int i,h,num,k;

unsigned char led0[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
       0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
       0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};

void delay(void)
{
 unsigned int j;
 j=1000;
 while(j--);
}

int main(void)
{
 DDRF=0xff;
 PORTF=0b00000110;
 DDRA=0xff;
 DDRC=0xff;
    while(1)
    {
   
  for(k=0;k<45;k++)
  {
   temp=0b00000001;
   for(i=0;i<8;i++)
   {
    num=i+h;
    PORTA=temp;
    PORTC=~led0[num];
    delay(); 
    temp<<=1;
   }
   }
  h++;
  if(h==24)
  h=0;
   }
}

效果图:

 

 
 
关键字:AVR单片机  数码管  动态扫描 引用地址:AVR单片机-数码管2(动态扫描)

上一篇:avr单片机+12864液晶动画显示
下一篇:AVR单片机-流水灯2

推荐阅读最新更新时间:2024-03-16 14:24

AVR单片机在工业采暖控制系统中的应用解析
1. 引言 单片机在工业控制领域应用时不同于民用、商用领域中的应用,工业控制所处的环境相对比较恶劣,干扰源多,其常见干扰源来自现场工业电气在投入、运行、切断等工况下产生的静电感应、尖峰电压、浪涌电流等干扰。实践表明,在工作室中按用户要求设计的小型工业采暖控制系统,尽管各项逻辑功能及技术指标的测试都正常,但该系统拿到现场上却不能使用,检测失灵,操作失控,显示花屏等现象接踵而来。经分析,其干扰是从现场不同路径传入单片机控制系统的。切断干扰源,提高单片机抗干扰能力是解决控制系统正常工作的前提。 2 抗干扰措施 2.1 测温信号的抗干扰 测温电路采用的是单总线芯片DS18B20,该芯片具有测温精度高,连接线路简单等优点,其测温范围为-
[单片机]
<font color='red'>AVR单片机</font>在工业采暖控制系统中的应用解析
单只数码管循环显示0—9
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff }; void DelayMS(uint x) { uchar t; while(x--) for(t=120;t 0;t--); } void main() { uchar i=0; P0=0x00; while(1) {
[单片机]
单只<font color='red'>数码管</font>循环显示0—9
用Proteus学习51单片机之数码管
今天学的是数码管和锁存器的使用。用锁存器的目的,是为了减小IO口的使用,本来至少得用15根IO口的,用了锁存器后,只需要用10根IO口,若是继续增加数码管,IO口的增加也是一根根增加了。 锁存器的作用,是把当然IO口的状态保存下来,具体由锁存器的LE脚控制,当LE脚为高电平时,锁存器的输出和输入一样,若LE脚为低电平时,则把LE脚电平改变前的输入脚的状态保存下来作为输出,此时不管输入怎么变,它的输出也不会变了。这样,就做到了单片机的1组输出脚,可以控制多个设备的目的。 原理图请见上图,在图中,可以看到导线很少,这是因为要连接的导线很多,如果直接用导线连接的话,会导致整个设计图乱成一片,根本看不清楚,所以,这里使用标号来连接
[单片机]
用Proteus学习51单片机之<font color='red'>数码管</font>
51单片机 数码管模块
1.原理图 共阴极和共阳极: 简单来说,如果是共阴极的话,我们想要驱动某一个led灯,就应该给另一端加高电平,共阳极的话就加低电平 数码管显示分两种:静态显示和动态显示; 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动。 动态显示:动态驱动是将所有数码管的8个显示笔划 a,b,c,d,e,f,g,dp 的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控
[单片机]
51单片机 <font color='red'>数码管</font>模块
初尝Linux下的AVR单片机开发
此前接触过AVR单片机,发现无论是书店里面的教材,还是网上一大堆的中文资料,无一例外都是说windows下使用WinAVR、ICCAVR之类的,Linux方面的简直只字不提,难道这就是传说中的中国国情?外国情况可很不一样,玩单片机的Geek一般都很哈Linux,做单片机开发的软件一应俱全,当然还是开源的。 昨天从淘宝重新买了条USB的下载线,回来一看是USBasp的设计,附送的光盘当然也是win下的驱动和说明了,忽略。 插上下载器,lsusb,认倒是认出来了,叫做VOIT,那怎么用呢?上网一搜,原来USBasp是德国人的设计http://www.fischl.de/usbasp/,GPL的,其中提到AVRDUDE支持USB
[单片机]
51单片机基础——数码管动态显示
#include reg52.h #define wu P0 #define uchar unsigned char sbit wei1=P2^4;//定义第一位LED显示器 sbit wei2=P2^5;//定义第二位LED显示器 sbit wei3=P2^6;//定义第三位LED显示器 sbit wei4=P2^7;//定义第四位LED显示器 //共阴极数码表 uchar code gy ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; voi
[单片机]
51单片机 独立按键k1控制数码管移位 k2控制数值加
按下独立按键k1数码管左移,按下独立按键k2数码管数值加1。 typedef unsigned char u8; u8 code smgwei ={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c}; u8 code smgduan ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit key1=P3^1; sbit key2=P3^0; u8 wei,shu; void delay(u16 i) { while(i--); } void button() { if(key1==0) { delay(1000);
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved