89C51单片机40s倒记时数码管动态显示

发布者:EternalWhisper最新更新时间:2015-06-15 来源: 51hei关键字:89C51  单片机  数码管  动态显示 手机看文章 扫描二维码
随时随地手机看文章
此程序已经通过测试,电路连接是:一个2位的共阴数码管,位选是P3.6,P3.7口,段选是P0口,还有如下3个按键

sbit buzz = P2^2;
sbit clear  = P2^0;
sbit start  = P2^1;
分别是喇叭,清除和开始 与gnd相连即可.

#include < reg51.h >
#include < intrins.h >

const unsigned char LED7Code[]={
 0xC0,  // 0
 0xF9,  // 1
 0xA4,  // 2
 0xB0,  // 3
 0x99,  // 4
 0x92,  // 5
 0x82,  // 6
 0xF8,  // 7
 0x80,  // 8
 0x90,  // 9
 0x88,  // A
 0x83,  // B
 0xC6,  // C
 0xA1,  // D
 0x86,  // E
 0x8E  // F
};
 
sbit buzz = P2^2;
sbit clear  = P2^0;
sbit start  = P2^1;

unsigned char count = 0;
unsigned char timer1s_flag;
unsigned char hw,lw;
unsigned char flag;

unsigned char clear_flag;
unsigned char start_flag;
//函数申明
void key_scna(void);
/*********************************************************/
void main()

 TMOD=0x01 ;
 TH0=0xed ;            
 TL0=0xff ;           
 EA=1;
 ET0=1;
 TR0=1 ;

 while(1)
 {
  if(timer1s_flag>=200){
   timer1s_flag = 0;

   if((count>0)&&(count<=40)){
    //count--;
    hw=count/10;
    lw=count%10;
    P0=0XFF;
    buzz=0;
   }
   else if(count==0){
    hw=count/10;
    lw=count%10;
    count=42;
    P0=0X00;
    buzz=1;
   }
   count--;  

  }//500ms
  //key_scan();
 }
}

/*********************************************************/
// 定时器0中断服务程序.
/*********************************************************/
void timer0() interrupt 1 using 2

 TH0=0xee ;
    TL0=0x04 ;

 timer1s_flag++;

 if(flag==0){
  P3=0X40;
  P1=LED7Code[hw];
  flag = 1;
 }
 else{
  P3=0X80;
  P1=LED7Code[lw];
  flag = 0;
 }
}
/*********************************************************/
//按键扫描程序.
/*********************************************************/
void key_scna(void)
{
  ;
}

关键字:89C51  单片机  数码管  动态显示 引用地址:89C51单片机40s倒记时数码管动态显示

上一篇:RF1100SE单片机C8051F310程序
下一篇:C8051F的nRF24L01 PTR6000无线收发

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

