蓝桥杯单片机中的NE555模块的编程,其实是很简单。简单来说就是计算一秒钟之内有多少个频率响应。中间所谓的频率响应也就是计算定时器作为计数器时候溢出的个数而已。能够考察的点就是这样子了,也要稍微了解,之后进行编程,就能够熟练掌握了。
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 t1_count; // 定时一秒的计数变量
u16 t0_count; // 存放临时得出的频率值
u16 t0_sum; // 存放一秒的频率最终值
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;
}
void init_t1()
{
TMOD = 0x16; //定时器 T1 16位定时模式,定时器T0 计数模式
TL0 = 0xff;
TH0 = 0xff;
TL1 = (65535 - 5000) % 256; //5ms的定时
TH1 = (65535 - 5000) / 256; //5ms的定时
EA = 1;
ET1 = 1;
TF1 = 0; //溢出标志位
TR1 = 1; //T1中断开始位
ET0 =1;
TR0 = 1;
}
void server_t0() interrupt 1 // T0计数器的服务中断函数
{
t0_count++;
}
void server_t1() interrupt 3 // 定时器T1的服务函数
{
TL1 = (65535 - 5000) % 256; //重置低八位
TH1 = (65535 - 5000) / 256; //重置高八位
if(++t1_count == 200) // 定时时间为1S
{
t0_sum = t0_count; // 把计算到的频率数保存到t0_sum变量中
t0_count = 0;
t1_count = 0;
}
}
void main()
{
init_system();
init_t1();
while(1)
{
display(8,0x8e); // 最高位显示一个大写C
display(1, shuma[t0_sum%10]);
if(t0_sum > 9){
display(2, shuma[t0_sum/10%10]);} // 判断频率是否大于二位数,大于才显示,不大于不显示,后面类似
if(t0_sum > 99){
display(3, shuma[t0_sum/100%10]);}
if(t0_sum > 999){
display(4, shuma[t0_sum/1000%10]);}
if(t0_sum > 9999){
display(2, shuma[t0_sum/10000%10]);}
close_display();
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115108.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...