avr单片机数码管显示时钟

发布者:MysticEssence最新更新时间:2017-12-13 来源: eefocus关键字:avr单片机  数码管  显示时钟 手机看文章 扫描二维码
随时随地手机看文章

//数码管数据P0口,数码管控制P2口 

#include  
#include  
#include PACe.h> 
#include  
#include 

#define code PROGMEM 
#define uchar unsigned char 
#define uint  unsigned int 

code const uchar LED_7[16] = {0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff};//common of + 

code const uchar position[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; 


uchar time[4];             //时间计数 
volatile uchar disp_buff[8];        //显示缓冲区 
volatile uchar time_count = 0; 

volatile uchar point_on = 0; 
volatile uchar posit = 0; 
volatile uchar time_10ms_ok = 0; 

void time_to_dispbuff(void); 
void time1_init(void); 
void time0_init(void); 
void display(void); 

int main(void) 

    PORTA = 0xff; 
    DDRA = 0xff; 
    PORTC = 0xff; 
    DDRC = 0xff; 

    time[0] = 00;//1/10sec 
    time[1] = 30;//sec 
    time[2] = 59;//minute 
    time[3] = 23;//hour 
    time_to_dispbuff(); 

    time1_init(); 
    sei(); 

    while(1) 
    { 
        if(time_10ms_ok) 
        { 
            time_10ms_ok = 0; 
            if(++time[0]>=100) 
            { 
                time[0] = 0; 
                point_on = ~point_on; 
                if(++time[1]>=60) 
                { 
                    time[1] = 0; 
                    if(++time[2]>=60) 
                    { 
                        time[2] = 0; 
                        if(++time[3]>=24) 
                        { 
                            time[3] = 0; 
                        } 
                    } 
                } 
            } 
            time_to_dispbuff(); 
        } 
    } 
}  

void time0_init(void) 

    TCCR0 = 0x05; 
    TCNT0 = 0xea; 
    TIFR |= 0x02; 
    TIMSK |= 0x02; 



void time1_init(void) 

    TCCR1A = 0x00; 
    TCCR1B = 0x01; 
    TCNT1 = 0xa99a; 
    //TCNT1H = 0xa9; 
    //TCNT1L = 0x9a; 
    TIFR |= 0x80; 
    TIMSK |= 0x80; 


SIGNAL(SIG_OVERFLOW1) 

    TCNT1 = 0xa99a; 
    display(); 
    if(++time_count >=5) 
    { 
        time_10ms_ok = 1; 
        time_count = 0; 
    } 


void display(void) 

    PORTC = 0xff; 
    PORTA = pgm_read_byte(&led_7[disp_buff[posit]]); 
    if(point_on && ((posit==2)||(posit==4)||(posit==6)))PORTA &= 0x7f; 
    PORTC = pgm_read_byte(&position[posit]); 
    if(++posit>=8)posit = 0; 


void time_to_dispbuff(void) 

    uchar i,j=0; 
    for(i=0;i<=3;i++) 
    { 
        disp_buff[j++] = time[i]%10; 
        disp_buff[j++] = time[i]/10; 
    } 


关键字:avr单片机  数码管  显示时钟 引用地址:avr单片机数码管显示时钟

上一篇:atmega8535 Ad转换的c程序
下一篇:AVR双CPU通信程序(异步方式)UART

推荐阅读最新更新时间:2024-03-16 15:49

