51單片機 初學入門 24小時必答區 STM32/8 ARM M3 AVR PIC MSP430 DSP Proteus仿真 Arduino 綜合區
單片機DIY制作 智能小車/機器人 智能家居 飛行器diy/多軸/航模 程序設計 資料共享
模擬數字 電子制作DIY 拆機樂園 PCB 電源 音響/功放 無線/紅外 儀器儀表 PLC Labview 業界動態
Protel Altium Designer Allegro orcad Pads/PowerPCB FPGA/CPLD Multisim仿真
Windows/CE 安卓 uCOS uCLinux
哈哈。終于把一直認為好高深的時鐘電路做出來了,現在想想,其實也挺簡單的,有些東西要自已去做了,并認真地做好,你會發現其實它沒有你想的那么神秘的。
程序:#include<reg52.h> #define uchar unsigned char #define uint unsigned int code uchar number[]={0x3f ,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; uint second=50,minter=58,hour=15; uint ss,sg,mg,ms,hs,hg; static char court=0;
void delay() { uchar i,j; for(i=0;i<2;i++) for(j=0;j<120;j++); } void int1() interrupt 3 { TH1=(65536-20000)/256; TL1=(65536-20000)%256; court++; } void main() { TMOD =0x10; TH1=(65536-20000)/256; TL1=(65536-20000)%256; EA =1; ET1=1; TR1=1; P1=0xff; for(;;) { ss=second /10; sg =second %10; ms=minter/10; mg =minter%10; hs=hour/10; hg =hour%10; P1=number[sg]; P0=0x07; delay();
P1=number[ss]; P0=0x06; delay();
P1=0x40; P0=0x05; delay();
P1=number[mg]; P0=0x04; delay();
P1=number[ms]; P0=0x03; delay();
P1=0x40; P0=0x02; delay();
P1=number[hg]; P0=0x01; delay();
P1=number[hs]; P0=0x00; delay(); if(court==50) { court=0; second++; if(second==60) { second=0;minter++; if(minter==60) { minter=0;hour++; if(hour==24) hour=0; } } } } }