一部分用C语言编写的C51单片机的时钟程序,求加注释

一部分用C语言编写的C51单片机的时钟程序,求加注释,第1张

uchar code seven_seg[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,

0x6f,0x77,0x7C,0x39,0x5e,0x79,0x71};

uchar keyState = 0 ; // 0表示没有 *** 作 1 修改秒 2 修改分钟 3 修改小时 4 定闹 小时 5定闹分钟

uint ledState =0;

uchar ledStateNum=0;

uint num = 0 ;

sbit KEY1=P3^0;

sbit KEY2=P3^1;

sbit KEY3=P3^2;

sbit KEY4=P3^3;

char timer[] ={ 0 , 0 , 0} ; //时,分,秒

char n_timer[2]={11,0};

void DelayMS(uint ms) //这是个延时函数 进入while循环后开始递减一直到函数表达式为0结束函数

{

while(ms--); //while(0)结束

}

void Display() //这是演示函数在数码管上显示

{

uchar i = 0,flags; //flags是个标志位

uchar count = 0;

uchar temp [6] ={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //六个数字

if( 4 == keyState || 5 == keyState )

{

P2 = temp[0];

P0 = 0x00;

P0 = 0x40;

DelayMS(1);

P2 = temp[1];

P0 = 0x00;

P0 = 0x40;

DelayMS(1);

P2 = temp[2];

P0 = 0x00;

if(ledState && 4 == keyState)

P0 = seven_seg[ n_timer[0] / 10 ];

else

P0 = seven_seg[ n_timer[0] / 10 ] | 0x80;

DelayMS(1);

P2 = temp[3];

P0 = 0x00;

if(ledState && 4 == keyState)

P0 = seven_seg[ n_timer[0] % 10 ];

else

P0 = seven_seg[ n_timer[0] % 10 ] | 0x80;

DelayMS(1);

P2 = temp[4];

P0 = 0x00;

if(ledState && 5 == keyState)

P0 = seven_seg[ n_timer[1] / 10 ];

else

P0 = seven_seg[ n_timer[1] / 10 ] | 0x80;

DelayMS(1);

P2 = temp[5];

P0 = 0x00;

if(ledState && 5 == keyState)

P0 = seven_seg[ n_timer[1] % 10 ];

else

P0 = seven_seg[ n_timer[1] % 10 ] | 0x80;

DelayMS(1);

P2 = 0XFF;

return ;

}

if( 0 == keyState)

{

P2 = temp[0];

P0 = 0x00;

P0 = seven_seg[ timer[0] / 10 ];

DelayMS(1);

P2 = temp[1];

P0 = 0x00;

P0=seven_seg[ timer[0] % 10 ];

DelayMS(1);

P2 = temp[2];

P0 = 0x00;

P0 = seven_seg[ timer[1] / 10 ];

DelayMS(1);

P2 = temp[3];

P0 = 0x00;

P0 = seven_seg[ timer[1] % 10 ];

DelayMS(1);

P2 = temp[4];

P0 = 0x00;

P0 = seven_seg[ timer[2] / 10 ];

DelayMS(1);

P2 = temp[5];

P0 = 0x00;

P0 = seven_seg[ timer[2] % 10 ];

DelayMS(1);

P2 = 0XFF;

return ;

}

while( i < 6 )

{

if(3- keyState == i/2 && ledState == 0)

{

flags = 0;

}

else

{

flags = 1;

}

if( flags)

{

P2 = temp[i];

P0=0x00;

if(0 == i % 2)

{

P0 = seven_seg[ timer[i/2] / 10 ];

}

else

{

P0 = seven_seg[ timer[i/2] % 10 ];

}

}

i++;

}

}

你看看行不行

#include<reg51h>

uchar code tab[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}

void view() /七段数码管显示程序 七个管轮流显示/

{P3=0x01;

unsigned int i=0;

while(i<6)

{n=vnum;

P1=tab[n];

P3<<=1;

i++;

}

}

void mDelay(unsigned int Delay) /延时程序/

{ unsigned int i;

for(;Delay>0;Delay--)

{ for(i=0;i<124;i++)

{;}

}

}

void jumpnum() /用于钟表时分秒的进位/

{if(jnum(5)>9) /秒进位

{jnum[4]=jnum[4]+1;

jnum[5]=0;

if(jnum[4]>6) /秒到分进位

{jnum[3]=jnum[3]+1;

jum[4]=0;

if(jnum[3]>9) /分进位

{jnum[2]=jnum[2]+1;

jnum[3]=0;

if(jnum[2]>6) /分到时进位

{jnum[1]=jnum[1]+1;

jnum[2]=0;

if(jnum[1]>9) /时的进位

{jnum[1]=0;

jnum[0]=jnum[0]+1;

}

else if(jnum[1]>4&&jnum[0]>=2)

{jnum[1]=0;

jnum[0]=0;

}

}

}

}

}

void key() /键盘控制程序

{if((P2&0xFF)!=0xFF); /防抖动

{mDelay(3000);

if((P2&0xFF)!=0xFF)

{unsign int c;

c=1;

while(c<4)

{ if((P2&0xFF)!=0xFF);

{mDelay(3000);

vnum[]=num[];

void view();

if((P2&0xFF)!=0xFF)

{switch(P2): /判断不同的按键

{case 0xFE: c++; /c用于判断是闹钟调时c=3还是时钟调时c=2

case oxFD :if(c=2) /分位增加

{num[3]++;}

else if(c=3)

{lnum[3]++;

}

case oxFC :if(c=2) /时位增加

{num[1]++;}

else if(c=3)

{lnum[1]++;

}

}

if(c=2) /增加后判断是否需要进位

{jnum[]=num[];

jumpnum();

vnum[]=num[];

void view[];}

if(c=3)

{jnum[]=lnum[];

jumpnum();

vnum[]=num[];

void view[];}}}}}}}

void clock() /闹钟程序

{for(cl=0;num[cl]==lnum(cl);cl=cl+1) /当前时间与设定时间相同

{;}

unsigned int kp=0;

if(cl==5&&kp==0) /闹钟铃声

{for(i=1;i<100;i++)

{P1_7=~P1_7;

for(j=1;i<=100;j++);}

void mDelay(3000);

for(i=1;i<100;i++)

{P1_7=~P1_7;

for(j=1;i<=100;j++);}

vnum[]=num[];

void view();

if((P2&0xFF)!=0xFF); /判断是否有按键,有则停止闹钟

{mDelayd(3000)

void view();

if((P2&0xFF)!=0xFF)

{kp=1;}

}}}

viod intclock() /整点报时程序

{unsigned int ic,i;

if(num[2]==5&&num[3]==9&&num[4]==5&&num[5]==0) /判断差十秒整点

{if(ic=num[5]+2;(ic==(num[5]+2))&&num[5]<59;ic=num[5]) /开始发出500hz声因

{for(i=0;i<100;i++)

{P1_7=~P1_7;

for(i=0;i<=100;i++)

}

for(i=1;i<150;i++) /1000hz声音

{P1_7=~P1_7;

for(i=0;i<=50;i++)

}}}}

void count() inturrupt 1 using 2 /计时程序

{cn++;

if(cn==20)

{num[5]++;

cn=0;

}

}

void main()

{ P2=0x00;

unsigned int num[5],jnum[5],lnum[5];

ET0=1;

EA=1;

TR0=1;

EX0=1;

EX1=1;

IT0=1;

IT1=1;

TMOD=0x01;

TH0=0x3C;

TL0=0xB0;

unsigned int cn=0;

P2=0x00;

while(1)

{void key();

void view();

void jumpnumber();

void clock();

void intclock();

}

}

你所有调用display()和 delay()函数时候都没在后面加个分号。漏了还是???

还有:

uchar code table[]={ //显示编码

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71}

也应该在后面加个分号!!

你的分不好拿啊,该用分号的不用,不该用的地方用了,还有括号你用了很多中文的括号。

现在帮你改了,你自己好好对一下了,反正编译通过了,运行结果你自己看吧,我没你的目标板,运行不了。

#include<reg51h>

#define uchar unsigned char//宏定义

#define uint unsigned int

sbit dula=P2^6; //段控制位

sbit wela=P2^7; //位控制位

uchar miao,fen,aa,n1,n2,n3,n4;

uchar code table[]={ //显示编码

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(uint z); //延时程序声明

void init(void);//初始化程序声明

void display(uchar n1 ,uchar n2,uchar n3,uchar n4); //显示程序声明

void main() //主程序

{

init(); //调用初始化程序

while(1) //进入大循环

{

if(aa==20) //判断是否到了1S

{

miao++; //秒数加1

if(miao==60) //判断是否到了60秒

{

miao=0; //秒数清0

fen++; //分数加1

if(fen==60) //判断是否到了60分

{

fen=0; //分数到60则清0

}

n1=fen/10; //第一个数码管显示分的十位

n2=fen%10; //第二个数码管显示分的个位

n3=miao/10; //第三个数码管显示秒的十位

n4=miao%10; //第四个数码管显示秒的个位

}

display(n1,n2,n3,n4);

}

}

}

void delay(uint z) //延时程序

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void display(uchar n1 ,uchar n2,uchar n3,uchar n4)

{

dula=1; //开段选

P0=table[n1]; //送分的十位

dula=0; //关段选

P0=0xff; //消隐

wela=1; //开位选

P0=0xfe; //选通分的十位

wela=0; //关位选

P0=0xff; //消隐

delay(1); //延时

dula=1; //开段选

P0=table[n2]; //送分的个位

dula=0; //关段选

P0=0xff; //消隐

wela=1; //开位选

P0=0xfd; //选通分的个位

wela=0; //关位选

P0=0xff; //消隐

delay(1); //延时

dula=1; //开段选

P0=table[n3]; //送秒的十位

dula=0; //关段选

P0=0xff; //消隐

wela=1; //开位选

P0=0xfb; //选通秒的十位

wela=0; //关位选

P0=0xff; //消隐

delay(1); //延时

dula=1; //开段选

P0=table[n4]; //送秒的个位

dula=0; //关段选

P0=0xff; //消隐

wela=1; //开位选

P0=0xf7; //选通秒的个位

wela=0; //关位选

P0=0xff; //消隐

delay(1); //延时

}

void init(void)

{

}

void timer0(void) interrupt 1 using 1

{

TH0=(65536-50000)/256; //求模

TL0=(65536-50000)%256; //求余

aa++;

}

#include <NEW_8051h>"

#include <taskh>

//

sbit T_CLK=P3^5;      //DS1302引脚连接

sbit T_IO =P3^6;

sbit T_RST=P3^7;

sbit ACC0=ACC^0;           //1bit数据存储位

sbit ACC7=ACC^7;

uchar starts_time[7]={0x00,0x10,0x22,0x20,0x05,0x04,0x10};  //初始化后设置

uchar Sec;

uchar Cent;

uchar Hour;

uchar Year;

uchar Day;

uchar Week;

uchar Month;

//

//根据选择调整相应项目

void Set(uchar sel,uchar sel_1)

{

  uchar address,time;

  uchar max,min;

 if(sel==1)  {address=0x84; max=23;min=0;}    //小时

 if(sel==2)  {address=0x82; max=59;min=0;}    //分钟

 if(sel==3)  {address=0x88; max=12;min=1;}    //月

 if(sel==4)  {address=0x86; max=31;min=1;}    //日

 if(sel==5)  {address=0x8a; max=7;min=1;}    //星期

  time=R1302(address+1)/1610+R1302(address+1)%16;    //变成BCD码

  if (sel_1==1) time++;  else time--;

  if(time>max) time=min;  

  if(time<min) time=max;

          

  W1302(0x8e,0x00);

  W1302(address,time/1016+time%10);  

  W1302(0x8e,0x80); 

}

//DS1302读写程序///

函 数 名:RTInputByte()

功    能:实时时钟写入一字节

说    明:往DS1302写入1Byte数据 (内部函数)

入口参数:d 写入的数据

返 回 值:无 

/

void RTInputByte(uchar d)

{

    uchar h;

    ACC = d;

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

    {

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

        T_CLK = 1;

        T_CLK = 0;

        ACC = ACC >> 1;

    }

}

uchar RTOutputByte(void)

{

    uchar h;

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

    {

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

        ACC7 = T_IO;

        T_CLK = 1;

        T_CLK = 0;

    }

    return(ACC);

}

//

void W1302(uchar ucAddr, uchar ucDa)

{

    T_RST = 0;

    T_CLK = 0;

    T_RST = 1;

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

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

    T_CLK = 1;

    T_RST = 0;

}

/

函 数 名:R1302()

功    能:读取DS1302某地址的数据

说    明:先写地址,后读命令/数据 (内部函数)

调    用:RTInputByte() , RTOutputByte()

入口参数:ucAddr: DS1302地址

返 回 值:ucData :读取的数据

/

uchar R1302(uchar ucAddr)

{

    uchar ucData;

    T_RST = 0;

    T_CLK = 0;

    T_RST = 1;

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

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

    T_CLK = 1;

    T_RST = 0;

    return(ucData);

}

/

函 数 名:Set1302()

功    能:设置初始时间

说    明:先写地址,后读命令/数据(寄存器多字节方式)

调    用:W1302()

入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年

                               7Byte (BCD码)1B 1B 1B 1B 1B  1B  1B

返 回 值:无

/

void Set1302(uchar pClock)

{

    uchar h;

    uchar ucAddr = 0x80;

    W1302(0x8e,0x00);           / 控制命令,WP=0,写 *** 作/

    for(h =7; h>0; h--)

    {

        W1302(ucAddr,pClock);  / 秒 分 时 日 月 星期 年 /

        pClock++;

        ucAddr +=2;

    }

 W1302(0xc0,0x01);

 W1302(0XC2,0X03);   //初始自动转换显示时间为3秒。

    W1302(0x8e,0x80);           / 控制命令,WP=1,写保护/

}

void Auto_Set1302(uchar pClock)

{

    uchar h;

    uchar ucAddr = 0x80;

 if(((R1302(0x81))&0x80)==0x80)

 {

     W1302(0x8e,0x00);           / 控制命令,WP=0,写 *** 作/

     for(h =7; h>0; h--)

     {

         W1302(ucAddr,pClock);  / 秒 分 时 日 月 星期 年 /

         pClock++;

         ucAddr +=2;

     }

    W1302(ucNumRows_adder,0);

    W1302(ucNumRows_p_adder,0);

    W1302(DISP_TIME_adder,170);

  W1302(0xc0,0x01);

  W1302(0XC2,0X03);   //初始自动转换显示时间为3秒。

     W1302(0x8e,0x80);           / 控制命令,WP=1,写保护/

 }

}

/读取DS1302中的时间/

void du1302()

{

      Sec=R1302(0x81);   //对取 秒 分 时 日 月 星期 年

   Cent=R1302(0x83);

   Hour=R1302(0x85);

   Day=R1302(0x87);

   Month=R1302(0x89);

   Week=R1302(0x8b);

   Year=R1302(0x8d);    

   //b=R1302(0xc1);

      //a=R1302(0xc3);

   //a=a/1610+a%16;

 

}

void  write_1302Data (uchar  ucAddr,uchar  Value)

{  

 W1302(0x8e,0x00);           / 控制命令,WP=0,写 *** 作/

    W1302(ucAddr,Value);        //地址和数据

    W1302(0x8e,0x80);           / 控制命令,WP=1,写保护/

}

可按键调节的C语言时钟程序 (郭天祥版)

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

uchar count,key1num;

char shi,fen,miao;

uchar code hh[]=" 2010-5-4 Tue";

uchar code yy[]=" 00-00-00";

sbit ledrs=P2^4;

sbit ledrw=P2^5;

sbit leden=P2^6;

sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

sbit key4=P1^4;

void delay(uchar x)

{

int i,j;

for(i=0;i<x;i++)

for(j=0;j<120;j++);

}

void write_com(uchar com)

{

ledrs=0;

P0=com;

leden=1;

delay(5);

leden=0;

delay(5);

}

void write_date(uchar date)

{

ledrs=1;

P0=date;

leden=1;

delay(5);

leden=0;

delay(5);

}

void init()

{

uchar i;

ledrw=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x80);

write_com(0x01);

for(i=0;i<15;i++)

{

write_date(hh[i]);

}

write_com(0x80+0x40);

for(i=0;i<12;i++)

{

write_date(yy[i]);

}

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void write_sfm(uchar add,uchar date)

{

uchar shi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void keyscan()

{

key4=0;

if(key1==0)

{

delay(5);

if(key1==0)

{

key1num++;

while(key1==0);

if(key1num==1)

{

TR0=0;

write_com(0x80+0x40+10);

write_com(0x0f);

}

if(key1num==2)

{

write_com(0x80+0x40+7);

}

if(key1num==3)

{

write_com(0x80+0x40+4);

}

if(key1num==4)

{

key1num=0;

write_com(0x0c);

TR0=1;

}

}

}

if(key1num!=0)

{

if(key2==0)

{

delay(5);

if(key2==0)

{

while(key2==0);

if(key1num==1)

{

miao++;

if(miao==60)

miao=0;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(key1num==2)

{

fen++;

if(fen==60)

fen=0;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(key1num==3)

{

shi++;

if(shi==24)

shi=0;

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

}

}

if(key3==0)

{

delay(5);

if(key3==0)

{

while(key3==0);

if(key1num==1)

{

miao--;

if(miao==-1)

miao=59;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(key1num==2)

{

fen--;

if(fen==-1)

fen=59;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(key1num==3)

{

shi--;

if(shi==-1)

shi=23;

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

}

}

}

}

void main()

{

init();

while(1)

{

keyscan();

if(count==20)

{

count=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

}

write_sfm(4,shi);

}

write_sfm(7,fen);

}

write_sfm(10,miao);

}

}

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

}

我给你一个保证好用的,KEY_COM调模式,按一下进入调时 ,在按一下调分,再按一下退出调时模式,这时加减按键都无效,在调时模式时会产生闪烁方式,这段程序是我自己想的办法实现的,可能有点笨拙,但效果很好,我建议你用DS1302做时钟,用单片机计数器由于晶振等原因会有很大的误差,实际中没有用直接用单片机做的,希望对你有帮助。

(段选和位选接的都是8位的D触发器,如果你的开发板电路结构有区别,改一下显示部分的程序就行了)

#include<reg51h>

#define uchar unsigned char

sbit duan=P0^0;

sbit wei=P0^1;

sbit KEY_ADD=P3^3;

sbit KEY_DEC=P3^4;

sbit KEY_COM=P3^5;

uchar code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40, 0x00 };

char hour=0,minute=0,second=0,i=0,flag=0;

unsigned char t=0,t1=0,t2=0,t3=0;

unsigned int count=0;

void delays()//10ms延时子程序

{unsigned char i,j;

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

for(j=248;j>0;j--);

}

void start()

{

TMOD=0x01;

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

ET0=1;

EA=1;

TR0=1;

}

void main()

{

start();

KEY_ADD=1;

KEY_DEC=1;

KEY_COM=1;

while(1){

if(!KEY_COM)

{

delays();

if(!KEY_COM)

{while(!KEY_COM);

flag++;if(flag==3)flag=0;

}

}

if(!KEY_ADD)

{

delays();

if(!KEY_ADD)

{

while(!KEY_ADD);

if(flag==1)

{hour++;if(hour==24)hour=0;}

if (flag==2)

{minute++;if(minute==60)minute=0;}

}

}

if(!KEY_DEC)

{

delays();

if(!KEY_DEC)

{while(!KEY_DEC);

if(flag==1)

{hour--;if(hour<0)hour=23;}

if(flag==2)

{minute--;if(minute<0)minute=59;}

}

}

}

}

void t0() interrupt 1

{

TH0=(65536-2000)/256;

TL0=(65536-2000)%256;

count++;

switch(i)

{case 0: {if(flag==1){t++;if(t==60)t=0; if(t<30) {P1=a[hour/10];duan=1;duan=0;P1=~0x01;wei=1;wei=0;}

else {P1=0x00;duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } else {P1=a[hour/10];duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } break;

case 1: {if(flag==1) {t1++;if(t1==60)t1=0; if(t1<30) {P1=a[hour%10];duan=1;duan=0;P1=~0x02;wei=1;wei=0;}

else {P1=0x00;duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } else {P1=a[hour%10];duan=1;duan=0;P1=~0x02;wei=1;wei=0;} } break;

case 2:{P1=0x40;duan=1;duan=0;P1=~0x04;wei=1;wei=0;}break;

case 3: {if(flag==2) {t2++;if(t2==60)t2=0; if(t2<30) {P1=a[minute/10];duan=1;duan=0;P1=~0x08;wei=1;wei=0;}

else {P1=0x00;duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } else {P1=a[minute/10];duan=1;duan=0;P1=~0x08;wei=1;wei=0;} } break;

case 4: {if(flag==2) {t3++;if(t3==60)t3=0; if(t3<30) {P1=a[minute%10];duan=1;duan=0;P1=~0x10;wei=1;wei=0;}

else {P1=0x00;duan=1;duan=0;P1=~0x01;wei=1;wei=0;} } else {P1=a[minute%10];duan=1;duan=0;P1=~0x10;wei=1;wei=0;} } break;

case 5:{P1=0x40;duan=1;duan=0;P1=~0x20;wei=1;wei=0;}break;

case 6:{P1=a[second/10];duan=1;duan=0;P1=~0x40;wei=1;wei=0;}break;

case 7:{P1=a[second%10];duan=1;duan=0;P1=~0x80;wei=1;wei=0;}break;

}

i++;

if(i==8)i=0;

if(count==500)

{count=0;

second++;

if(second==60)

{second=0;

minute++;

if(minute==60)

{minute=0;

hour++;

if(hour==24)

{

hour=0;

}

}

}

}

}

以上就是关于一部分用C语言编写的C51单片机的时钟程序,求加注释全部的内容,包括:一部分用C语言编写的C51单片机的时钟程序,求加注释、求单片机C语言的电子闹钟设计程序 其功能只要有闹钟,一天24小时的时钟功能就行。、51单片机用c语言编译时钟程序,跪求高手帮忙看下我的程序,共阴LED上显示的是00-00-00等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9995074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存