导航:首页 > 操作系统 > 单片机数码管显示时分秒

单片机数码管显示时分秒

发布时间:2025-01-29 12:49:05

❶ 51单片机控制DS1302,时间显示在数码管上。

1302.c

#include<DS1302.h>

#include<key.h>

ucharbit_ser[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

ucharseven_seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

/***********************时间显示*****************/

voidtimer0_init(void) //T0初始化函数,用于时间的动态显示

{

TMOD=0x21;

TL0=(65536-5000)%256;

TH0=(65536-5000)/256;

EA=1;

ET0=1;

TR0=1;

}

voidtimer0_isr(void)interrupt1 //T0中断处理函数

{

charflag; //flag用于表示调整时闪烁的亮或灭

TR0=0;

TL0=(65536-5000)%256;

TH0=(65536-5000)/256;

TR0=1;

flag=x/100*0xff; //设置闪烁标志,如果x大于100则flag为0xff,小于100则为0x00

x++;

if(x>200)

x=0;

switch(i)

{

case0:

P2=bit_ser[0];

if(setflag==3) //根据setflag的值判断当前位是否需要闪烁

P0=flag|seven_seg[dis_buffer[0]];

else

P0=seven_seg[dis_buffer[0]];

break;

case1:

P2=bit_ser[1];

if(setflag==3)

P0=flag|seven_seg[dis_buffer[1]];

else

P0=seven_seg[dis_buffer[1]];

break;

case2:

P2=bit_ser[2];

if(setflag==2)

P0=flag|seven_seg[dis_buffer[2]];

else

P0=seven_seg[dis_buffer[2]];

break;

case3:

P2=bit_ser[3];

if(setflag==2)

P0=flag|seven_seg[dis_buffer[3]];

else

P0=seven_seg[dis_buffer[3]];

break;

case4:

P2=bit_ser[4];

if(setflag==1)

P0=flag|seven_seg[dis_buffer[4]];

else

P0=seven_seg[dis_buffer[4]];

break;

case5:

P2=bit_ser[5];

if(setflag==1)

P0=flag|seven_seg[dis_buffer[5]];

else

P0=seven_seg[dis_buffer[5]];

break;

}

i++;

if(i>=6)

{

i=0;

if(j==10)

{

j=0;

if(setflag==0)

DS1302_GetTime(&Time); //如果setflag是0,就从1302中读出时间,因为setflag不是0时,说明处于调整状态,不需要读时间

dis_buffer[5]=Time.Second%10; //把当前时间放入显示缓冲区

dis_buffer[4]=Time.Second/10;

dis_buffer[3]=Time.Minute%10;

dis_buffer[2]=Time.Minute/10;

dis_buffer[1]=Time.Hour%10;

dis_buffer[0]=Time.Hour/10;

}

j++;

}

}

voidmain()

{

Initial_DS1302(Time);

timer0_init();

while(1)

{

set_down();

timer_down();

up_down();

down_down();

beepflag_down();

if(setflag==0&&Time.Hour==romhour&&Time.Minute==romminute&&Beepflag==1) //判断蜂鸣器是否要响

Beep=!Beep;

}

}

//key.c

#include<reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

uchari=0,j=0,x=0,setflag,flag_set,flag_timer;//setflag用来表示调整的位置,flag_set和flag_timer分别表示当前处于调整状态还是定时状态

SYSTEMTIMETime={0,20,15,3,30,6,10}; //系统时间的初始值2010年6月30日星期三,15时20分0秒

chardis_buffer[6]; //存放显示数据的缓冲区

sbitBeep_flag=P3^2; //蜂鸣器的接口

sbitkey_timer=P3^4; //定时按钮

sbitkey_set=P3^5; //调整按钮

sbitkey_up=P3^6; //增加按钮

sbitkey_down=P3^7; //减小按钮

charromhour,romminute,romsec; //分别存放定时的时,分,秒

bitBeepflag; //标记闹钟是否开启

//延时函数

voiddelays(ucharx)

{

while(x)x--;

}

//设置键的处理函数

voidset()

{

setflag++;

flag_set=1;

if(setflag>=4)

{

setflag=0;

flag_set=0;

Initial_DS1302(Time);

}

}

//定时间的处理函数

voidtimer()

{

setflag++;

flag_timer=1;

if(setflag==1)

{

Time.Hour=romhour;

Time.Minute=romminute;

Time.Second=romsec;

}

elseif(setflag>=4)

{

setflag=0;

flag_timer=0;

romhour=Time.Hour;

romminute=Time.Minute;

romsec=Time.Second;

}

}

//增加键的处理函数

voip()

{

switch(setflag)

{

case0:

break;

case1:

Time.Second++;

if(Time.Second>=60)

Time.Second=0;

break;

case2:

Time.Minute++;

if(Time.Minute>=60)

Time.Minute=0;

break;

case3:

Time.Hour++;

if(Time.Hour>=24)

Time.Hour=0;

break;

}

}

//减小键的处理函数

voiddown()

{

switch(setflag)

{

case0:

break;

case1:

Time.Second--;

if(Time.Second<0)

Time.Second=59;

break;

case2:

Time.Minute--;

if(Time.Minute<0)

Time.Minute=59;

break;

case3:

Time.Hour--;

if(Time.Hour<0)

Time.Hour=23;

break;

}

}

//设置键的扫描函数

voidset_down()

{

if(key_set==0&&flag_timer==0)

{

delays(100);

if(key_set==0)

{

set();

}

while(!key_set);

}

}

//定时键的扫描函数

voidtimer_down()

{

if(key_timer==0&&flag_set==0)

{

delays(100);

if(key_timer==0)

{

timer();

}

while(!key_timer);

}

}

//增加键的扫描函数

voip_down()

{

if(key_up==0&&setflag!=0)

{

delays(100);

if(key_up==0)

{

up();

while(!key_up);

}

}

}

//减少键的处理函数

voiddown_down()

{

if(key_down==0&&setflag!=0)

{

delays(100);

if(key_down==0)

{

down();

while(!key_down);

}

}

}

//定时开关的扫描处理函数

voidbeepflag_down()

{

if(Beep_flag==0)

{

delays(100);

{

Beepflag=!Beepflag;

while(!Beep_flag);

}

}

}

//ds1302.h

#ifndef_REAL_TIMER_DS1302

#define_REAL_TIMER_DS1302

#include<REG51.h>

sbitDS1302_CLK=P1^1;//实时时钟时钟线引脚

sbitDS1302_IO=P1^2;//实时时钟数据线引脚

sbitDS1302_RST=P1^3;//实时时钟复位线引脚

sbitACC0=ACC^0;

sbitACC7=ACC^7;

sbitBeep=P2^7;

typedefstruct__SYSTEMTIME__

{ charSecond;

charMinute;

charHour;

charWeek;

charDay;

charMonth;

charYear;

}SYSTEMTIME; //定义的时间类型

#defineAM(X) X

#definePM(X) (X+12) //转成24小时制

#defineDS1302_SECOND 0x80//秒寄存器

#defineDS1302_MINUTE 0x82//分寄存器

#defineDS1302_HOUR 0x84

#defineDS1302_WEEK 0x8A

#defineDS1302_DAY 0x86

#defineDS1302_MONTH 0x88

#defineDS1302_YEAR 0x8C

#defineDS1302_RAM(X) (0xC0+(X)*2) //用于计算DS1302_RAM地址的宏

voidDS1302InputByte(unsignedchard) //实时时钟写入一字节(内部函数)

{unsignedchari;

ACC=d;

for(i=8;i>0;i--)

{ DS1302_IO=ACC0; //相当于汇编中的RRC

DS1302_CLK=1;

DS1302_CLK=0;//发一个高跳变到低的脉冲

ACC=ACC>>1;

}

}

unsignedcharDS1302OutputByte(void) //实时时钟读取一字节(内部函数)

{ unsignedchari;

for(i=8;i>0;i--)

{ ACC=ACC>>1; //相当于汇编中的RRC

ACC7=DS1302_IO;

DS1302_CLK=1;

DS1302_CLK=0;//发一个高跳变到低的脉冲

}

return(ACC);

}

voidWrite1302(unsignedcharucAddr,unsignedcharucDa)//ucAddr:DS1302地址,ucData:要写的数据

{ DS1302_RST=0;

DS1302_CLK=0;

DS1302_RST=1;

DS1302InputByte(ucAddr); //地址,命令

DS1302InputByte(ucDa); //写1Byte数据

DS1302_CLK=1;

DS1302_RST=0;//RST0->1->0,CLK0->1

}

unsignedcharRead1302(unsignedcharucAddr) //读取DS1302某地址的数据

{ unsignedcharucData;

DS1302_RST=0;

DS1302_CLK=0;

DS1302_RST=1;//enable

DS1302InputByte(ucAddr|0x01);//地址,命令

ucData=DS1302OutputByte();//读1Byte数据

DS1302_CLK=1;//RST0->1->0,CLK0->1

DS1302_RST=0;

return(ucData);

}

voidDS1302_SetProtect(bitflag)//是否写保护

{ if(flag)

Write1302(0x8E,0x80);//WP=1,不能写入

else

Write1302(0x8E,0x00);//WP=0,可以写入

}

voidDS1302_SetTime(unsignedcharAddress,unsignedcharValue)//设置时间函数

{ DS1302_SetProtect(0);

Write1302(Address,((Value/10)<<4|(Value%10)));//高4位为十位,低4位为个位

DS1302_SetProtect(1);

}

//获取时间函数,从DS1302内读取时间然后存入Time内

voidDS1302_GetTime(SYSTEMTIME*Time)

{ unsignedcharReadValue;

ReadValue=Read1302(DS1302_SECOND);

Time->Second=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//转换成10进制的秒

ReadValue=Read1302(DS1302_MINUTE);

Time->Minute=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);

ReadValue=Read1302(DS1302_HOUR);

Time->Hour=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);

