数码管60S计数显示--C语言

发布者:breakthrough2最新更新时间:2016-10-27 来源: eefocus关键字:数码管  60S  计数显示 手机看文章 扫描二维码
随时随地手机看文章
#include  //  包含51单片机寄存器定义的头文件

unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; 
 //数码管显示0~9的段码表

unsigned char int_time;        //记录中断次数
unsigned char second;        //储存秒
/***********************************************************************
函数功能:快速动态扫描延时,延时约0.6毫秒
************************************************************************/
void delay(void)
{
  unsigned char i;
  for(i=0;i<200;i++)
        ;
}
/***********************************************************************
函数功能:显示秒
入口参数:k
出口参数:无
************************************************************************/
 void DisplaySecond(unsigned char k)
{
   
   P2=0xbf;        //P2.6引脚输出低电平, DS6点亮 
   P0=Tab[k/10];          //显示十位
   delay();
    delay();
       delay();
     delay();
      delay();
    delay();
       delay();
     delay();
   P2=0x7f;       //P2.7引脚输出低电平, DS7点亮 
   P0=Tab[k%10];         //显示个位
 delay();
     delay();
     delay();
      delay();
    delay();
    delay();
       delay();
     delay();
 P2=0xff;     //关闭所有数码管

 P0=0xff;        //显示个位
   delay();
     delay();
      delay();
    delay();
     delay();
    delay();
       delay();
     delay();
}     
  void main(void)      //主函数
   {
   TMOD=0x01;                 //使用定时器T0
   TH0=(65536-46083)/256;    //将定时器计时时间设定为46083×1.085微秒
//=50000微秒=50毫秒
    TL0=(65536-46083)%256;
  EA=1;                    //开启总中断
  ET0=1;                   //定时器T0中断允许
  TR0=1;                   //启动定时器T0开始运行
  int_time=0;     //中断次数初始化
  second=0;    //秒初始化  
        while(1)
  {
        DisplaySecond(second); //调用秒的显示子程序
   }
    }  
//********************************************************
//函数功能:定时器T0的中断服务程序

//*******************************************************
  void interserve(void ) interrupt 1 using 1  
  {
    TR0=0;    //关闭定时器T0
    int_time ++;        //每来一次中断,中断次数int_time自加1 
  if(int_time==20)   //够20次中断,即1秒钟进行一次检测结果采样
   {
        int_time=0;    //中断次数清0
     second++;    //秒加1
     if(second==60)
       second =0; //秒等于60就返回0
   }        
   TH0=(65536-46083)/256;   //重新给计数器T0赋初值
 TL0=(65536-46083)%256;
 TR0=1;     //启动定时器T0
 }  

关键字:数码管  60S  计数显示 引用地址:数码管60S计数显示--C语言

上一篇:数码管滚动显示C语言程序设计
下一篇:数码管动态扫描显示12345678

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

DS18B20温度测试程序(51单片机数码管显示)+电路图
下面是电路图 采用4位数码管显示 程序一共有2个文件 : /*********************************************** ds18b20.h 头文件 *************************************************/ #ifndef _DS18B20_H_ #define _DS18B20_H_ #include reg51.h #define led P1 #define ledw P2 extern unsigned char f; extern void ds18b20_reset(); extern void dela(unsigned char
[单片机]
DS18B20温度测试程序(51单片机<font color='red'>数码管</font><font color='red'>显示</font>)+电路图
ADC0804+LED数码管显示模拟值0~255
#include reg52.h #define uint unsigned int #define uchar unsigned char sbit rd=P3^7; sbit wr=P3^6; sbit cs0=P3^5; sbit hc=P3^4; void delay(uint ); void format0804(); void display(uchar aa ); unsigned char code table1 = //共阳段码控制 {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; unsigned char code dispbit
[单片机]
ADC0804+LED<font color='red'>数码管</font><font color='red'>显示</font>模拟值0~255
两位数码管动态显示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>动态<font color='red'>显示</font>C语言程序+电路图
51单片机-数组&数码管
1.回顾 大家还记得我们用数组来存取流水灯的状态值吗,那么数码管也是一样的,我们可以知道数码管能显示出在单片机编程中最常见的数字和字母为0~9,A,b,C,d,E,F这16种状态,那么这一讲我们实现单个数码管从0到F间隔一秒来循环显示。 2.单片机内存 首先要知道我们写的程序是占用内存的,这些内存就是单片机内部的FLASH。 STC89C52RC芯片中用来存放程序代码的FLASH内存为8K字节(8192字节)。 而初始化的数组的内存都是存放在单片机的RAM中的,我们平时定义的变量也都是占用RAM的,因为定义的变量数值是要改变的,所以这些变量只能存放在RAM中。 但STC89C52RC芯片中RAM的内存很小,只有5
[单片机]
基于STM32的常用数码管芯片TM1637驱动
IIC协议这里就不多说了; 使用模拟IIC口 定义B14 B15 #define AnalonSDA_Pin GPIO_PIN_12 #define AnalonSDA_GPIO_Port GPIOB #define AnalonSCL_Pin GPIO_PIN_13 #define AnalonSCL_GPIO_Port GPIOB IO配置为输出 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, AnalonSDA_Pin|AnalonSCL_Pin|BIG_SDA_Pin|BIG_SCL_Pin, GPIO_PIN_RESET);
[单片机]
数码管显示数字之C语言模拟
#define N 10 //最多可以输入10个数字 #i nclude stdio.h int check(char array ,int n) { //检查输入是否全为数字 int i; for(i=0;i n;i++) if(array '0'||array '9') return -1; return 1; } main() { char alpha ={{'*','*','*','*'},{'*',' ',' ','*'},{'*&
[单片机]
51---数码管
1.什么是数码管 1.1、几方面看数码管 (1)作用:数码管是显示器件,用来显示数字的 (2)分类:单个(1位)、联排(2位、4位、8位) 1.2、工作原理 (1)亮灭原理(其实就是内部的照明LED,一颗数码管内部有七个led) (2)显示数字(甚至文字)原理:利用内部的LED的亮和灭让外部的组成数字的笔画显示或者不显示,人看到的就是不同的数字。 1.3、共阳极和共阴极数码管 (1)驱动方法的差异。必须清楚一个数码管内部的8颗LED是独立驱动的。如果8颗LED的正极接在一起接到VCC上(负极分别接到单片机的不同引脚),这种接法就叫共阳极。反之如果8颗LED负极接在一起然后接到GND(正极就分别接到单片机的不同引脚
[单片机]
51---<font color='red'>数码管</font>
单片机动态数码管显示DS18B20测温显示程序
动态数码管显示DS18B20测温显示,折腾好几天了,终于搞定了,开始要么不能正常显示温度,要么乱跳动。究其原因是DS18B20读写的时序太严格了,程序中动态数码管显示需要开定时中断扫描显示,折腾多天的问题就是这个定时中断打断了正常的读写时序。 单片机源程序如下: /********* 测试DS18B20测温数码管动态显示 **********/ #include STC90C52.h #include ds18b20.h #define uchar unsigned char #define uint unsigned int #define LedDuan P0 /*定义数码管段码的控制脚*/ #define
[单片机]
单片机动态<font color='red'>数码管</font><font color='red'>显示</font>DS18B20测温<font color='red'>显示</font>程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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