数码管计时器程序

发布者:asdfrewqpp最新更新时间:2015-06-15 来源: 51hei关键字:数码管  计时器 手机看文章 扫描二维码
随时随地手机看文章
这是一个51hei网友测试通过的计时器程序、电路很简单就不画了数码管的段选是P0口位选是P1口

#include
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
code uint8 number[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83, 0xa7,0xa1,0x86,0x8e};       //数字0到F
uint16 counter = 0;                                                              //定义计数器初始化
uint8 a[6];                                                                            //六个数码管
sbit ENLED = P1^4;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
void timer1_led()
{
 TMOD |= 0x10;                                                                    //寄存器状态M0位置1,或运算
 TMOD &= 0xDF;
 TH1 = 0xFC;                                                                       //12*(65535-x)/11059200 =1s
 TL1 = 0x67;
 TR1 = 1;                                                                           //定时器置1打开,计数器开始计时
}
void int_init()
{
 ET1 = 1;                                                                             // 打开定时器1溢出中断使能置1
 EA = 1;                                                                               //总阀门打开
}
 refresh_led()
{
 static uint8 j = 0;                                                                //静态变量刷新
  switch(j)
  {
   case 0:ADDR0 = 0;ADDR1 = 0;ADDR2 = 0;j++;P0 = number[a[0]];break;
   case 1:ADDR0 = 1;ADDR1 = 0;ADDR2 = 0;j++;P0 = number[a[1]];break;
   case 2:ADDR0 = 0;ADDR1 = 1;ADDR2 = 0;j++;P0 = number[a[2]];break;
   case 3:ADDR0 = 1;ADDR1 = 1;ADDR2 = 0;j++;P0 = number[a[3]];break;
   case 4:ADDR0 = 0;ADDR1 = 0;ADDR2 = 1;j++;P0 = number[a[4]];break;
   case 5:ADDR0 = 1;ADDR1 = 0;ADDR2 = 1;j = 0;P0 = number[a[5]];break;
   default :break;
  }
}
main()
{
 ENLED = 0;ADDR3 = 1;                                                                 //138译码器使能
 timer1_led();                                                                                 //定时初始化
 int_init();
 while(1);
}
void interrupt_timer1() interrupt 3                                                //中断函数
{
 static uint32 sec=0;                                                                     //定义变量
 TH1 = 0xFC;
 TL1 = 0x67;
 counter++;
if(1000==counter)                                                                     
{
 sec++;
 counter=0;
 a[0] = sec%10;                                                                         //个位数取余
 a[1] = sec/10%10;                                                                    //十位取余
 a[2] = sec/100%10;                                                                  //百位取余
 a[3] = sec/1000%10;                                                                //...............
 a[4] = sec/10000%10;
 a[5] = sec/100000%10;
}
 refresh_led();
}

关键字:数码管  计时器 引用地址:数码管计时器程序

上一篇:12864液晶显示串行程序(英飞凌xc824)
下一篇:单片机智能房间设计

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

