【C51】基于51单片机的简易频率计(附代码、无需外设、小白简单易上手)
基于51单片机的简易频率计(无需外设、小白简单易上手)
代码较为简单,大概思路是通过定时器单位时间内外部中断上升沿触发的次数来计算实际频率。
/基于51单片机的简易频率计#include<reg51.h>
#include<intrins.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned intsbit P11=P1^1;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //七段显示0到9
/// 0 1 2 3 4 5 6 7 8 9 //无小数点
uchar code LEDcode01[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //七段显示0到9
/ 0 1 2 3 4 5 6 7 8 9 //有小数点
uchar date1=0,date2=0,date3=0,date4=0;
uint count=0,time_count=0,sum=0;int H,L;
void aaa(void);void delay(n);void initial();void delayms(uint t)
{uint a;for(;t>0;t--)for(a=0;a<200;a++); //延时函数
}void initial() //定时器初始化
{TMOD |=0x12; //使用模式2,16位定时器TH0=0x06; // 0.25msTL0=0x06;EA=1; //总中断打开ET0=1; //定时器中断打开TR0=1; //定时器开关打开 EX0 = 1;IT0 = 1;H=0Xfe;L=0X14;
// TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 TH1=0xfe; //重新赋值,方式1是16位计数器,不能硬件重装初始值TL1=0x14; //定时0.01ms
// EA=1; //总中断打开ET1=1; //定时器中断打开TR1=1; //定时器开关打开EX1=1;IT1=0;
// PX0=1;
// PX1=1;
}void input() interrupt 0
{count++;}void timer0() interrupt 1
{time_count++;if(time_count==4000){sum=count;time_count=0;count=0;}
}void Timer0_isr(void) interrupt 3 using 1
{TH1=H; //重新赋值,方式1是16位计数器,不能硬件重装初始值TL1=L;P11=!P11;
} void Key_INT1(void) interrupt 2 using 2
{delayms(800);H=H;L=L+10;
/* if(L<256){ H=H;L=L+10;}else if(L>256){H=0xff;L=L-256+10;}else if(H=0xff && L>0x14){H=0xfe;L=0x14;} */}void aaa(void) //共阳极数码管显示函数,注意小数点使用table1数组
{ char qian,shi,ge,bai;qian=sum/1000;bai=(sum%1000)/100;shi=(sum%100)/10;ge=(sum%10); //取百分位P2=0x17; //片选P0=table[ge];delay(1); P0=0xff; //段选P2=0x1b;P0=table[shi];delay(1);P0=0xff;P2=0x1d;P0=table[bai];delay(1);P0=0xff;P2=0x1e;P0=table[qian];delay(1);P0=0xff;}void delay(int n) //延时函数,大概1ms左右
{
int m,d;
for(m=92;m>0;m--)
for(d=n;d>0;d--);
} main()
{
initial() ;while(1){aaa() ;}}
//阿汪先生的博客.ws
【C51】基于51单片机的简易频率计(附代码、无需外设、小白简单易上手)相关推荐
- 基于51单片机的简易游戏机
基于51单片机的简易游戏机 目录 基于51单片机的简易游戏机 一.绪论 二.设计方案 三.系统原理框图及模块的作用 四.硬件设计及说明 五.实际的程序流程图,写清楚程序模块的功能 六.系统使用说明 七 ...
- 基于51单片机的简易mp3的制作
基于51单片机的简易mp3制作原理 1. 项目要求 基于AT89C51系列单片机的音乐播放器,采用AT89C51作为主控芯片,采用12864LCD作为液晶显示屏,通过按键实现播放器对应按键功能. 2 ...
- c语言51单片机计算器,新基于51单片机的简易计算器
<新基于51单片机的简易计算器>由会员分享,可在线阅读,更多相关<新基于51单片机的简易计算器(24页珍藏版)>请在人人文库网上搜索. 1.基于51单片机的简易计算器1.前言: ...
- 基于51单片机的简易抢答器设计
基于51单片机的简易抢答器 具体功能: 1.主持人按下抢答开始按键,抢答者才可以开始抢答,数码管抢答倒计时20S. 2.抢答者按下按键,数码管显示抢答者的编号. 3.可以通过按键修改倒计时时间. 部分 ...
- 基于51单片机的简易6位密码锁(数码管 led 矩阵)
本文章是基于51单片机的简易密码锁,无掉电保护,所以没有用到I^C总线协议,仅用到数码管显示,矩阵键盘扫描,led显示. 本例程主要实现功能为:定义一个六位数的初始密码,用矩阵输入,输入正确后led被 ...
- 基于51单片机的简易太阳能追踪系统
基于51单片机的简易太阳能追踪系统Proteus仿真如图所示. 系统主控核心为AT89C51单片机: 动作执行部分为两个0-360度舵机: 4个电位器模拟光敏电阻检测阵列: 模拟电压采集部分使用74H ...
- 基于51单片机的简易电子计算器——有温度显示和万年历等额外功能
基于51单片机的简易电子计算器--有温度显示和万年历等额外功能 设计实际所实现的功能 模式一可显示日期.时钟.温度,模式二可进行计算器的计算,且显示日期温度模式和计算器模式可随意切换,模式三可以滚动显 ...
- 【039】基于51单片机的简易门铃Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的简易门铃proteus仿真设计一份: (2).基于51单片机的简易门铃proteus仿真设计keli源代码一份: (3).基于51单片机的简易门铃prote ...
- 【006】基于51单片机的简易电子计算器Proteus仿真设计
一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...
最新文章
- 用python绘制柱状图标题-使用Python绘制柱形竞赛图
- 013_logback中的SyslogAppender
- 查询复旦大学往年的考研成绩
- 用计算机唱出惊雷,除了《惊雷》还有多少喊麦神曲?这十首神作你一定听过!...
- 为什么作为开发人员面试完全是胡说八道
- python os.system
- FishC笔记—21 讲 函数:lambda表达式
- mac下免费svn工具
- Windows cmd快捷键
- 图解项目绩效考核指标及实例模板
- JavaScript用法------判断二维数组
- 王家林大咖清华新书预发布:《企业级AI技术内幕:深度学习框架开发+机器学习案例+Alluxio解密》之盘古人工智能框架多层次神经网络的实现
- 翘首期盼的3D仿真练实操全面开启线上学理论,3D练实操,为您插上考证成功的翅膀
- android 解析程序包时出现问题
- html文本框柔化边缘,html – CSS模糊并使用绝对div保留锐利边缘
- ChromeFK插件推荐系列二十三:在线文字转语音/语音朗读插件推荐
- origin画对数坐标_如何用Origin绘制对数坐标图、双横坐标图及插入到Word文稿
- matlab 实现低通巴特沃斯滤波器、切比雪夫1型/2型滤波器 和 椭圆滤波器
- matlab中欠定方程组超定方程组_学会这些三元一次方程组的解法思路与运用,初中不再怕解方程...
- 概率分布分位点_常用概率分布总结(1)