ReadValue=Read1302(DS1302_DAY);

Time->Day=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);

ReadValue=Read1302(DS1302_WEEK);

Time->Week=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);

ReadValue=Read1302(DS1302_MONTH);

Time->Month=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);

ReadValue=Read1302(DS1302_YEAR);

Time->Year=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);

}

//利用STime初始化DS1302

voidInitial_DS1302(SYSTEMTIMESTime)

{ unsignedcharSecond=Read1302(DS1302_SECOND);

if(Second&0x80) DS1302_SetTime(DS1302_SECOND,0);//如果第七为1(表明没有启动),则启动时钟

DS1302_SetTime(DS1302_SECOND,STime.Second); //设定起始时间

DS1302_SetTime(DS1302_MINUTE,STime.Minute);

DS1302_SetTime(DS1302_HOUR,STime.Hour);

DS1302_SetTime(DS1302_DAY,STime.Day);

DS1302_SetTime(DS1302_MONTH,STime.Month);

DS1302_SetTime(DS1302_YEAR,STime.Year);

DS1302_SetTime(DS1302_WEEK,STime.Week);

}

#endif

❷ 单片机控制8位数码管,显示年月日和时分秒,但是这两者该如何切换呢

可以这样做
年月日:11-12-14
时分秒:11-58-02
这样每串都是8位,先显示时分秒,20秒之后显示一次年月日(可以持续5秒),这样大部分时间都是显示时间,还可以看到年月日。
你应该看过公交车的显示屏,他不止显示年月日、时分秒,还有温度 适度等信息,就是这么显示的。
也可以使用外接一个按键,来进行功能选择,不过感觉轮换显示的方式就行了,很实用。

