基于单片机的数字时钟设计方案

作者&投稿:花夜 (若有异议请与网页底部的电邮联系)
基于单片机的数字时钟的设计论文(51单片机)~

你反汇编一下#include
#include
#include #define INT8U unsigned char
#define INT16U unsigned int
#define k1() ((PIND & (1<<PD0))==0x00)
#define k2() ((PIND & (1<<PD1))==0x00)
#define k3() ((PIND & (1<<PD2))==0x00)
#define k4() ((PIND & (1<<PD3))==0x00)
#define k5() ((PIND & (1<<PD4))==0x00)
#define k6() ((PIND & (1<<PD5))==0x00)
#define k7() ((PIND & (1<<PD6))==0x00)
#define k8() ((PIND & (1<<PD7))==0x00)const INT8U seg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
INT8U seg11[]={0,0,0x40,0,0,0x40,0,0};
INT8U ja;
INT8U key=0xff;
INT8U h,m,s,y,m1,d;
void hour1()
{
if (++h>23) {h=0;day();}
seg11[0]=seg[h/10];
seg11[1]=seg[h%10];
} void minute1()
{
if (++m>59)
{m=0; hour1(); }
seg11[3]=seg[m/10];
seg11[4]=seg[m%10];
} void second1() {
if (++s>59)
{ s=0;
minute1();
}
seg11[6]=seg[s/10];
seg11[7]=seg[s%10];
}
void year()
{if (++y>99) y=0; seg11[0]=seg[y/10]; seg11[1]=seg[y%10]; } void month1()
{
if (++m1>12)
{m=10; year(); }
seg11[3]=seg[m1/10];
seg11[4]=seg[m1%10];
} void day() {
if (++d>30)
{ d=0;
month1();
}
seg11[6]=seg[d/10];
seg11[7]=seg[d%10];
} //时间函数
void time()
{
seg11[0]=seg[h/10];
seg11[1]=seg[h%10];
seg11[3]=seg[m/10];
seg11[4]=seg[m%10];
seg11[6]=seg[s/10];
seg11[7]=seg[s%10];
PORTA=0x00;
PORTA=seg11[ja]; PORTB=~(1<<ja);
ja=(ja+1)&0x07;
_delay_ms(5); }
//日期
void date()
{ seg11[0]=seg[y/10];
seg11[1]=seg[y%10];
seg11[3]=seg[m1/10];
seg11[4]=seg[m1%10];
seg11[6]=seg[d/10];
seg11[7]=seg[d%10];
seg11[2]=seg11[5]=0x00;
PORTA=0x00;
PORTA=seg11[ja];
PORTB=~(1<<ja);
ja=(ja+1)&0x07;
_delay_ms(3);
}
int main()
{ INT8U ja=0;
DDRA=0xff; PORTA=0xff;
DDRB=0xff; PORTB=0xff;
DDRD=0x00; PORTD=0xff;PIND=0x00;


MCUCR=0X0A;//MCU 控制寄存器- MCUCR
GICR=0XC0; //通用中断控制寄存器- GICR ASSR=0x08;
TCCR2=0x04;
TCNT2=0;
TIMSK=_BV(TOIE2)|_BV(TOIE0); d=y=m1=06;
h=m=s=12;
sei();
while(1)
{ time();

// if(k1())
// { while(k1()); hour1(); }


// if(k7())
//{ while(k7());
//


// while(2)//日期循环
// {

// date();
// if(k7())
// {while(k7());break;} // }
// }
}}
ISR(TIMER2_OVF_vect) {
if( seg11[2]==0x40)
{
seg11[2]=seg11[5]=0x00;
}

else
{ seg11[2]=seg11[5]=0x40;
second1();
}
}



