自制四位数码管显示的数字钟c程序

发布者:花海鱼最新更新时间:2012-09-04 来源: 51hei关键字:数码管显示  数字钟  c程序 手机看文章 扫描二维码
随时随地手机看文章

点击浏览下一页

#include
#define uchar unsigned char
uchar code shuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0};//0 1 2 3 4 5 6 7 8 9 0
uchar code shuza[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xc0};//0 1 2 3 4 5 0
uchar ss,dd,ff,gg,zz;
uchar qq,ww,ee,rr,tt;
uchar z,x,qw,qe,qr,as,fe;
sbit a=P2^0;//锁存器1
sbit b=P2^1;//锁存器2
sbit c=P2^2;//锁存器3
sbit d=P2^3;//锁存器4
sbit e=P2^4;//秒灯
sbit f=P2^5;//时间指示灯
sbit g=P2^6;//设置指示灯
sbit h=P2^7;//....
sbit i=P1^0;//时间设置按键 
sbit j=P1^1;//返回
sbit k=P1^2;//加
sbit l=P1^3;//减
sbit m=P1^4;//定时设置
sbit y=P1^5;//启动定时
void ys();

void main()
{
 EA=1;      //打开总中断
 TH0=(65535-50000)/256;  //定时器复初值
 TL0=(65535-50000)%256;
 ET0=1;      //
 TR0=1;      //启动定时器
 P0=0xc0;
 P2=0xff;
 P2=0xd0;
  while(1)
 {f=0;g=1; 
    if(i==0)//设置时间 判断
   {g=0;f=1;
  while(1)
 {if(j==0){break;}
   if(i==0){ys();if(i==0){while(i==0){if(i==1){x++;break;}}}}
   if(x==5){x=1;}if(x==0){x=1;}

   if(x==1)
  {if(k==0){ys();if(k==0){ss++;if(k==0)if(ss==10){ss=0;}}} if(l==0){ys();if(l==0){if(ss==0){ss=10;}ss--;}} 
   a=1;P0=0x7f;P0=shuzi[ss];a=0; }
   
   if(x==2)
  {if(k==0){ys();if(k==0){dd++;if(k==0)if(dd==6){dd=0;}}} if(l==0){ys();if(l==0){if(dd==0){dd=6;}dd--;}} 
   b=1;P0=0x7f;P0=shuza[dd];b=0; }
   
   if(x==3)
  {if(k==0){ys();if(k==0){ff++;if(k==0)if(ff==10){ff=0;}}} if(l==0){ys();if(l==0){if(ff==0){ff=10;}ff--;}} 
   c=1;P0=0x7f;P0=shuzi[ff];c=0; }
   
   if(x==4)
  {if(k==0){ys();if(k==0){gg++;if(k==0)if(gg==3){gg=0;}}} if(l==0){ys();if(l==0){if(gg==0){gg=3;}gg--;}} 
   d=1;P0=0x7f;P0=shuzi[gg];d=0; }

 }
   }  //设置时间完

      if(m==0)//定时 判断
   {g=0;f=0;as=1;
  while(1)
 {if(j==0){as=0;break;}
   if(m==0){ys();if(m==0){while(m==0){if(m==1){x++;break;}}}}
   if(x==5){x=1;}if(x==0){x=1;}

   if(x==1)
  {if(k==0){ys();if(k==0){qq++;if(k==0)if(qq==10){qq=0;}}} if(l==0){ys();if(l==0){if(qq==0){qq=10;}qq--;}}a=1;P0=0x7f;P0=shuzi[qq];a=0; }
   
   if(x==2)
  {if(k==0){ys();if(k==0){ww++;if(k==0)if(ww==6){ww=0;}}} if(l==0){ys();if(l==0){if(ww==0){ww=6;}ww--;}} b=1;P0=0x7f;P0=shuza[ww];b=0;  }
   
   if(x==3)
  {if(k==0){ys();if(k==0){ee++;if(k==0)if(ee==10){ee=0;}}} if(l==0){ys();if(l==0){if(ee==0){ee=10;}ee--;}}c=1;P0=0x7f;P0=shuzi[ee];c=0; }
   
   if(x==4)
  {if(k==0){ys();if(k==0){rr++;if(k==0)if(rr==3){rr=0;}}} if(l==0){ys();if(l==0){if(rr==0){rr=3;}rr--;}}d=1;P0=0x7f;P0=shuzi[rr];d=0;}

 }
   }  //定时时间完
  if(y==0)//启动定时功能
  {while(1){if(y==1){h=!h;if(h==0){fe=1;}if(h==1){fe=0;}break;}}}
 if(fe==1)
 {if(gg==rr){if(ff==ee){if(dd==ww){if(ss==qq){ g=0;f=0;;ys();g=1;f=1;ys(); }}}}}

 }
}
void zhongduan() interrupt 1  //中断函
{  TH0=(65535-50000)/256;  //定时器复初值
   TL0=(65535-50000)%256;
   z++;
    if(z==80)
   {z=0;
    e=!e;
 zz++;
 if(zz==120){zz=0;ss++;}
  if(ss==10){ss=0;dd++;}
  if(dd==6){dd=0;ff++;}
  if(ff==10){ff=0;gg++;}

  if(gg==2) {if(ff>=4){ff=0;gg=0;}}
  if(gg>=3) {gg=0;}
     if(rr==2) {if(ee>=4){ee=0;rr=0;}}
  if(rr>=3) {rr=0;}
  
 if(as==0)
 {P0=shuzi[ss];a=1;a=0;
     P0=shuza[dd];b=1;b=0;
     P0=shuzi[ff];c=1;c=0;
     P0=shuzi[gg];d=1;d=0;
 }
 if(as==1) 
  { a=1;P0=shuzi[qq];a=0;
    b=1;P0=shuza[ww];b=0;
    c=1;P0=shuzi[ee];c=0;
    d=1;P0=shuzi[rr];d=0;
   }
    }

}
void ys()
{for(qw=255;qw>0;qw--)
 for(qe=255;qe>0;qe--);
 for(qw=255;qw>0;qw--)
 for(qe=50;qe>0;qe--);
}
关键字:数码管显示  数字钟  c程序 引用地址:自制四位数码管显示的数字钟c程序

