ATmega16L-定时器应用于数码管

发布者:不见南师久最新更新时间:2012-08-18 来源: 51hei关键字:ATmega16L  定时器  数码管 手机看文章 扫描二维码
随时随地手机看文章
/****************************************
扫描数码管,数据口接PA
段码接PC7 位码接PC6
稳定显示01234567
****************************************/

#include 
#include 

unsigned int i;
const unsigned char duanma[]={0x3f,0x06,0x5b,0x4f,
                              0x66,0x6d,0x7d,0x07,
                              0x7f,0x6f,0x77,0x7c,
         0x39,0x5e,0x79,0x71};
const unsigned char weima[] ={0xfe,0xfd,0xfb,0xf7,
                              0xef,0xdf,0xbf,0x7f};
/****************************************
               display
****************************************/
void display(unsigned int i)
{
 PORTA=0X00;
 PORTC|=BIT(7);
 PORTC&=~BIT(7);
  
 PORTA=weima[i];
 PORTC|=BIT(6); 
 PORTC&=~BIT(6);
 
 PORTA=duanma[i];
 PORTC|=BIT(7);
 PORTC&=~BIT(7);
}

/****************************************
              IO端口初始化
****************************************/
void init_port(void)
{
 PORTA=0XFF;
 DDRA=0XFF;
 PORTC=0XFF;
 DDRC=0XFF;
}

/****************************************
              定时器初始化
****************************************/
void init_timer(void)
{
 TCNT0=0X83; //1ms的定时器初值
 TCCR0=0X03; //定时器0的计数预分频取64 
 TIMSK=0X01; //使能T/C0中断
 SREG =0X80; //使能总中断
}

/***************************************
                主函数
***************************************/
void main(void)
{
  init_port();  //调用IO端口初始化函数
  init_timer(); //定时器初始化
  while(1)
  {
    //添加自己需要的程序代码
  }
}

#pragma interrupt_handler timer0_ovf_isr:10 
void timer0_ovf_isr(void)
{
 TCNT0=0X83; //重装1ms定时器初值
 if(++i>7) i=0;
 display(i); 
}


TCNT0=0X83; //1ms的定时器初值
TCCR0=0X03; //定时器0的计数预分频取64 
 
8位定时器/计数器。 0x83=131。131-255 之间一共数了125.
另外,外部晶振8M,经过64分频,周期成为1/(8000000/64)=8us 
125个8us 就是1ms 
OK 
关键字:ATmega16L  定时器  数码管 引用地址:ATmega16L-定时器应用于数码管

上一篇:采用ATMEGA48单片机的仪表步进电机的细分控制
下一篇:ATmega16L-EEPROM写入读取实验

推荐阅读最新更新时间:2024-03-16 13:06

