![]() |
15281728234 發表于 2017-5-22 23:26 為什么一個都不亮啊 |
#include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar ge; uint tt; //unsigned char led_seg[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xfd,0xc1,0x63,0x85,0x61,0x71}; //共陽 //unsigned char led_bit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; unsigned char led_seg[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xe6}; unsigned char led_bit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //共陰 sbit SH_CP=P2^4; sbit ST_CP=P1^5; sbit DS=P2^5; uchar d; void write(uchar d) //定義輸入函數 { uchar i; for(i=0;i<8;i++) { DS=d&0x01; SH_CP=1; SH_CP=0; d=d>>1; } } void init() //定義重置函數 { SH_CP=0; ST_CP=0; DS=0; write(0); write(0); ST_CP=1; ST_CP=0; } void delay(uint z) //延遲函數 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(uchar x) { write(led_seg[x/10]); delay(1); write(led_bit[6]); ST_CP=1; ST_CP=0; write(led_seg[x%10]); delay(1); write(led_bit[7]); ST_CP=1; ST_CP=0; } //顯示秒鐘 void main() { init(); TMOD=0x01; // TH0=(65536-18432)/256; // TL0=(65536-18432)%256; EA=1; ET0=1; TR0=1; while(1) { display(ge); } } void exter0() interrupt 1 // 定時器1中斷 { // TH1=(65536-18432)/256; // TL1=(65536-18432)%256; tt++; if(tt==28) { tt=0; ge++; if(ge==60) { ge=0; } } } 我這是0到59的,你改下試試看 |
不倒翁.WZT 發表于 2017-5-22 18:56 非常感謝,明天就試一試 |
不知是否符合要求,你可參考一下: #include<reg51.h> //包含特殊功能寄存器頭文件 #include<intrins.h> #define uint unsigned int //定義uint=unsigned int #define uchar unsigned char //定義uchar=unsigned char #define wela P1 //位選 #define dula P0 //段選 uchar code we_code[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位碼表 uint code du_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //段碼表 void delayms(uint xms); uchar temp,t0,t1,bai,shi,ge; uint shu; void init(); void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge); void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) //i=xms即延時約xms毫秒 { for(j=110;j>0;j--); } } void main() { init(); while(1) { display(7,6,5, bai, shi, ge); } } void init() { shu=999; temp=0xfe; P0=temp; TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET0=1; ET1=1; TR0=1; //初始化子程序,初始化專用關鍵字 TR1=1; } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t0++; if(t0==20) { t0=1; temp=_crol_(temp,1); P0=temp; } } void timer1() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; t1++; if(t1==4) { t1=0; shu --; bai=shu/100; shi=shu%100/10; ge=shu%10; if(shu==888) { TR0=0; TR1=0; } } } void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge) { dula=du_code[aa]; wela=we_code[1]; delayms(5); dula=du_code[bb]; wela=we_code[2]; delayms(5); dula=du_code[cc]; wela=we_code[3]; delayms(5); // dula=du_code[qian]; // wela=we_code[4]; // delayms(5); dula=du_code[bai]; wela=we_code[4]; delayms(5); dula=du_code[shi]; wela=we_code[5]; delayms(5); dula=du_code[ge]; wela=we_code[6]; delayms(5); } |