電路很簡單就不畫圖了,數碼管的段是p0口,2個數碼管位選分別是p2.5,p2.6
#include<reg52.h> sbit cs1=P2^5; sbit cs2=P2^6; sbit e=P2^7; sbit beep=P0^4; #define uchar unsigned char uchar display_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f}; uchar display_data[8]={0,0,0x0a,0,0,0x0a,0,0}; uchar time[3]={0,0,0}; void delay() { uchar i; for(i=250;i>0;i--); } void js() { time[2]++; if(time[2]>59) { time[2]=0; time[1]++; if(time[1]>59) { time[1]=0; time[0]++; if(time[0]>23) time[0]=0; } } } void zh() { display_data[6]=time[2]/10; display_data[7]=time[2]%10; display_data[3]=time[1]/10; display_data[4]=time[1]%10; display_data[0]=time[0]/10; display_data[1]=time[0]%10; } void display() { uchar i,k; k=0x80; for(i=8;i>0;i--) { P0=0xff; P0=display_code[display_data[i]]; e=0; cs1=0; e=1; cs1=1; P0=~k; k=k>>1; e=0; cs2=0; e=1; cs2=1; delay(); } } void shenying() { beep=0; if(time[0]>0) { beep=1; if(time[1]<5) beep=0; } } void main() { while(1) { uchar i; for(i=0;i<250;i++) { display(); } js(); zh(); } }