用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器。
用Proteus制作的时钟可以显示一年,月份,一天,时间,分钟和第二个。; sbitk3 = p1 ^ 2 ; sbitk4 = p1 ^ 3 ; sbitk5 = p1 ^ 4 ; sbitk6 = p1 ^ 5 ; sbitpoit = p0 ^ 7 ; uintyear = 2 01 1 ,年= 0; ucharmon = 6 ,mon0 = 0,day = 2 6 ,day0 = 0,时间= 2 3 ,hour0 = 0,min = 1 5 ,min0 = 0,dry = 0,dry0 = 1 0,temp0 = 0; UCHARR; ucharcod1 [] = {0xc0.0xf9 .0xa4 .0xb0.0x9 9 .0x9 2 .0x8 2 .0xf8 .0x8 0.0x9 0}; uChartemp [] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x。
,0x00.0x00.0x 00}; voiddelay(uintz){uintx,y; 对于(x = 0; xz; x ++)for(y = 0; y1 00; y ++);} voidexter_init(){it0 = 1 ; ex0 = 1 ;} voidTime_init(){tmod = 0x01 ; th0 = timh; tl0 = timml; ET0 = 1 ; EA = 1 ; tr0 = 1 ;} vo dre_time(uchara){uchari,j; for(j = 0; ja; j ++){for(i = 0; i1 4 ; i ++){p0 = cod1 [temp [i]]; if(i == 3 || i == 5 )){sec0 = dry; 温度[1 2 ] = Dry0/1 0; temp [1 3 ] = dry0%1 0;} if(年!= an0){年=年; 临时[0] =年 / 1 000; 临时[1 4 ] = an0%1 000; temp [1 ] = temp [1 4 ] / 1 00; 温度[1 4 ] = temp [1 4 ]%1 00; te mp [2 ] = temp [1 4 ] / 1 0; temp [3 ] = temp [1 4 ]%1 0;} if(my!= mon0){mon0 = mon; 温度[4 ] = mon0 / 1 0; temp [5 ] = mon0%1 0;} if(day!= day0){day0 = day; 临时[6 ] = Day0 / 1 0; temp [7 ] = day0%1 0;} if(hou r!= hour0){hour0 = hour; 临时[8 ] =小时0/1 0; temp [9 ] = hour0%1 0;}如果(min!= min0){min0 = min; 温度[1 0] = min0 / 1 0; temp [1 1 ] = min0%1 0;}} main(){exter_init(); time_i 收养我最好的,哈哈。
单片机控制多位数码管的电子时钟程序
使用微控制器在多数字数字管上控制电子时钟,并使用独立的按钮来控制它,以显示日期,并且有时间进行日历。Terra设置软件编程Keil Engineering 1 00语言代码: / ****************************************************** *项目名称:数字管电子时钟实施办公室:数字管显示时间和日期和日期和日期,可以设置闹钟,并且闹钟将在一分钟内。
************************************************************ /#includtion5 2 .h# defineuntunsignedint#defineucharunsignedchournednumwe,tt,t,t,puede,set,acloigned,rili; unsignedlonginttime,time1 = 0; unsignedlongintsecond,分钟,一小时= 2 01 ,月= 1 2 ,day = 3 1 ,ucharcodedu [] = {0x3 f,0x06 ,05 b,0x4 f,0x6 6 ,06 d,0x7 d,0x07 ,07 ,07 f,0x6 07 f,0x6 0,0x7 7 ,0x7 7 ,07 1 ,0x6 6 0,07 1 ,0x6 6 0,05 e0x6 0,05 e, 0x6 6 ,05 E; 0x6 6 ,05 e,0x7 7 ,07 1 } uCharCodeWe [] = {0xfe,0xfd,0xf,0xf7 ,0xef,0xf7 ,0xef,0xf7 ,0xef,0xf7 ,0xef,0xf7 ,0xef,0xf7 ,0xf7 ,0xbf} 3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 1 ,3 0,3 1 ,3 0,3 0,3 1 ,3 0,3 0,3 1 ,3 0,3 0,3 1 ,3 0,3 0 3 1 }; //相应的数字 ucharkymth [1 3 ] = {0,2 ,9 ,2 ,1 ,2 ,1 ,2 ,2 ,2 ,2 ,1 ,2 ,1 ,2 }; sbitdula = p2 ^ 0; sbitwela = p2 ^ i; sbitkey0 = p3 ^ 2 ,// sitkey1 = p3 ^ 0; //设置一个sbitkey2 = p3 p3 ^ 3 ; sbribep = p2 ^ 2 ,// circle vouselay(uintdel)//延迟程序空显示(uintsd,uintmm,vinthe)// show program voedadd()//添加vounalalalmclock() // Time fortrocalender()//计算日期Vountmain(){p2 = 0xff; init(); 而(1 ){add()if(rili == 1 )//日期日历和时间显示(一个月,年); Elsedisplay(第二分钟,一个小时); fear(uintsd}(uintsd,uintmm,uintsd,uintmm,vinthe){inty0,y1 == i1 =(m,y1 = 1 = 1 = ^ == == == == == i1 / i1 / i1 =£1 000; 2 = hy%1 00; }(numwe = 0; numwe8 :numwe ++){p0 = 0xff; (numwe){case0:p0 ==(tt == 1 set == 1 )? 1 )du [y1 / c]:du [hy%x]: 1 Set == 3 )?0x00:du [y2 / x]: [mm / x]:case4 ,p0 ==]:du [mm / x] (rili == 1 )DU [mm / x]:du [mm / x] ? 延迟} dula;} dula == 0;} dula == 0;} dula == 0;}延迟;} dul == 0;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dulam == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; 延迟;} dula == 0; delay();}} vacuum()//初始化{wel = 0; dula = 0; TMD = 0x01 ; //将计时器0设置为工作模式1 TH0 =(6 5 5 3 6 -5 0000到工作模式1 TH0(/担心八位// //时间八位// // // // TIMADED 5 MSTL0(6 5 3 6 -5 0000)2 5 6 %; // //低8 个位= 0x8 f; //打开中断TCON = 0x1 5 ; {if(t == 1 0 | t == 2 0)tt =! if(0 == aclock){第二个=时间6 0%6 0; 3 5 00/6 0;小时= tow1 / 3 6 00; if(小时== 2 4 ) )vouttimer0()vouttimer0()vouttimer0()interrupt1 // fear 0 interpellandi {th0 =(6 5 5 3 6 -5 0000 8 // formstl0 2 5 6 /和低八位的恐惧t ++;};} evoughtetime()中断0 // ==(2 ){if(rili ==(2 ){if(rili ==(2 ){if(rili =====(2 ),{if(rili ==(ii){if(rili ==(2 ){if(rili ==(2 ){if(rili ==(2 ){if(rili ==(2 ){ if(2 ){if(2 set == | set == 5 )set = 2 +2 ;} elsset ++,if(set == 9 ){} {set; 0}}}}} {} voidCalendar(}}}} {voidCalendar(}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} {voidcalendar(} {)}}}}}}} /}}}}}}}}}}} {}} {} }}}} {(}}}}}} {}}}}}}}}}}}}}}}}}}}}} {voidCalendar,{voidCalendar(}}}}}}}}}}}}}}}}}}}}}}} {) 2 ),如果(key3 == 0)== 0)rili = 0;} {voutcalender =()//} {if(= 8 6 4 4 4 00) {day ++:if((4 年== 0年%1 00?== 0年%1 00?= 0)|(年4 00 == 0))mth [2 ] = 2 9 ; +一个月;如果(月1 2 ){月= 1 ; nth%1 0; ge =二次= ge1 = minute%1 0,ge2 = hour%1 0,shi = shi1 = minute / x,如果(key1 == 0),} if(2 ); if(ke} y1 == 0){if(rili == 1 ){if(%4 == 0年%== 0)|(2 ] == ==,0。
[2 ] ==,0。
[2 ] 1 0%; == 2 )(SHI + 1 )%3 :(shi + 1 )case8 ; = 2 )?(GE + 1 )%ymth [2 ] shi1 * x + ge1 ,day = shi * x + ge,} {switch(set){case1 ,3 ,shi2 =( + shi1 )3 ; CASE4 :SHI1 =(SHI1 + 1 ); E7 :SHI =(shi + 1 ); case8 ; + ge2 ;如果(aclock == 0)== 0)== 3 00 +第二小时,6 0 +秒,elsetime1 =小时 * 3 5 00 + minute * 6 0 +秒;} while(! key + 1 );}}}}} vounalmalmclock()//设置{if(key2 == 0){delay(2 ),if(key2 == 0); set = 0; 而(1 ){if(rili == 1 )显示(在一个月的年度); elspisplay(第二,if(key2 0),{whiL e(!key2 ); clock = 0; set = 0; breack}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}。
p2 ^ 0分别有一个数字段管的开口和一些开口;3 P3 ^ 0是闹钟显示功能按钮P3 ^ 1 设置本身可以选择闹钟,日期和时间。