51单片机 定时计数器

实践目的:
1.学习单片机定时计数器的结构;
2.学习单片机定时计数器的工作方式与模式
3.学习定时计数器程序编写。

实践内容:
1.在项目二第一次工作的基础上,修改电路,P2.1接LED,P3.4接按键
2.要求在Proteus中设计硬件电路,单片机晶振设置为11.0596MHz
3.编写程序实现如下功能:
当P3.4引脚的电平连续发生5次负跳变,单片机P2.1引脚所接的LED灯亮3s灭1s,循环5次后停止,数码管显示灯亮时间。
4.要求用定时中断和计数中断实现。在Proteus中加载程序代码并运行仿真。

源代码:

#include<reg52.h>
sbit P34 = P3^4;
sbit led = P2^1;
unsigned char i,count;
unsigned char jinzhi;
unsigned char code discode[12]={0x76,0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned char code discodey[12]={0x89,0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void main(){
	led = 0;
 	TMOD= 0x06;
	TL0 = 0xfb;
	TH0 = 0xfb;
	count = 0;
	jinzhi=0;
	ET0 = 1;
	EA = 1;
	TR0 = 1;
	while(1);
}

void time0_int(void) interrupt 1{
	TMOD = 0x01;
	TL0 = 0x00;
	TH0 = 0xDC;	
	ET0 = 1;
	EA = 1;
	TR0 = 1;
	if(count<5){
		i++;
		if(i==1&&jinzhi==0){
		    led = 1;
		    P1 = discodey[1];
		} 
		else if(i==100&&jinzhi==0){
			i=0;
		 	P1 = discodey[2];
		 	jinzhi = 1;
		}
		else if(i==100&&jinzhi==1){
			P1 = discodey[3];
		}
		else if(i==200){
		 	led=0;
			count++;
			jinzhi = 0;
			P1=discodey[4];
		}



	}
}

			 

电路图:
在这里插入图片描述

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值