51单片机定时器控制led流水灯数码管进行计数
51单片机根据不同的型号有不同数量的定时器的,而这些定时器的大概用法是差不多的我们今天就使用定时器来控制led流水灯
实训要求
使用单片机定时器对led灯进行控制,数码管进行计数
#include <reg52.h>
#include "dsq.h"
#define led1 P1
#define smg P0
sbit smgk1 = P2^0;
sbit smgk2 = P2^1;
sbit smgk3 = P2^2;
sbit smgk4 = P2^3;
void t0_init(void);
void smghs();
void dsq_tint(void);
main()
{
t0_init();
while(1)
{
smghs();
}
}
unsigned char code ledsmg[]={0x0c,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(unsigned int i)
{
while(i--);
}
void t0_init(void)
{
TMOD &= 0xf0;
TMOD |= 0x01;
TR0 = 1;
TH0 = (65535-1000)/256;
TL0 = (65535-1000)%256;
TF0 = 0;
ET0 = 1;
EA = 1;
PT0 = 0;
}
void dsq_tint(void)
{
TR0 = 0;
EA = 0;
ET0 = 0;
}
unsigned char cnt = 0,jz = 0;
void dsq_zd(void) interrupt 1
{
cnt++;
if(cnt==20)
{
cnt = 0;
led1 =~ led1;
jz++;
}
}
void smghs()
{
smg = ledsmg[jz/1000%10];smgk1=0;delay(50);smgk1=1;
smg = ledsmg[jz/100%10];smgk2=0;delay(50);smgk2=1;
smg = ledsmg[jz/10%10];smgk3=0;delay(50);smgk3=1;
smg = ledsmg[jz%10];smgk4=0;delay(50);smgk4=1;
}
版权声明:本文为weixin_43366287原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。