上一篇:单片机控制电磁阀的程序
下一篇:带存储功能的学习型红外遥控器源代码

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

51单片机实现带数码管显示的象棋比赛专用计时器
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: LED-74HC595 ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200628 ---- @ModifiedTime: 20200629
[单片机]
51单片机实现带<font color='red'>数码管</font><font color='red'>显示</font>的象棋比赛专用计时器
矩阵键盘键值在数码管上进行显示
#include reg52.h typedef unsigned int uint; typedef unsigned char uchar; sbit BEEP=P3^3; uchar code smg_tab ={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,0x30,0x25,0xa9,0x26,0xa1,0Xb1}; //延时函数 void _delay_ms(uint x) { uchar i; while(x--); for(i=0;i 120;i++); } //蜂鸣器函数 void Beep(void) { uchar i; for(i=0;i 1
[单片机]
单片机控制洗衣机C程序设计
#include at89x52.h #define waterin P1_6 #define waterout P1_5 #define swim P1_7 bit flag; char Count,t,waterinflag,wateroutflag,swimflag; // 用于中断程序的计数 unsigned char second; void Timeinit(void) { //秒表初始化 Count=0; t=0; second=0; flag=0; // 开定时器1,设定为工作方式2, 让定时中断时自动加载定时的初值 IE=0x8a; //允许中断,选中T0,T1中断 TMOD=0
[单片机]
数码管显示STC89C54RD+DB18B20测温板
数码管显示STC89C54RD+DB18B20测温板,资料来源于网络。 主要元件用到了单片机STC89C54RD+,DB18B20温度传感器,4为共阳数码管,PNPS8550三极管等。 原理图: #include reg52.h #define uchar unsigned char #define uint unsigned int sbit DQ=P3^4; //温度数据口 sbit wx1=P2^0; //位选1 sbit wx2=P2^1; //位选2 sbit wx3=P2^2; //位选3 sbit wx4=P2^3; //位选4 unsign
[单片机]
<font color='red'>数码管</font><font color='red'>显示</font>STC89C54RD+DB18B20测温板
CEPARK AVR单片机 之HC595驱动数码管显示
这里我用的CEPARK 的M64 AVR开发板,这一课的重点是学会如何使用74HC595来驱动数码管。 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7 ),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能 OE时(为低电平),存储寄存器的数据输出到总线。 引脚说明: QA--QH: 八位并行输出端,可以直接控制数码管的8个段。 QH': 级联输出端。我将它接下
[单片机]
12864液晶显示原理(C程序
目录: 12864液晶显示原理 一、点阵LCD的显示原理 二、12864点阵型LCD简介 三、12864LCD的指令系统及时序 四、12864点阵型LCD软硬件设计实例 1、硬件原理图 2、程序流程图 3、字模代码 五、12864点阵型LCD应用举例 1、硬件部分 2、软件部分( 汉字在内存中的存储形式 ) 12864液晶显示任何图像 一、所需软件 二、DIY一副图画 三、C语言代码 附录 一、机内码和区位码的区别 二、液晶屏常识 1、什么是COG型LCD 2、LCD显示模块的外部接口 1)8080模式,并行 2)6800模式,并行 3)串行模
[单片机]
12864液晶<font color='red'>显示</font>原理(<font color='red'>C程序</font>)
单片机内外部资源操作篇之数码管静态显示
首先,来了解下数码管显示原理: (本图片来源:百度) 数码管是靠点亮内部的发光二极管来显示。一位数码管有10个引脚,显示一个8字需要7个小段,再加上一个小数点,所以内部总共有8个小的发光二极管, 第3个引脚与第8个引脚连接在一起为公共端。如果这个公共端接地,则为共阴极数码管;如果接+5V电压,则为共阳极数码管。如下图所示: 我所用的实验板上的数码管是共阴极数码管。下图为数码管与单片机I/O口连接图: 我们来看原理图: ①.图中U1、U2为两个74HC573锁存器,U1用来向数码管送段选信号,U2用来向数码管送位选信号。U2的输出端Q0~Q5分别接到六个数码管的
[单片机]
单片机内外部资源操作篇之<font color='red'>数码管</font>静态<font color='red'>显示</font>
基于NiosⅡ软核处理器的七段数码管动态显示
SOPC(System On Programmable Chip)技术是美国Altera公司于2000年最早提出的,并同时推出了相应的开发软件Quartus II。SOPC是基于FPGA解决方案的SOC(System On Chip),构成SOPC的方案也有多种。第一种是基于FPGA嵌入IP硬核的SOPC系统,即在FPGA中事先植入嵌入式系统处理器,目前最常用的嵌入式处理器大多采用了含有ARM的32位知识产权处理器核的器件。第二种是基于FPGA嵌入IP软核的SOPC系统,目前最有代表性的软核处理器分别是Altera公司的Nios II核,以及Xilinx公司的MicroBlaze核。第三种是基于HardCopy技术的SOPC系统,
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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