搜索
您的当前位置:首页单片机99秒课程设计程序和原理图

单片机99秒课程设计程序和原理图

来源:智榕旅游


程序:

#include

#define uint unsigned int

char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管 0,1,2,3,4,5,6,7,8,9

int Time_temp=0,LED_temp=0;

sbit key1=P3^0;

sbit key2=P3^2;

//--------------T0初始化----------------------

void Time0_Init()

{

TMOD=0x01;

IE=0x82;

TH0=0x4c;//装初值

TL0=0x00;

}

//-----------中断服务程序--------------------

void Time_Int()interrupt 1

{

TH0=0x4c;//重装初值

TL0=0x00;

Time_temp++;

if(Time_temp==20)//定时器溢出时间50毫秒,相当于隔1秒,数码管的数据改变一次

{

LED_temp++;

Time_temp=0;

}

if(LED_temp==100)LED_temp=0;//这个数用来送数码管显示,计数到100清零

}

//--------------延时程序-----------

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)//i=xms即延时xms毫秒

for(j=110;j>0;j--);

}

//------------主程序------------------

void main(void)

{

Time0_Init();

while(1)

{

P0=table[LED_temp/10];//把一个两位数分离后分别送到数码管显示

P2=table[LED_temp%10];//十位和个位

if(key2==0)

{

delayms(10);//检测按键抖动,加延时程序检测是否有按键按下

if(key2==0)

{

LED_temp=0;//清0

while(!key2);

}

}

if(key1==0)

{

delayms(10);//检测按键抖动,加延时程序检测是否有按键按下

if(key1==0)

{

while(!key1);//等待按键释放

TR0=~TR0;//启动或停止定时器0

}

}

}

}

C1122pFX119U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7P3.0P3.2RP1RESPACK-7C218XTAL2SW322pFR39SW-SPST-MOM220RST2345678A0A1A2A3A4A5A6A0A1A2A3A4A5A6C310u293031PSENALEEAB0B1B2B3B4B5B6R110kLED1SW1P3.0SW-SPST-MOMLED212345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51SW2P3.2SW-SPST-MOM

因篇幅问题不能全部显示,请点此查看更多更全内容

Top