通过555定时器实现电热毯温控器
一般电热毯有高温、低温两档。在使用时,拨在高温档,入睡后总被热醒;拨在低温档,有时一觉睡醒,才发现温度不够。 以下是一种电热毯温控器,可以把电热毯的温度控制在一个合适的范围内。 工作原理: 以上是电路图,图中IC为NE555时基电路。RP3为温控调节电位器,其滑动臂电位决定IC的触发电位V2和阀电位Vf,且V5=Vf=2Vz。220V交流电压经C1、R1限流降压,D1、D2整流、C2滤波,DW稳压后,获得9V左右的电压供IC用。 室温下接通电源,因已调V2Vz,V6≥Vf时,IC翻转,3脚变为低电平,BCR截止,电热丝停止发热,温度开始逐渐下降,BG1的ICEO随之逐渐减小,V2、V6降低。当V6元件选择: BG1可选
[嵌入式]
通过555<font color='red'>定时器</font>实现电热毯温控器
stm32 基本定时器TIM6、TIM7的使用
基本定时器只具备最基本的定时功能,就是累加的时钟脉冲数超过预定值时,能触发中断或触发DMA请求。 使用基本定时器的定时功能需要进行以下设置: 1)使能定时器的时钟。 2)设置预分频数。 3)设置计数器值。 4)设置采样分频数。 5)设置计数方式,向上还是向下计数,其中TIM6、TIM7只有向上计数功能。 6)使能中断,配置中断分组及中断服务函数。 配置函数如下: /********************************************************** ** 函数名: TIM6_Config ** 功能描述: 基本定时器配置 ** 输入参数: 无 ** 输出参数: 无 ** 说明:定时时间=(预分频
[单片机]
数码管计数显示
org 00h a_bit equ 30h ;个位数存放处 b_bit equ 31h ;十位数存放处 c_bit equ 32h ;百位数存放处 d_bit equ 33h ;千位数存放处 e_bit equ 34h ;万位数存放处 f_bit equ 35h ;十万位数存放处 org 0000h ajmp star org 0030h star: mov a,#00h ;;清0 mov a_bit,a mov b_bit,a mov c_bit,a mov d_bit,a mov e_bit,a mov f_bit,a stlop: acall display ;显示
[单片机]
两位数码管动态显示C语言程序+电路图
用c语言编写的 51单片机数码管驱动程序 下面是电路图: #include reg52.h #define uint unsigned int void delay7ms(void) //误差 -0.217013888891us { unsigned char a,b; for(b=208;b 0;b--) for(a=14;a 0;a--); } void delay2ms(void) //误差 -0.217013888889us { unsigned char a,b; for(b=80;b 0;b--) for(a=10;a 0;a--); } void main(void
[单片机]
两位<font color='red'>数码管</font>动态显示C语言程序+电路图
STM8 基本定时器初始化Time4
void Time4_Initialize(void) { TIM4_TimeBaseInit(TIM4_PRESCALER_64,24); //100μS TIM4_ITConfig(TIM4_IT_UPDATE,ENABLE); TIM4_ClearFlag(TIM4_FLAG_UPDATE); } STM8基本定时器: TIM4_PRESCALER_64:预分频 24:计数周期,从零开始计数. 注意:若是立即启动计数,则在函数里添加TIM4_Cmd(ENABLE),否则在延时处开启.
[单片机]
PIC看门狗定时器WDT的理解
简介:pic单片机看门狗计时器(Watch Dog Timer)是一个片内自振式的RC振荡计时器,无需任何的外接元件。这意味着即使芯片OSC1/OSC2上振荡停止了(例如执行指令SLEEP后),WDT照样保持计时。WDT计时溢出将产生RESET。在PIC16C5X 芯片内有一个特殊的谓之 定义EPROM (Configuration EPROM)的单元,其中的一个位是用于定义WDT的。 pic单片机看门狗计时器(Watch Dog Timer)是一个片内自振式的RC振荡计时器,无需任何的外接元件。这意味着即使芯片OSC1/OSC2上振荡停止了(例如执行指令SLEEP后),WDT照样保持计时。WDT计时溢出将产生RESET。在P
[单片机]
STM32F10x 学习笔记 2 (SysTick 定时器
SysTick 定时器被集成在NVIC中。因此,只要是Cortex-M3 内核的单片机,就都有它。这个学习笔记就用SysTick 定时器来实现走马灯的功能。 SysTick 定时器非常简答,只有四个寄存器。这四个寄存器的含义在《Cortex-M3权威指南》那本书中讲的非常的清楚,这里不复述了,下面只讲讲在STM32上SysTick有什么特殊之处。按照CMSIS 标准,用C语言访问这四个寄存器时使用的寄存器名称分别如下: SysTick- CTRL SysTick- LOAD SysTick- VAL SysTick- CALIB SysTick- CALIB 的值固定为9000,因此,只有当系统嘀嗒时钟设定为9MHz(H
[单片机]
AT89C51单片机定时器应用设计
一、设计目的 1、学习并掌握定时器/计数器的工作原理; 2、学习并掌握定时器/计数器控制程序设计方法; 3、学习并掌握矩阵键盘工作原理与程序设计方法; 4、学习并掌握显示程序设计; 二、实验设备 1、计算机; 2、单片机开发板; 3、Keil C51编程软件; 4、Proteus仿真软件; 三、设计内容 1、功能 必须使用定时器完成以下功能。 功能1:4位数码管显示“分钟.秒” 功能2:K1设置键、K2加1键、K2减1键 (1)正常情况:显示“分钟.秒” (2)按下K1:第一次按下调整分钟状态、第二次按下调整秒状态、第三次按下正常显示状态 (3)按下K2:分钟或秒加1 (4)按下K3:分钟或秒减1 选做功能:闹钟功能(请先完成
[单片机]
AT89C51单片机<font color='red'>定时器</font>应用设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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