资讯详情

89C51单片机40s倒记时数码管动态显示

此程序已经通过测试,电路连接是:一个2位的共阴,位选是P3.6,P3.7口,段选是P0口,还有如下3个按键 sbit buzz = P2^2; sbit clear = P2^0; sbit start = P2^1; 分别是喇叭,清除和开始 与gnd相连即可. #include < reg51.h > #include < intrins.h >

const unsigned char LED7Code[]={ 0xC0, // 0 0xF9, // 1 0xA4, // 2 0xB0, // 3 0x99, // 4 0x92, // 5 0x82, // 6 0xF8, // 7 0x80, // 8 0x90, // 9 0x88, // A 0x83, // B 0xC6, // C 0xA1, // D 0x86, // E 0x8E // F }; sbit buzz = P2^2; sbit clear = P2^0; sbit start = P2^1;

unsigned char count = 0; unsigned char timer1s_flag; unsigned char hw,lw; unsigned char flag;

unsigned char clear_flag; unsigned char start_flag; //函数申明 void key_scna(void); /*********************************************************/ void main() { TMOD=0x01 ; TH0=0xed ; TL0=0xff ; EA=1; ET0=1; TR0=1 ;

while(1) { if(timer1s_flag>=200){ timer1s_flag = 0;

if((count>0)&&(count<=40)){ //count--; hw=count/10; lw=count%10; P0=0XFF; buzz=0; } else if(count==0){ hw=count/10; lw=count%10; count=42; P0=0X00; buzz=1; } count--;

}//500ms //key_scan(); } }

/*********************************************************/ // 定时器0中断服务程序. /*********************************************************/ void timer0() interrupt 1 using 2 { TH0=0xee ; TL0=0x04 ;

timer1s_flag++;

if(flag==0){ P3=0X40; P1=LED7Code[hw]; flag = 1; } else{ P3=0X80; P1=LED7Code[lw]; flag = 0; } } /*********************************************************/ //按键扫描程序. /*********************************************************/ void key_scna(void) { ; }

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台