简单使用蓝桥杯单片机上面的定时器,进行设置一个简单的秒表吧,用于练手,同时熟练操作定时器的操作以及熟练数码管的动态显示,虽然简单,但是也两个知识点都是常考的,也是必须掌握的模块喔。
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
//这里先弄一个简单的秒表先吧
u8 t1_count;
u8 t1_sec,t1_min,t1_hour; // 定时器的时钟
u8 code shuma[12] = {
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xbf};
// 系统初始化函数
void init_system()
{
P2 = (P2 & 0x1f) | 0x80;
P0 = 0xff;
P2 = (P2 & 0x1f);
P2 = (P2 & 0x1f) | 0xa0;
P0 = 0x00;
P2 = (P2 & 0x1f);
P2 = (P2 & 0x1f) | 0xc0;
P0 = 0x00;
P2 = (P2 & 0x1f);
}
// 外设选通函数
void select(u8 local)
{
switch(local)
{
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;
}
}
// 用于数码管简单延时
void delay()
{
u8 t = 200;
while(t--);
}
// 点亮单个数码管函数
void display(u8 local, u8 num)
{
select(6);
P0 = 0x80 >> (local - 1);
P2 = P2 & 0x1f;
select(7);
P0 = num;
P2 = P2 & 0x1f;
// 数码管简单延时
delay();
}
void close_display()
{
// 数码管消隐
select(6);
P0 = 0x00;
P2 = P2 & 0x1f;
}
// T1定时器初始化函数,开始中断函数
void init_t1()
{
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x10; //设置定时器模式
TL1 = (65535 - 50000) % 256; //设置定时初值
TH1 = (65535 - 50000) / 256; //设置定时初值
EA = 1;
ET1 = 1;
// TF1 = 0; //清除TF1标志 溢出标志
TR1 = 1; //定时器1开始计时
}
// T1定时器的溢出中断服务函数
void server_t1() interrupt 3
{
TL1 = (65535 - 50000) % 256; //设置定时初值
TH1 = (65535 - 50000) / 256; //设置定时初值
if(++t1_count == 200)
{
t1_sec++;
t1_count = 0;
}
if(t1_sec == 60)
{
t1_min++;
t1_sec = 0;
}
if(t1_min == 60)
{
t1_hour++;
t1_min = 0;
}
}
void main()
{
init_system(); // 初始化系统,关闭蜂鸣器、继电器、数码管、LED灯等外设
init_t1();
while(1)
{
display(1, shuma[t1_sec%10]);
display(2, shuma[t1_sec/10]);
display(3, 0xbf);
display(4, shuma[t1_min%10]);
display(5, shuma[t1_min/10]);
display(6, 0xbf);
display(7, shuma[t1_hour%10]);
display(8, shuma[t1_hour/10]);
close_display();
}
}
这样子就可以实现一个简单的时钟了,虽然代码有点长,但是很多都是简单的编码而已,只要慢慢阅读都是可以读懂的啦。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115109.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...