单片机红外解码,短按开关灯,长按调光,数码管显示键值
//红外解码,实验板测试正常,8位数码管显示遥控编码(用户码,用户反码,右边3位数码管显示PWM值), //两片74hc573驱动8位共阴数码管 //CH-键短按开关灯,+键长按调光,数码管显示键值;长按调光的解码程序目前网上很难找到,我琢磨了很久才把程序调通//压缩包里有完整的程序代码,有逻辑分析仪测试的连发码的波形 单片机源程序如下: #include INCSTC89C52RC.H #include INCMY_SET.H #include INCIR_NEC.H //调用NEC解码头文件 #define DIGI_PORT P0 // 宏定义数码管端口,如果端口改变,只需修改这一句即可 #d
[单片机]
单片机红外解码,短按开关灯,长按调光,<font color='red'>数码管</font>显示键值
数码管显示 0-9999计数器
;=========================================== 四位显示器,是可以显示0000~9999的,但是在设计工程实际的产品时,前三个0,是不应该显示的。 一个成熟的程序,都应该有消除无效0的程序段。 消除无效0,其实就是用“空白”的代码来代替“0”。 在程序中,大家都知道有个七段码表,一般是把0123...的七段码依次排列在里面,那么第0~15个,通常就是0~F的七段码。 如果把“空白”七段码FFH,排在第16个位置,那么“空白”的代码就是16。 消除无效0的程序,应该从高位到低位(千位、百位、十位)依次判断,个位的0,是应该显示的,则不用判断。 某一位是0,就替换为16,如果不是0,不仅不用替
[单片机]
基于DS18B20的数显温度计 数码管显示
主要亮点: 1.数码管使用74HC595作为段选驱动,为初学者提供了新的思路 次要亮点: 1.使用小巧的STC15F104W单片机 DS18B20的通信要点在于时序的严格对应,相比之下DHT11这一类的单总线通信时序要求更加宽松。 因为DS18B20算是极为常用的学习器件,故不做过多讲解,本次作品不涉及搜索BOM、精度调节等操作,只是单器件读取温度值,数据处理将可以显示的温度值设置为-20℃~80℃。 (事实证明不同器件之间会有差异,读取的值也会不尽相同) DS18B20数据处理参考普中科技相关例程 #include STC15.H sbit DSPORT=P3^5;//DS18B20管脚定义 #include intr
[单片机]
基于DS18B20的数显温度计 <font color='red'>数码管</font>显示
通过38译码器控制数码管显示数字
今天终于把38数码器控制原理及编程序搞得一点点了,之前因为是P0^1,2,3三个口控制数码管的位操作,一直搞不懂其原理,呵呵,看了下PDF文档,以及编程实例,总算明白一点点了,刚刚编成了一连串的数字,这证明我的猜想应该是对的。好高兴。昨天是想请教一个网友的,他叫我自己再认真研究下,嘿嘿。看来有些东西真的需要支持,这样才会成功才会深刻,特别是学习这东西。 程序如下:#include reg52.h sbit DECORDER_A = P0^0; sbit DECORDER_B = P0^1; sbit DECORDER_C = P0^2; unsigned char d; void main() { while(1)
[单片机]
通过38译码器控制<font color='red'>数码管</font>显示数字
89C52单片机 计时器 中断的使用
1.计时器 因为51单片机的机器周期计算公式是12/晶振频率MHz,若晶振为12MHz,则机器周期就是12/(12×10^6)=1us,也就是说计数器没1us计数一次。 一般来说,12MHz晶振下,16位定时器满计数是65536次,每次1us,最大就能计时65.536ms,则65536减去多少就是定时多少,如(65536-X)/256,就是定时X微秒。 那么T=1/(X/12)就是一个机器周期 ,(65536-Z(初值))*T就是定时的时间 比如是12M的晶振那么 设置TMOD=0x01, 计时器模式 TH0=(65536-50000)/256; TL0=(65536-50000)%256;就是设置了50ms的定时
[单片机]
89C52单片机 <font color='red'>计时器</font> 中断的使用
AVR 数码管编程
/***************************************** * 目 的:数码管动态扫描 * * 功 能:数码管显示 * * 时钟频率:内部1M * * 编译环境:ICC-AVR6.31 * * 实验环境:DOFLY mini80AVR开发板 * * 使用硬件:8位数码管 * * 结 果:8位数码管显示0-7 数字 * * 操作要求:插上J6跳帽 * *****************************************/ #include iom16v.h #include macros.h #define OE_138_ON PORTC |= BIT(7) //使能74hc138
[单片机]
ATmega16L-定时器数码管扫描
/**************************************** 用定时器维持数码管显示 现在是数码管示数不断增加。 ****************************************/ #include iom16v.h unsigned int cnt; unsigned char shu ; unsigned char aa; const unsigned char duanma ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; const un
[单片机]
8255数码管显示线路
本内容提供了8255数码管显示电路图      8255数码管显示效果图   
[电源管理]
8255<font color='red'>数码管</font>显示线路
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • Linux内核移植
    实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核下面以Linux2 6 30 4内核移植到gec2440为例:一、准备 ...
  • S5PV210 PWM定时器
    第一节 S5PV210的PWM定时器S5PV210共有5个32bit的PWM定时器,其中定时器0、1、2、3有PWM功能,定时器4没有输出引脚。PWM定时器使用PCLK_PS ...
  • S5PV210 NAND Flash
    NAND Flash关于NAND FlashS5PV210的NAND Flash控制器有如下特点:1) 支持512byte,2k,4k,8k的页大小2) 通过各种软件模式来进行NAND Fl ...
  • S5PV210串口
    串口设置之输入输出字符S5PV210 UART相关说明 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER,它用来 ...
  • S5PV210按键控制LED
    原理图如图所示:查询用户手册得到:程序例子:(完整代码见“代码下载链接”)1、轮询的方式查询按键事件 *main c* 核心代码如下:while(1 ...
  • S5PV210控制蜂鸣器
  • S5PV210的启动过程
  • S5PV210点亮LED
  • S5PV210启动过程详解
何立民专栏 单片机及嵌入式宝典

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

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