急求用单片机AT89C5274LS164驱动的四位一体共阴数码管从0000~9999循环循环累加显示的程序

发布时间:2019-08-09 15:29:40

急求用单片机 AT89C52 74LS164驱动的四位一体共阴数码管从0000~9999循环循环累加显示的程序

推荐回答

怎么就非要74S164的呢,我没小时间给你写,这里我发一个用74H573的时钟程序给你参考,#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar aa,h,hh,hl,m,mh,ml,s,sh,sl,ah,am,as,ahh,ahl,amh,aml,ash,asl,a,b,c;sbit dula=P2^6;sbit wela=P2^7;sbit dian=P0^7;sbit fm=P2^3;sbit key1=P3^4;sbit key2=P3^5;sbit key3=P3^6;sbit key4=P3^7;sbit d1=P1^0;uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void display(uchar hh,uchar hl,uchar mh,uchar ml,uchar sh,uchar sl);//显示函数void delay(uint z) ;//延时函数void init() ;//初始化话函数void chan();//调时函数uchar alarm(uchar ah,uchar am);//调闹铃函数uchar trans(uchar h,uchar m,uchar s);//显示转换函数void time(); //时间函数void main(){ init(); //初始化 while(1) { alarm(); //调闹钟 chan(); //调时 time(); //时间 if(ah==h&&am==m) { if(s%2==0) fm=0; else fm=1; } if(!(ah==h&&am==m)) fm=1; }}uchar trans(uchar h,uchar m,uchar s)//时间转换{ //a=h; //b=m; //c=s; hh=h/10; hl=h%10; mh=m/10; ml=m%10; sh=s/10; sl=s%10; return (hh,hl,mh,ml,sh,sl) ;}void time()//时间函数 { if(aa==20) { aa=0; s++; //fm=1; if(s==60) { s=0; m++; if(m==60) { m=0; h++; if(h==24) h=0; } } } trans(h,m,s); display(hh,hl,mh,ml,sh,sl); //return (h,m,s); }void chan() //调时行数{ if(key1==0) { h++; delay(200); if(h==24) h=0; } if(key2==0) { m++; delay(200); if(m==60) { m=0; h++; if(h==24) h=0; } }}uchar alarm(uchar h,uchar m)//调闹钟函数{ loop:if(key3==0) { while(1) { if(key1==0) { ah++; delay(200); if(ah==24) ah=0; } if(key2==0) { am++; delay(200); if(m==60) { am=0; ah++; if(ah==24) ah=0; } } trans(ah,am,as); display(hh,hl,mh,ml,sh,sl); if(key4==0) goto loop; } } return (ah,am); }void delay(uint z) //延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }void display(uchar hh,uchar hl,uchar mh,uchar ml,uchar sh,uchar sl)//显示函数 { dula=1; P0=table[hh]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(1); dula=1; P0=table[hl]; dian=1; dula=0; P0=0xff; wela=1; P0=0x7d; wela=0; delay(1); dula=1; P0=table[mh]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1); dula=1; P0=table[ml]; dian=1; dula=0; P0=0xff; wela=1; P0=0x77; wela=0; delay(1); dula=1; P0=table[sh]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay(1); dula=1; P0=table[sl]; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; delay(1); } void init() //初始化函数{ wela=0; dula=0; TMOD=0x01; 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; aa++; }
以上问题属网友观点,不代表本站立场,仅供参考!