蓝桥杯单片机开发板-定时器中断实现数码管(详解)

该博客详细介绍了如何使用蓝桥杯开发板的定时器中断来显示时间,具体实现为日-时-分-秒的格式。文章首先阐述了系统的初始化过程,包括LED、继电器、蜂鸣器、数码管和定时器的设置。然后,展示了74HC138和74HC573的片选程序,并提供了定时器初始化的代码。定时器设定为1ms周期,通过特定软件配置。接着,解释了定时器中断函数、数码管显示函数和主函数的实现。数码管显示函数控制着时间的更新,主函数则协调整个系统的运行。
摘要由CSDN通过智能技术生成

本博文的程序功能主要是实现蓝桥杯开发板通过定时器计时来实现时间的显示,实现显示结构为日-时-分-秒。全部程序见上一篇博文,本博文对程序功能进行详细讲解。
首先是系统的初始化功能,系统初始化LED小灯、继电器、蜂鸣器、数码管以及定时器的初始化,有关电路如下所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
系统的初始化程序为:

void systeminitial()
{
   
	TimeInit();          //定时器中断初始化	
	HC138(5);P0=0X00;    //关闭蜂鸣器、继电器、LED小灯以及数码管
	HC138(4);P0=0Xff;
	HC138(6);P0=0Xff;
	HC138(7);P0=0Xff;
}

开发板通过74HC138进行74HC573的片选,片选程序如下所示:

void HC138(unsigned char channel)
{
   
	switch(channel)
	{
   
		case 4:P2=(P2&0x1f)|0x80;break;
		case 5:P2=(P2&0x1f)|0xa0;break;
		case 6:P2=(P2&0x1f)|0xc0;break;
		case 7:P2=(P2&0x1f)|0xe0;break;
	}
}

程序中定时器的定时时间设定为1ms,通过STC-ISP软件获得定时器初始化函数如下所示。

void TimeInit()     //定时器初始化函数定时时间为ims
{
   
	AUXR &= 0x7F;		  //定时器时钟12T模式
	TMOD &= 0xF0;		  //设置定时器模式
	TL0 = 0x66;		    //设置定时初值
	TH0 = 0xFC;		    //设置定时初值
	TF0 = 0;		      //清除TF0标志
	TR0 = 1;		      //定时器0开始计时
  EA = 1;
  ET0 = 1;
  TR0 = 1;
}

操作方法如下:
在这里插入图片描述
到这里,系统初始化就已完成。
函数变量定义与函数声明如下:

#include "reg52.h"
#include "intrins.h"

unsigned char LedChar[] ={
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极数码管从0到9的真值
unsigned char LedBuff[] = {
   0xFF, 0xFF, 0xFF,0xFF, 0xFF, 0xFF, 0xFF, 0xFF};    //数码管显示缓冲区,初值0xFF确保启动时都不亮
unsigned char flags = 1; //1秒定时标志
unsigned char sec = 0;
unsigned char minutes = 0;
unsigned char hours = 0;
unsigned char days = 0; //定义记录秒,分,时,天的变量

sfr AUXR=0X8E;                                           //NOTES:sbit是位操作,用于将某个sfr中具体位赋值给一个变量

void TimeInit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知何时归家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值