❸ 求程序用AT89C51单片机......用六位数码管实现数字时钟,显示时分秒,用两个按键可分别调整时、分。

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,miao,fen,shi;
sbit m=P3^0;
sbit n=P3^1;
uchar code table[]={ //数码管编码表
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
void display(uchar miao,uchar fen,uchar shi);
void delay(uint z);
void init();
void main()
{
init();//初始化子程序
miao=0;
shi=0;
fen=0;
while(1)
{
display(miao,fen,shi);
}
}void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}void display(uchar miao,uchar fen,uchar shi) // 显示子函数
{
P0=0x00;
P0=table[miao%10];
P2=0x7f;
delay(1);

P0=0x00;
P0=table[miao/10];
P2=0xbf;
delay(1); P0=0x00;
P0=table[fen%10];
P2=0xdf;
delay(1);

P0=0x00;
P0=table[fen/10];
P2=0xef;
delay(1);

P0=0x00;
P0=table[shi%10];
P2=0xf7;
delay(1); P0=0x00;
P0=table[shi/10];
P2=0xfb;
delay(1);
}void init() // 初始化子函数
{
temp=0;
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256; //租茄并定时器初值,定时50ms(12M晶振),由于考虑MCU指令处理时间,此处赋初值位45872
EA=1;
ET0=1;
TR0=1;
}void timer0() interrupt 1 //定时计数器中纳族断
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256; 、
aa++;
if(aa==20) //中断2次位1S,秒加1
{
miao++;
aa=0;
if(miao==60)
{
fen++; // 满60S, 分加1,秒清0
miao=0;
if(fen==60)
{
shi++; // 小时弊迹加1
fen=0;
if(shi==24) shi=0; //小时满
}
}
}
if(m==0) // 调分
{
delay(2);
if(m==0) fen++;
if(fen==60) fen=0;
delay(2);
while(!m);
}
if(n==0) // 调小时
{
delay(2);
if(n==0) shi++;
if(shi==24) shi=0;
delay(2);
while(!n);
}
}