学习笔记-avr单片机C编程1
这几天在看AVR单片机的书。ASURO的项目的编程是建立在已有的成熟函数上,所以导致我对AVR单片机的运行机理(中断、定时器的使用)不甚了解。突然一个个超声波模块的程序放在眼前,才发现我连AVR单片机的了解基本上等于零。另外一个项目需要用mega128控制直流电机,还有和无线、有线遥控器的通信,电路(模块)需要自己搭起来,那么就必须知道AVR单片机的原理和编程。 和已经学过的51单片机相比,MEGA系列单片机是十分高级的单片机,功能强大,因而在构造和使用上也复杂了一些。 存储器区别,AVR分为5个部分,访问指令上有区别。 输入输出,51是准双向口,每个端口只有一个寄存器。而AVR的I/O口是标准双向口,
[单片机]
avr单片机功能特性介绍
RISC 优先选取使用频率最高的简单指令,避免复杂指令:并固定指令宽度,减少指令格式和寻址方式的种类,从而缩短指令周期,提高运行速度。由于 AVR 采用了 RISC 的这种结构,使AVR系列单片机都具备了1MIPS/MHz(百万条指令每秒/兆赫兹)的高速处理能力。 早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。 AVR单片机的推出,彻底打破这种旧设
[单片机]
<font color='red'>avr单片机</font>功能特性介绍
AVR单片机熔丝位锁死简单快捷的解密方法
1.AVR单片机熔丝位锁死简单快捷的解密方法: 在很多AVR单片机的初学者在使用AVR单片机中,很容易把熔丝位弄错而造成单片机锁死,比如说JTAGEN置为1后,单片机的JTAG就不能再下载程序进去了,因此给我们带来很多麻烦。 常见的恢复方法是使用并口编程器来恢复,对于初学者来说,很多设备是很欠缺的,所以很难解决。 现为我们初学者介绍一个简单实用可行的方法 有源晶振恢复法。将被锁死的AVR单片机接入最小系统或者开发板中,将系统中的晶振拆下来,在XAIL1接上有源晶振的第三脚(按下图接即可)。 然后通电,使用ISP下载线进行熔丝位编辑,本人使用智峰p
[单片机]
<font color='red'>AVR单片机</font>熔丝位锁死简单快捷的解密方法
单片机中级项目13丨矩阵按键数码管移位显示
单片机中级项目13丨矩阵按键数码管移位显示 /******************************************************************************* * 实 验 名 : 动态显示数码管实验 * 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4键盘使用P1 * 实验效果 : 按矩阵键盘分别显示在数码管上面显示十六进制的0到F。 * 注 意 : *******************************************************************************/ #include reg51.h #def
[单片机]
AVR单片机和Matlab串口通信的计时器系统
引言   本文设计了一种基于AVR单片机和Matlab串口通信的计时器系统,本计时器系统可以满足体育竞赛中精确计时的要求。在该设计中,主要以Atmel公司ATmega16单片机作为信号采集系统,通过串口和上位机的Matlab通信,自定义了一项通信协议,使上位机接收到不同的信号,可以实现对Matlab中计时器的控制。 利用Matlab软件提供的GUI设计出一套友好的人机界面。 本系统中,可以有多个单片机作为下位机,通过串口连接ZigBee无线传输模块,与上位机进行通信。无线传输模块的接入可以实现远程多点信号采集,使系统更加灵活,可扩展性大大增强。 1 系统总体设计   本系统包括多个以ATmega16单片机为主控制器的信号采
[单片机]
<font color='red'>AVR单片机</font>和Matlab串口通信的计时器系统
单片机最小系统_按键控制数码管显示
单片机最小系统_按键控制数码管显示,这个项目,主要学习单片机的键盘工作原理与显示方面的知识,电子小制作的好课题。键盘电路作为单片机的输入部分,数码显示电路作为单片机的输出部分,由键盘电路通过单片机控制数码管显示电路的八路键控数码管电路。按下S0到S7号按键时,数码管显示立刻显示数字0到7。 电子制作 的好课题下面是单片机最小系统_按键控制数码管显示原理图,实作时,按原理图焊好电路,单片机中写入程序。 ORG 0000H ;随后的指令代码从0000H单元开始存放。 LJMP START ;转到标号START处 ORG 0030H ;随后的指令代码从0030H单元开始存
[单片机]
单片机最小系统_按键控制<font color='red'>数码管</font><font color='red'>显示</font>
任务11:“数码管”的静态显示和动态显示
本系列教程以AVR单片机为对象,介绍单片机的快速开发方法。 参考教材:《单片机技术及应用项目教程》 栾秋平 电子工业出版社 2019.6 第1版 本文介绍“数码管”的静态显示和动态显示。 一、人眼的视觉暂留效应 二、数码管的静态显示 三、74HC138内部工作原理 四、数码管的动态显示 #ifndef NIXIETUBE_CONFIG_H_ #define NIXIETUBE_CONFIG_H_ #define NIXIETUBE_PORT PORTB #define NIXIETUBE_DDR DDRB #define NIXIETUBE_HC595_CLOCK BIT1 #def
[单片机]
任务11:“<font color='red'>数码管</font>”的静态<font color='red'>显示</font>和动态<font color='red'>显示</font>
AVR单片机与串行时钟器件DS3231的接口设计
1 引言 由单片机构成的测控系统或智能显示屏经常需要用到实时日历或时钟信号。为节省CPU资源,本文介绍了串行时钟器件DS3231的应用及其与AVR单片机ATmega8的接口,该系统具有抗干扰能力强,计时准确且不随季节变化产生误差的特点。 2 DS3231的结构及工作原理 DS3231是低成本、高精度I2C实时时钟(RTC)器件,具有集成的温度补偿晶体振荡器(TCXO)。该器件包含电池输入端,断开主电源时仍可保持精确计时。集成的晶体振荡器可提高器件的长期精确度。DS3231的寄存器能保存秒、分、时、星期、日期、月、年和闹钟设置等信息。少于31天的月份,可自动调整月末日期,包括闰年补偿。时钟的工作格式为24小时或带AM/PM指示
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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