ISR(INT1_vect)
{ switch (PIND)
{ case 0b10000111 : minute1();break;

case 0b10010111 : hour1();break;
case 0b10100111 : second1();break;

} }

  #include
  #include
  #include
  #define unit unsigned int
  #define uchar unsigned char
  //#define HZ 12
  sbit key0=P0^0; // 分钟调整
  sbit key1=P0^1; // 小时调整

  sbit P2_0=P2^7; //秒 指示灯
  sbit MN_RXD=P3^6;
  sbit MN_TXD=P3^7;

  uchar data CLOCK[4]={0,0,0,12};//存放时钟时间(百分秒,秒,分,和时位)

  //数码管显示表0-f 灭
  uchar code TABLE[]={0xBE,0x06,0xEA,0x6E,0x56,0x7C,0xFC,0x0E,0xFE,0x7E,0x00};
  //**********************************
  //模拟串口发送一个字节数据 函数
  //**********************************
  void SendData(unsigned char senddata)
  {
  unsigned char i;
  for(i=0;i<8;i++)
  {
  if((senddata&0x01)==0)
  MN_RXD=0;
  else
  MN_RXD=1;
  _nop_();
  MN_TXD=0;
  _nop_();
  MN_TXD=1;
  senddata=senddata>>1;
  }
  }

  //**********************************
  //显示程序函数
  //**********************************
  void display(void)
  {
  // unsigned int n;
  uchar temp;
  temp=CLOCK[1]; temp=temp%10; SendData(TABLE[temp]);
  temp=CLOCK[1]; temp=temp/10; SendData(TABLE[temp]);
  temp=CLOCK[2]; temp=temp%10; SendData(TABLE[temp]);
  temp=CLOCK[2]; temp=temp/10; SendData(TABLE[temp]);
  temp=CLOCK[3]; temp=temp%10; SendData(TABLE[temp]);
  temp=CLOCK[3]; temp=temp/10; SendData(TABLE[temp]);

  /*
  for(n=0;n<5000;n++);

  for(n=0;n<6;n++)
  {
  SendData(TABLE[10]);
  }
  */
  }

  //**********************************
  //按键控制函数
  //**********************************
  void keycan()
  {
  unsigned int n;
  EA=0;
  if(key0==0) // 分钟调整
  {
  for(n=0;n<10000;n++); //延时去抖动
  while(key0==0);
  CLOCK[2]=CLOCK[2]+1;
  if(CLOCK[2]==60) //到一时
  {
  CLOCK[2]=0;
  }
  display();

  }
  if(key1==0) // 小时调整
  {
  for(n=0;n<10000;n++); //延时去抖动
  while(key1==0);
  CLOCK[3]=CLOCK[3]+1;
  if(CLOCK[3]==24)
  {
  CLOCK[3]=0;
  }
  display();

  }
  EA=1;
  }

  //**********************************
  //T0中断服务函数
  //**********************************
  void time0() interrupt 1 //using 1
  {
  TH0=0xD8; TL0=0xF0; //重置初值
  // TH0=0xB1; TL0=0xE0;
  //时钟处理
  CLOCK[0]=CLOCK[0]+1;

  }
  //**********************************
  //主函数
  //**********************************
  void main()
  {
  EA=1;
  ET0=1;
  TMOD=0x01; //T0方式1定时
  TH0=0xD8; TL0=0xF0; //D8F0 定时10ms
  // TH0=0xB1; TL0=0xE0; //定时 20ms
  TR0=1;
  for(;;)
  {
  if(CLOCK[0]==100) //到一秒 10ms*100
  {
  CLOCK[0]=0;
  P2_0=~P2_0;
  CLOCK[1]=CLOCK[1]+1;
  if(CLOCK[1]==60) //到一分
  {
  CLOCK[1]=0;
  CLOCK[2]=CLOCK[2]+1;
  if(CLOCK[2]==60) //到一时
  {
  CLOCK[2]=0;
  CLOCK[3]=CLOCK[3]+1;
  if(CLOCK[3]==24)
  {
  CLOCK[3]=0;
  }
  }
  }
  display();
  }


  keycan();
  }

  }