❹ 单片机控制8位数码管,显示年月日和时分秒,但是这两者该如何切换呢

切换方式可以有两种,一种是手动的,就是用一个按钮,按一下显示年月日,再按一下显示时钟,再按就重复了。
另一种是自动切换,可以定时几秒钟一切换显示。
你注意一下共交车上的时钟和温度的显示就是自动切换的,可以用这种方式比较好。

❺ 51单片机设计数码管显示时钟的程序怎么写

#include<reg51.h>

#defineucharunsignedchar
ucharcodeledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9
unsignedcharsec=0,min=0,hour=12,scanled;
unsignedcharkey,flashbit,mode,time;
unsignedchardisdat[8];
sbitled=P1^0;
voiddelay(unsignedintx)
{
unsignedinti,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
voiddischg()
{
disdat[0]=sec%10;
disdat[1]=sec/10;
disdat[2]=10;

disdat[3]=min%10;
disdat[4]=min/10;
disdat[5]=10;

disdat[6]=hour%10;
disdat[7]=hour/10;
}
voidflash()
{
switch(flashbit)
{
case0:break;
case1:
disdat[6]=0x10;
disdat[7]=0x10;
delay(50);
dischg();
delay(80);
break;
case2:
disdat[3]=0x10;
disdat[4]=0x10;
delay(50);
dischg();
delay(80);
break;
case3:
disdat[0]=0x10;
disdat[1]=0x10;
delay(50);
dischg();
delay(80);
break;
default:break;
}
}
voidt0isr()interrupt1 //秒计时
{
TH0=0x3c;
TL0=0xb0;
time++;
switch(mode)
{
case0:
if(time==20)
{
time=0;
sec++;
if(sec>59)
{
sec=0;
min++;
if(min>59)
{
min=0;
hour++;
if(hour>23)hour=0;
}
}
}
break;
case1:
if(time==20)
{
time=0;
if(sec>0)sec--;
elseif(min>0){sec=59;min--;}
elseif(hour>0){sec=59;min=59;hour--;}
else{hour=0;min=0;sec=0;}
}
break;
}
dischg();
}
voidt1isr()interrupt3 //显示
{
TH1=0xec;
TL1=0x78;
switch(scanled)
{
case0:
P2=0x01;
P0=~ledtab[disdat[7]];
break;
case1:
P2=0x02;
P0=~ledtab[disdat[6]];
break;
case2:
P2=0x04;
P0=~ledtab[disdat[5]];
break;
case3:
P2=0x08;
P0=~ledtab[disdat[4]];
break;
case4:
P2=0x10;
P0=~ledtab[disdat[3]];
break;
case5:
P2=0x20;
P0=~ledtab[disdat[2]];
break;
case6:
P2=0x40;
P0=~ledtab[disdat[1]];
break;
case7:
P2=0x80;
P0=~ledtab[disdat[0]];
break;
default:break;
}
scanled++;
scanled%=8;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
sec=55;
min=59;
hour=23;
flashbit=0;
scanled=0;
time=0;
mode=0;
dischg();
while(1)
{
flash();//闪烁
if((P3&0x0f)!=0x0f){
key=P3&0x0f;
while((P3&0x0f)!=0x0f);
led=0;
delay(10);
key|=0xf0;
switch(~key)
{
case0x01: //p3.1选择调时、分、秒
TR0=0;
flashbit+=1;
if(flashbit>3){flashbit=0;TR0=1;}
break;
case0x02: //p3.2调数
if(flashbit==0)break;
if(flashbit==1)
{
hour++;
if(hour>99)hour=0;
}
if(flashbit==2)
{
min++;
if(min>59)min=0;
}
if(flashbit==3)
{
sec++;
if(sec>59)sec=0;
}
break;
case0x04: //选择正/倒
TR0=0;
mode++;
mode&=0x01;
if(mode==0){sec=0;min=0;hour=0;}
dischg();
break;
case0x08: //启动/暂停
TR0=~TR0;
break;
default:break;
}
}
}
}

❻ 51单片机实现数字时钟,用四位数码管实现分计时,显示分和秒,可以任意设置时间。

1、将分(秒)中的数字位分离
2、控制显示在相应数码管
3、数码管如果采用动态扫描实现,要注意位选和段选
4.更多交流参考我空间文章。

❼ 51单片机6位数码管显示时间

C51单片机六位数码管时钟
用数码管dot分隔时分秒
用三个按键设置时间:
SET键:小时设定->分钟设定->结束设定,小时设定状态时表示小时的两位数码管闪烁,分钟设定时表示分钟的两位数码管闪烁
CHANGE键:在小时设定状态和分钟设定状态改变数值
SET S键:秒置零

C语言代码:
//main.c

#include <REGX52.H>
typedef unsigned int UINT ;
typedef unsigned char UCHAR ;
#define KEY P2
#define KEYMASK 0x07
sbit LE1 = P2^6; //定义位控口
sbit LE2 = P2^7; //定义段控口
UCHAR KeyPressDown = 0x00;
UCHAR KeyRelease = 0x00;
UCHAR LastKey = 0x00;
UCHAR MODE ;
extern UCHAR HH;
extern UCHAR MM;
extern UCHAR SS;
extern bit T_CYCLE ;
extern void T0_Init(void); //初始化定时器,函数定义在Timer.c
UCHAR code NUM[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void delay(UINT t) //延时t时钟周期
{
while (t--) ;
}

void H_Increase(void) //小时增1
{
if(HH<23) HH++;
else
{
HH = 0;
}
}

void M_Increase(void) //分钟增1
{
if(MM<59) MM++;
else
{
MM = 0;
H_Increase();
}
}

void S_Increase(void) //秒增1
{
if(SS<59) SS++;
else
{
SS = 0;
M_Increase();
}
}

void display(UCHAR SEG,UCHAR Digi) //显示一位数码管,SEG = 0-9数字,Digi = 第0-6位
{
LE2 = 1;
P0 = (0x01<<Digi) ;
LE2 = 0;
P0 = 0x00;
LE1 = 1;
P0 = NUM[SEG];
if (Digi==1||Digi==3) P0 &= 0x7f ; //显示分隔符
delay(50);
P0 = 0xff;
LE1 = 0;
}

void main(void)
{
P0 = 0xff;
LE1 = 0;
LE2 = 0;
T0_Init();
while(1)
{
if(MODE != 1 || T_CYCLE)
{
display(HH/10,0); //显示小时十位数
display(HH%10,1); //显示小时个位数
}
if(MODE != 2 || T_CYCLE)
{
display(MM/10,2); //显示分钟十位数
display(MM%10,3); //显示分钟个位数
}
display(SS/10,4); //显示秒十位数
display(SS%10,5); //显示秒个位数
}
}

void key_Process(void) //按键处理程序
{
UCHAR CurrKey;
KEY |= KEYMASK; //将按键对应的IO设置为输入状态
CurrKey = (~KEY) & KEYMASK;

KeyPressDown = (~LastKey) & CurrKey;
KeyRelease = LastKey & (~CurrKey);

LastKey = CurrKey;
switch(KeyRelease)
{
case 1:
if(MODE == 2) MODE = 0;
else MODE ++;
break;
case 2:
if(MODE == 1) H_Increase() ;
if(MODE == 2) M_Increase() ;
break;
case 4:
SS = 0;
break;
default: break;
}
}

//Timer.c

#include <reg52.h>
typedef unsigned int UINT ;
typedef unsigned char UCHAR ;
UCHAR HH = 14; //小时初始值
UCHAR MM = 2; //分钟初始值
UCHAR SS = 55; //秒初始值
UINT u_10ms = 0; //10ms计数
bit T_CYCLE = 0;
extern void key_Process(void);
extern void S_Increase(void);

void T0_Init(void)
{
TMOD &= 0xf0;
TMOD |= 0x01;
//定时器赋初始值,定时时间为10ms。
TH0 = 0xd8;
TL0 = 0xf0;
TR0 = 1;
IE = 0x82;

}

void T0_INTSrv(void) interrupt 1
{
//定时器重新开始计时。
TH0 = 0xd8;
TL0 = 0xf0;
u_10ms ++;
if (u_10ms%20==0) // 200 ms
{
T_CYCLE = ! T_CYCLE; //闪烁循环
}
if (u_10ms>99) // 1000 ms = 1 second
{
u_10ms = 0;
S_Increase();
}
key_Process(); //SET按键处理
}

Proreus仿真电路:

❽ 求51单片机电子时钟设计。用6个数码管显示出时分秒。

一、求51单片机电子时钟设计。用6个数码管显示出时分秒。

;===================================== ;程序完成一个电子钟的设计    ;================================================ ;定义程序入口地址  ORG ORG000BH AJMPT0INT  ;======================================================== ;定义内部REQU30H SECEQU40H MINEQU41H HORE3H  ;=================================== ;定义数码管端口  LEGEQUP2  ORG0100H START: MOVSEC, #50 MOVMIN, #5 MOVTIME, #0 MOVTMOD, #01H MOVT0) MOVTH0, #HIGH(-50000) SETBTR0 SETBET0 SETBISPLAY AJMPMAIN  COUNTER: MOVA,  #10 DIVAB MOVDISBUF, A MOVDISN MOVB, #10 DIVAB MOVDISBUF+3, A MO B MOVA, SEC MOVB, #10 DIVAB MOVDISBUF+6, A MOVDISBUF+7, B MO MOVDISBUF+5, #16 RET  DISPLAY: CALLCOUNTER MOVR0, #DISBUF MOVR1, #0 DISPLOOP: MOVDPTR, #LEDCODE MOVATR MOVLEDDATA, A  MOVDPTR, #LEDPOSIT MOVA, R1 MOVCA, @A+DPTR MOVLEDSEG, A  CALLDELAY  MOVLEDSEG, #0FFH  INCR0 INCR1 CJNER1, #8, DISPLOOP MOVR0, DISBUF MOVR1, #0  RET  DELAY: MOVR7, #200 DJNZR7, $ RET  T0INT: PUSHACC MOVTL0, #LOW(HIGH(-50000) INCTIME MOVA T0OUT MOVTIME, #0 C CJNEA, #60, T0OUT MOVSEC, #0 INCMIN MOVA, MIN CJNEA, #60, T0OUT MOVMIN, #0 INCHOR MOVA, HOR CJNEA, #24HOR, #0 T0TI  ;======================================= ;共阴数码管码表  LEDCODE:   DB3FH, 06H, 5bH, 4fH, 66H,     2    3    4    5    6    7     DB7fH, 6fH, 77H, 7cH,39H, 5eH, 79H, 71H, 40H         ;  8    9   A    B    C    D    E    F  -  ;=============== ;共阴数码管位选信号定义  LEDPOSIT: DB0FEH, 0FH, 0EFH, 0DFH, 0BFH, 7

二、银联POS机设置问题,由于要换办公地点,电话改了,往外打电...

各家的手续费不一样,一般是在1-2%,我知道的,你可以打你银行的电话问问具体是多少,如果是2%,建议你在换个银行问问,有可能是1%

阅读全文

与单片机数码管显示时分秒相关的资料

热点内容
linuxmaven路径 浏览:135
python爬qq说说 浏览:414
linuxmap文件 浏览:67
转转app如何搜索快手主播 浏览:776
移动硬盘文件夹成0字节 浏览:683
梦幻西游解压视频大全 浏览:252
解压小视频手速 浏览:152
我的世界服务器卡没血如何修改 浏览:161
vba入门到精通pdf 浏览:113
tomcat怎么一个服务器部署 浏览:795
phphttps接口 浏览:895
javabyte数组int 浏览:810
公司网络共享的文件夹 浏览:1000
拍脸搭配衣服是什么app 浏览:916
欧珀手机怎么更改加密密码 浏览:508
程序员那么可爱陆漓气人语录 浏览:904
python中del删除 浏览:459
华为云耀服务器和ecs区别 浏览:730
ruby语法编译语言 浏览:569
U盘加密以后文件破损 浏览:287