ATmega32单片机汇编程序
本人初学每一款CPU,首先都是要研究一下相应的汇编指令,感觉这样能够很快的体验到该CPU的硬件原理,对后续的学习很有帮助.许多人认为不然,感觉汇编繁琐,难用。其实这样不会对单片机内部有深入的了解,会一些基本的汇编在单步调试中很有用,还有调度的编写,操作系统的移植等。 下面是个led闪烁的汇编程序,注释用C写的,一目了然 ***************************************************************** //CPU:mega32 //编译器:iar #include ioavr.h NAME main PUBLIC main ORG
[单片机]
51单片机--时钟芯片ds1302
1.ds1302的性能指标 1)可以计算2100年之前的秒、分、时、日、星期、月、年,并且可以调整闰年。 2)内部有31个字节静态RAM,供用户访问 3)串行数据传送方式(SPI3线接口) 4)工作电压:2.0~5.5v 5) 工作电流:2v时,小于300nA(功耗低) 6)时钟或RAM数据的读写,有两种传送方式:单字节传送、多字节传送 7)主电源和负电源双电源供电(备份电源可以用电池或大电容实现) 2.SPI 1)spi的中文意思是“串行外围接口” 2)spi的应用场景:EEPROM,FLASH,实时时钟,AD转换器,数字信号处理器,数字信号解码器 3)spi接口是在CPU和外围低速器件之间进行同步串行数据传输。在主器件的移
[单片机]
51<font color='red'>单片机</font>--时钟芯片ds1302
51单片机学习之陆 —— 1.2 第一个c51程序(点亮流水灯)
由于学校的板子跟我买的板子有些差异,为了大家的阅读,以后的所有程序编写烧录都以老师发的板子为主。 1 事先准备   a 驱动安装,注意群中已经发了,吧板子的驱动装好哦。   b 烧写软件(烧录器) stc - isp (这里说明下,板子上的芯片是stc的,你还能看到它的型号stc89c52RC,用stc的烧写软件就可以了)    提问:什么是烧写软件?     答:就是把你写好代码(C或者是汇编)专程的 机器语言 通过一定的方式下载到单片机中。称为烧写。(就先这样简单理解吧)   c 编写软件 keil uVision 4 (我仅用它编译生成hex 文件)         notpad++ (我用它写c51的代码,然
[单片机]
51<font color='red'>单片机</font>学习之陆 —— 1.2 第一个c51程序(点亮流水灯)
PIC16位单片机——彻底弄懂时钟
一直以来写程序都是看参考资料和书,这次的16位单片劫dsPIC33EP32GP502没有一点资料。因此趁机也好好深入学习一下!首先看振荡器的选择吧。 首先看一下时钟框图: 我们使用的是外部晶振,所以配置为HS,FCY是CPU时钟,FP是外设时钟,FCY=FP(除打盹模式外)。FCY=Fosc/2。也就是cpu时钟是晶振频率的1/2。下面还有分频。DOZE 2:0 :011 = FCY 被 8 分频 (默认)处理器时钟分频比选择位。 因此实际的FCY=0.5MHz(使用8M的外部晶振,并八分频8/2/8=0.5MHz)。 看一下振荡器选择配置位的说明: 这里我们需要看的是FOSCSEL配置位 第二列是寄存器
[单片机]
PIC16位<font color='red'>单片机</font>——彻底弄懂时钟
单片机与TA8435的步进电机细分控制
1 步进电机 步进电动机是纯粹的数字控制电动机,它将电脉冲信号转变为角位移,即给一个脉冲,步进电机就转一个角度,因此非常合适单片机控制,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,电机则转过一个步距角,同时步进电机只有周期性的无累积误差,精度高。 步进电动机有如下特点: 1)步进电动机的角位移与输入脉冲数严格成正比。因此,当它转一圈后,没有累计误差,具有良好的跟随性。 2)由步进电动机与驱动电路组成的开环数控系统,既简单、廉价,又非常可靠,同时,它也可以与角度反馈环节组成高性能的闭环数控系统。 3)步进电动机的动态响应快,易于启停、正反转及变速。 4)速度可在相当宽的范
[工业控制]
单片机输出矩阵波实验
这个程序的本意是输出一个矩阵波,但是如果用单片机实验板来运行的话就会发现似乎P1^1(即为第二个led管一直在发光),其实并不是程序有问题使得它一直在亮,而使通段的频率对人眼睛来说太快了,根据视觉暂留,所以会觉得led一直在亮。我开始也是有此怀疑的,可以在程序里面修改使得通段的频率变低,就可以看出来其实是一直在工作的。在注释符号后面的程序就是更改后的; #include reg52.h #define uint unsigned int #define uchar unsigned char sbit D1=P1^1; //uint i=0; void main() { TMOD=0x01; TH0=(65536-
[单片机]
单片机延时程序图解分析
我们已经知道,程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下面我们再来看一下其它符号的含义。 DELAY: MOV R7,#250   ;(6) D1: MOV R6,#250   ;(7) D2: DJNZ R6,D2    ;(8) DJNZ R7,D1   ;(9)    RET        ;(10) 〈单片机延时程序〉 MOV:这是一条指令,意思是传递数据。说到传递,我们都很清楚,传东西要从一本人的手上传到另一本人的手上,也就是说要有一个接受者,一个传递者和一样东西。从指令MOV R7,#250中来分析,R7是一个接受者,250是被传递的数,传递者在这
[单片机]
<font color='red'>单片机</font>延时程序图解分析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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