数字钟〔★〕这里用了两种编写方法(即汇编语言与C语言)
(1. 开机时,显示12:00:00的时间开始计时;
(2. P0.0/AD0控制“秒”的调整,每按一次加1秒;
(3. P0.1/AD1控制“分”的调整,每按一次加1分;
(4. P0.2/AD2控制“时”的调整,每按一次加1个小时;
2. 电路原理图

3. 系统板上硬件连线
(1. 把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;
(2. 把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;
(3. 把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上;
4. 相关基本知识
(1. 动态数码显示的方法
(2. 独立式按键识别过程
(3. “时”,“分”,“秒”数据送出显示处理方法
5. 程序框图
6. 汇编源程序
SECOND EQU 30H
MINITE EQU 31H
HOUR EQU 32H
HOURK BIT P0.0
MINITEK BIT P0.1
SECONDK BIT P0.2
DISPBUF EQU 40H
DISPBIT EQU 48H
T2SCNTA EQU 49H
T2SCNTB EQU 4AH
TEMP EQU 4BH
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV SECOND,#00H
MOV MINITE,#00H
MOV HOUR,#12
MOV DISPBIT,#00H
MOV T2SCNTA,#00H
MOV T2SCNTB,#00H
MOV TEMP,#0FEH
LCALL DISP
MOV TMOD,#01H
MOV TH0,#(65536-2000) / 256
MOV TL0,#(65536-2000) MOD 256
SETB TR0
SETB ET0
SETB EA
WT: JB SECONDK,NK1
LCALL DELY10MS
JB SECONDK,NK1
INC SECOND
MOV A,SECOND
CJNE A,#60,NS60
MOV SECOND,#00H
NS60: LCALL DISP
JNB SECONDK,$
NK1: JB MINITEK,NK2
LCALL DELY10MS
JB MINITEK,NK2
INC MINITE
MOV A,MINITE
CJNE A,#60,NM60
MOV MINITE,#00H
NM60: LCALL DISP
JNB MINITEK,$
NK2: JB HOURK,NK3
LCALL DELY10MS
JB HOURK,NK3
INC HOUR
MOV A,HOUR
CJNE A,#24,NH24
MOV HOUR,#00H
NH24: LCALL DISP
JNB HOURK,$
NK3: LJMP WT
DELY10MS:
MOV R6,#10
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
DISP:
MOV A,#DISPBUF
ADD A,#8
DEC A
MOV R1,A
MOV A,HOUR
MOV B,#10
DIV AB
MOV @R1,A
DEC R1
MOV A,B
MOV @R1,A
DEC R1
MOV A,#10
MOV @R1,A
DEC R1
MOV A,MINITE
MOV B,#10
DIV AB
MOV @R1,A
DEC R1
MOV A,B
MOV @R1,A
DEC R1
MOV A,#10
MOV @R1,A
DEC R1
MOV A,SECOND
MOV B,#10
DIV AB
MOV @R1,A
DEC R1
MOV A,B
MOV @R1,A
DEC R1
RET
INT_T0:
MOV TH0,#(65536-2000) / 256
MOV TL0,#(65536-2000) MOD 256
MOV A,#DISPBUF
ADD A,DISPBIT
MOV R0,A
MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
MOV A,DISPBIT
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P3,A
INC DISPBIT
MOV A,DISPBIT
CJNE A,#08H,KNA
MOV DISPBIT,#00H
KNA: INC T2SCNTA
MOV A,T2SCNTA
CJNE A,#100,DONE
MOV T2SCNTA,#00H
INC T2SCNTB
MOV A,T2SCNTB
CJNE A,#05H,DONE
MOV T2SCNTB,#00H
INC SECOND
MOV A,SECOND
CJNE A,#60,NEXT
MOV SECOND,#00H
INC MINITE
MOV A,MINITE
CJNE A,#60,NEXT
MOV MINITE,#00H
INC HOUR
MOV A,HOUR
CJNE A,#24,NEXT
MOV HOUR,#00H
NEXT: LCALL DISP
DONE: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
END

7. C语言源程序
#include <AT89X51.H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};
unsigned char dispbitcnt;
unsigned char second;
unsigned char minite;
unsigned char hour;
unsigned int tcnt;
unsigned char mstcnt;
unsigned char i,j;
void main(void)
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(P0_0==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_0==0)
{
second++;
if(second==60)
{
second=0;
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
while(P0_0==0);
}
}
if(P0_1==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_1==0)
{
minite++;
if(minite==60)
{
minite=0;
}
dispbuf[3]=minite%10;
dispbuf[4]=minite/10;
while(P0_1==0);
}
}
if(P0_2==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_2==0)
{
hour++;
if(hour==24)
{
hour=0;
}
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
while(P0_2==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
mstcnt++;
if(mstcnt==8)
{
mstcnt=0;
P1=dispcode[dispbuf[dispbitcnt]];
P3=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==8)
{
dispbitcnt=0;
}
}
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==60)
{
second=0;
minite++;
if(minite==60)
{
minite=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
dispbuf[3]=minite%10;
dispbuf[4]=minite/10;
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
}

这是我用C编的,不知你能看懂不?没有按键调节。昨天刚编的
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,
0x89,0xc7,0xff };
uchar t0,temp1,temp2,temp3,miao1,miao2,fen1,fen2,shi1,shi2;
void delay(uint z);
void chushi();
void chaifen1();
void chaifen2();
void chaifen3();
void xianshi();
void main()
{
chushi();
while(1)
{
xianshi();
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void chushi()
{
TMOD=0x1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(t0==20)
{
t0=0;
temp1++;
chaifen1();
if(temp1==60)
{
temp1=0;
temp2++;
chaifen2();
if(temp2==60)
{
temp2=0;
temp3++;
chaifen3();
if(temp3==12)
temp3=0;
}
}
}
}
void chaifen1()
{
miao1=temp1/10;
miao2=temp1%10;
}
void chaifen2()
{
fen1=temp2/10;
fen2=temp2%10;
}
void chaifen3()
{
shi1=temp3/10;
shi2=temp3%10;
}
void xianshi()
{
P0=table[miao2];
P2=0x20;
delay(30);
P0=table[miao1];
P2=0x10;
delay(30);
P0=table[fen2];
P2=0x08;
delay(30);
P0=table[fen1];
P2=0x04;
delay(30);
P0=table[shi2];
P2=0x02;
delay(30);
P0=table[shi1];
P2=0x01;
delay(30);
}

我用汇编做的
FLAG BIT 20H.1
HOU EQU 3H
MIN EQU 31H
SEC EQU 32H
COUNT EQU 33H
DISPH EQU 34H
DISPL EQU 35H

ORG 0000H
LJMP START
ORG 000BH
LJMP T0_ISR
ORG 0030H
START:
MOV SP,#50H
MOV SEC,#00
MOV MIN,#00
MOV HOU,#00
MOV TMOD,#01H
MOV TH0,#4CH
MOV TL0,#00H
SETB TR0
SETB ET0
SETB EA
MAIN:
LCALL DISP
JNB FLAG,MAIN
CLR FLAG
LCALL TIMEUP
SJMP MAIN

TIMEUP:
;********* 秒*****************
INC SEC
MOV A,SEC
CJNE A,#60,TIME1
MOV SEC,#0
;***********分*****************
INC MIN
MOV A,MIN
CJNE A,#60,TIME1
MOV MIN,#0
;***********时******************
INC HOU
MOV A,HOU
CJNE A,#24,TIME1
MOV HOU,#0
MOV MIN,#0
MOV SEC,#0
TIME1: RET
;**********显示模块***********************
DISP:
MOV A,SEC
MOV B,#10
DIV AB
MOV DISPH,A
MOV DISPL,B
CLR P3.7
MOV A,DISPL
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P3.7
MOV A,DISPH
MOVC A,@A+DPTR
CLR P3.6
MOV P0,A
LCALL DELAY
SETB P3.6
CLR P3.5
MOV P0,#40H
LCALL DELAY
SETB P3.5
;************************************
MOV A,MIN
MOV B,#10
DIV AB
MOV DISPH,A
MOV DISPL,B
CLR P3.4
MOV A,DISPL
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P3.4
MOV A,DISPH
MOVC A,@A+DPTR
CLR P3.3
MOV P0,A
LCALL DELAY
SETB P3.3
CLR P3.2
MOV P0,#40H
LCALL DELAY
SETB P3.2
;***************************************
MOV A,HOU
MOV B,#10
DIV AB
MOV DISPH,A
MOV DISPL,B
CLR P3.1
MOV A,DISPL
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P3.1
MOV A,DISPH
MOVC A,@A+DPTR
CLR P3.0
MOV P0,A
LCALL DELAY
SETB P3.0
CLR P3.2
MOV P0,#40H
LCALL DELAY
SETB P3.2
RET
;********************************
DELAY:MOV R6,#10
DEL1:MOV R7,#25
DEL2: NOP
NOP
DJNZ R7,DEL2
DJNZ R6,DEL1
RET
;*******************************
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

;***********************************************

T0_ISR: MOV TH0,#4CH
MOV TL0,#00H
INC COUNT
MOV A,COUNT
CJNE A,#20,OP
MOV COUNT,#0
SETB FLAG
OP: RETI

END


基于单片机多功能数字钟
基于单片机多功能数字钟 20 跪求跪求跪求基于单片机多功能数字钟... 跪求 跪求 跪求 基于单片机多功能数字钟 展开  我来答 3个回答 #热议# 已婚女性就应该承担家里大部分家务吗? 檀翰墨u6 2009-11-23 · TA获得超过426个赞 知道小有建树答主 回答量:183 采纳率:0% 帮助的人:115万 我也...

求单片机简易数字钟的课程设计 :要求自制一个单片机最小系统,包括串口...
求单片机简易数字钟的课程设计 :要求自制一个单片机最小系统,包括串口下载、复位电路,采用内部定时器计 5 采用外部时钟芯片DS1302,设计一个具有秒、分、日、月、年的数字时钟,采用四位一体数码管显示相关信息,秒、分显示一页,日、月显示一页,年显示一页。QQ1282031855... 采用外部时钟芯片DS1302,设计一个具有...

单片机数字时钟原理
这个程序已经调试通过了,在走时的同时流水灯进行流动,时分之间有一个小数点作为分隔。还有整点报时功能,在早上八点到中午十二点以及下午三点到晚上八点两个时间段内逢整点报时,其他时间不报时(是因为考虑到人们要午休及晚间休息),除此之外还有调时、调分功能。整个程序基于单片机AT89S52(可用C51、...

单片机如何定时到23::30,另外单片机如何显示时间,和正常的时间一...
可以通过单片机的定时中断来实现。给你个例程,参考一下,使用KEIL C的串口1模拟显示,由于是模拟输出,时钟偏快,但在实际系统上是比较精确的。要实现定时到23:30,只需要在主循环中增加判断语句即可。实物上的显示需要你自己来做。\/ 功能:本程序在12M晶振模式下,通过定时器中断精确实现数字时钟计时...

请教基于AT89C51或者C52单片机的数字时钟设计完整的电路图和程序_百度...
我发了~~总共有3个程序,一次为修改之后的,注释都很清楚,用51 52都可以,程序已经很完善 功能有 1、时钟模式 在其他模式下,长按K2键,均可进入时钟模式,数码管显示“12-00-00”(时间),“-”每秒闪烁一次 本时钟为24小时进制 系统时间为12-00-00,每次掉电重启后均更新为默认值 当时小于...

急求一个用51单片机编的可按键调时的数字时钟程序,数码管显示,C语言...
急求一个用51单片机编的可按键调时的数字时钟程序,数码管显示,C语言编写,谢谢。 最好能提供原理图。仿真图。... 最好能提供原理图。仿真图。 展开 ...skey=skey<<1;\/\/将PRE键的状态存于skey的B1位skey|=SET;\/\/读取SET键的状态,并存于skey的B0位return skey;\/\/返回skey的键值(即PRE,SET的状态)}\/\/...

利用单片机定时器制作数字时钟
下面是时间程序,直接下来用就行了.\/ 描述:简易电子时钟,LED数码管显示 K1---时调整 K2---分调整 上电时初始化显示: 12-00-00 \/ include <reg51.h> include <intrins.h> unsigned char data dis_digit;unsigned char key_s, key_v;unsigned char code dis_code[11]={0xc0,0xf9,0xa4...

89c51单片机的数字钟程序?
2016-11-30 求程序用AT89C51单片机...用八位数码管实现数字... 2015-11-03 利用AT89C51单片机制作多功能数字时钟 2011-11-24 求c51单片机电子钟程序(c语言) 13 2010-12-30 C语言 AT89C52数字钟的程序问题 9 2012-01-09 单片机89C51 电子时钟程序 4位数码管,有4个开关分别控... 5 2013-07-31 ...

单片机做的数字钟不走怎么办??求解!!!
这个问题我也遇到过,刚开始以为是商家卖假货给我的,后来气的摔到地上把单片机摔掉了,于是捡起来安装上去,天啊,奇迹发生了,时钟终于走了(备用电池是焊接上去的,这个时候主电源5V也没有断),可是过一会芯片好烫,赶紧把5V电断了.经过我那次实验得出如下结论:1.什么情况下会导致1302发烫?答:在5V电和...

第一次弄单片机,想实现一个数字时钟
做电子时钟,首先要设计电路啊,是用数码管显示,还是用LCD屏显示。要做实物还要焊接板子。这些电路做完了,才开始写程序的。没有电路是不好写程序的。至于时钟就好写了,用定时器定时20ms,或50ms,采用中断方式,然后对中断计数,中断50次,或20次就是1秒。有了1秒,就好办了,计60秒,为1分,计...

焦作市15230809460: 基于单片机的数字时钟设计方案 -
辛朗安治: 数字钟〔★〕这里用了两种编写方法(即汇编语言与C语言) (1. 开机时,显示12:00:00的时间开始计时;(2. P0.0/AD0控制“秒”的调整,每按一次加1秒; (3. P0.1/AD1控制“分”的调整,每按一次加1分; (4. P0.2/AD2控制“时”的调...

焦作市15230809460: 数字钟设计 单片机 -
辛朗安治: 相关资料: 多功能数字钟设计 一 简介 时钟, 自从它发明的那天起,就成为人类的朋友,但随着时间的推移,人们对它的功能又提出了新的要求,怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时...

焦作市15230809460: 基于单片机的时钟计数器设计
辛朗安治: 89C51 LED电子钟 参考链接: http://www.51picavr.com/news/c8/2009-01/109.htm *APPLICATION NOTE E6000 ICEXPLORER *************** * Title: FOR colk_time * * Version: 00 * * Last Updated: * * MCU: AT89C91 * * FOR: WWW.PICAVR....

焦作市15230809460: 基于单片机的多功能数字时钟的设计
辛朗安治: 用DS1302时钟芯片,主控芯片可以采用带有PWM的单片机,不用语音芯片也可以完成

焦作市15230809460: 用C语言编写AT89C51单片机程序,设计一个智能数字钟. -
辛朗安治: 基本要求:1.C语言程序要求是模块化设计.2.该闹钟基于AT89C51单片机及相关外围电路进行设计.3.该闹钟有6个数码管(共阳极),可分别显示时间(时、分、秒)、及定时时间(分、秒).4.该闹钟有4个按钮,S1是切换显示按键,该键按下时可分别实现切换正常走时显示、设定走时显示、设置定时时间,启动定时,回到正常状态等功能.S2是设定键,即该键按下,将分别选中需要设定的选项.S3键是加键,即按下去表示相应选项加1.S4键是减键,即按下去表示相应的选项减1.5.该闹钟可以定时时间到,LED将发出提示闪光,且持续30s.发挥要求:1.定时时间可被打断,即打断后恢复时继续计时.2.设置闹钟报警功能;3.能切换显示年月日等信息.

焦作市15230809460: 基于单片机的电子时钟 -
辛朗安治: 去百度文库,查看完整内容> 内容来自用户:啊宝1688 绪论 单片机在多功能数字电子钟中的应用已是非常普遍,人们对电子时钟的功能及工作顺序都已非常熟悉了,但是却很少知道它的内部结构以及工作原理.由单片机作为电子时钟的核心控...

焦作市15230809460: 基于单片机的数字时钟的设计
辛朗安治: 源码. http://download.csdn.net/source/1007815

焦作市15230809460: 单片机的数字钟设计 利用51单片机设计一个数字钟,至少实现基本的时分秒功能,要有必要的程序、程序流程图
辛朗安治: 这有一篇给你参考:基于51单片机的多功能数字钟系统设计(免费下载)地址:http://www.mcudata.com/Webmaster/51danpianji/2010/0819/4435.html第1章 绪 论 第2章 MCS-51单片机的结构第3章 电路的硬件设计第4章 电路的软件设计第5章 结论与展望 5.1 结论 5.2 单片机的发展趋势

焦作市15230809460: 基于单片机的数字时钟的设计论文(51单片机) -
辛朗安治: 你反汇编一下#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h>#define INT8U unsigned char #define INT16U unsigned int #define k1() ((PIND & (1<<PD0))==0x00) #define k2() ((PIND & (1<<PD1))==0x00) #define k3() ((PIND & (...

焦作市15230809460: 请教基于AT89C51或者C52单片机的数字时钟设计完整的电路图、设计方法和程序 -
辛朗安治: #include #define uchar unsigned char#define uint unsigned intuchar code tab[]={0x3f,0x06,0x5b,0x4f,0...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网