基于51单片机计频器.docx
- 文档编号:27355992
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:14
- 大小:185.25KB
基于51单片机计频器.docx
《基于51单片机计频器.docx》由会员分享,可在线阅读,更多相关《基于51单片机计频器.docx(14页珍藏版)》请在冰豆网上搜索。
基于51单片机计频器
任务书
1.设计主要内容及要求
基于单片机的计频器的设计。
1)简要说明
设计出一个以单片机为核心的计频器。
此计频器完成测试输入信号的频率的功能。
2)任务和要求
设计一个计频器,该计频器基本功能:
完成测试输入信号的频率;其中设置一个按键,这个按键用来启动频率测试。
使用51单片机的定时/计数器的功能,外部扩展多个LED数码管显示器,要求累计每秒钟计数单片机的外部脉冲的个数,用LED数码管显示出来。
由于LED位数有限,假设只有4位数,范围为0000~9999,所以将技术所得数值区分为10000以下及10000~65535两种,若是10000以下,则直接显示;若是10000~65535,则显示“--nn”,代表nnHkz。
完成设计基本功能后思考使计频器更精细的改进方法。
3)训练目标
熟练使用Keil开发环境,具备使用C语言编写单片机程序的初步能力,通过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。
2.对设计说明书、论文撰写内容、格式、字数的要求
1)课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。
2)学生应撰写的内容为:
中文摘要和关键词、目录、正文、参考文献等。
课程设计说明书(论文)的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3)说明书(论文)手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
4)课程设计说明书(论文)装订顺序为:
封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。
3.时间进度安排;
顺序
阶段日期
计划完成内容
备注
1
9.2
收集资料
2
9.3-9.6
完成题目硬件及软件的设计
3
9.9-9.11
完成软件和硬件的调试(实验室进行)
4
9.12
撰写课程设计说明书(论文)
5
9.13
答辩
中文摘要
简易计频器具有计算出频率的的功能,根据课程设计任务书要求,此设计中要求可以用LED数码管显示出来。
使用51单片机的定时/计数器的功能可以完成题目要求。
关键字89C52单片机数码管定时/计数中断
1方案设计
1.1总体框图
图1.1
1.2总体概括
计频器是由89C52单片机完成计算,再通过单片机控制数码管显示,单片机的启动与停止则由键盘控制。
键盘是由一个按键一端接地,一端连接单片机,按键按下时将单片机的一个管脚电平拉低,单片机接到低电平后程序运行,开始一秒钟定时,并在一秒内计数所接到的脉冲数,一秒钟结束后,将所得到的数运算,最后显示在数码管上
2方案详细
2.1各部分电路图与详解
2.1单片机最小系统电路设计
单片机最小系统主要有AT89C51,12M晶振,复位电路,下载电路等组成。
12M晶振的选取是由于其一个机器周期为一微秒,便于计算,误差相对较小。
图2.1单片机最小系统
2.2显示电路设计
显示由单片机控制,动态显示方式,单片机将数据一位一位送入,所以用到74LS373锁存器锁存以保存数据,用的是共阳极数码管,在程序编码时是低电平有效。
图2.2数码管显示电路
2.3程序设计
本程序是由C语言来完成
定义单片机控制口
sbitwei4=P0^0;
sbitwei3=P0^1;
sbitwei2=P0^2;
sbitwei1=P0^3;
定义启动位
sbitst=P1^4;
建立数组——共阳极数码管显示数代码0~9and-
ucharcodetable[]=
{0x3f,0x06,
0x56,0x4f,
0x66,0x6d,
0x7d,0x07,
0x7f,0x6f,
0x40//代表-
};
主函数中包括对开始的控制及调用的各个函数
voidmain()
{st=1;
while(st==1);
InitTimer0();
if(flag==1)
count();
}
打开中断
voidInitTimer0()
{TMOD=0x15;
TH0=0;
TL0=0;
TH1=0x4E;
TL1=0x20;
ET0=1;//开计数器0中断
ET1=1;//开定时器1中断
EA=1;//开CPU中断
TR0=1;
TR1=1;
显示程序
voiddisplay(intge,intshi,intbai,intqian)
{while
(1)
{
wei1=1;
P2=table[ge];
wei1=0;
wei2=1;
P2=table[shi];
wei2=0;
wei3=1;
P2=table[bai];
wei3=0;
wei4=1;
P2=table[qian];
wei4=0;
flag=0;
}
}
计算要输出的数据
voidcount()
{while
(1)
{wan=shu/10000;
qian=shu%10000/1000;
bai=shu%1000/100;
shi=shu%100/10;
ge=shu%10;
if(wan>0)//当万位大于一时进行换位
{
shi=wan;
ge=qian;
bai=10;
qian=10;
}
display(ge,shi,bai,qian);
}
}
当计数器满位时将显示数归零
void to(void) interrupt 1 using 0 // 定时器0中断处理函数
{ shu=0;
flag=1;
}
定时中断
void t1(void) interrupt 3 using 0
{
TH1=4E;
TL1=20;
timecount++;
if(timecount==50)
{
TR0=0;//时间到,停止计数
TR1=0;//T1停止计时
timecount=0;
shu=TH0*256+TL0
flag=1; }
}
3附录
3.1程序代码
#include
#defineuintunsighedint
#defineucharunsignedchar
sbitwei4=P0^0;
sbitwei3=P0^1;
sbitwei2=P0^2;
sbitwei1=P0^3;
sbitst=P1^4;
unsignedlongshu=0;
unsigned char timecount;//1s定时器计数变量
intflag=0;
intge=0,shi=0,bai=0,qian=0,wan=0;
ucharcodetable[]=//共阳极数码管显示数代码0~9and-
{0x3f,0x06,
0x56,0x4f,
0x66,0x6d,
0x7d,0x07,
0x7f,0x6f,
0x40//代表-
};
voiddisplay(intge,intshi,intbai,intqian)
{while
(1)
{
wei1=1;
P2=table[ge];
wei1=0;
wei2=1;
P2=table[shi];
wei2=0;
wei3=1;
P2=table[bai];
wei3=0;
wei4=1;
P2=table[qian];
wei4=0;
flag=0;
}
}
//计算
voidcount()
{while
(1)
{wan=shu/10000;
qian=shu%10000/1000;
bai=shu%1000/100;
shi=shu%100/10;
ge=shu%10;
if(wan>0)//当万位大于一时进行换位
{
shi=wan;
ge=qian;
bai=10;
qian=10;
}
display(ge,shi,bai,qian);
}
}
//初始化
voidInitTimer0()
{TMOD=0x15;
TH0=0;
TL0=0;
TH1=0x4E;
TL1=0x20;
ET0=1;//开计数器0中断
ET1=1;//开定时器1中断
EA=1;//开CPU中断
TR0=1;
TR1=1;
}
//主函数
voidmain()
{st=1;
while(st==1);
InitTimer0();
if(flag==1)
count();
}
void to(void) interrupt 1 using 0 // 定时器0中断处理函数
{ }
void t1(void) interrupt 3 using 0
{
TH1=4E;
TL1=20;
timecount++;
if(timecount==50)
{
TR0=0;//时间到,停止计数
TR1=0;//T1停止计时
timecount=0;
shu=TH0*256+TL0
flag=1; }
}
3.2总图
图3.2总电路图
3.3原件清单
名称
型号(或大小)
数量(个)
电阻
10K/220Ω
2
电容
22pF/10uF
2/1
石英晶振
12M
1
锁存器
74LS373
4
数码管
4
电源
5V
4
单片机
AT89C51
1
按键
1
表2.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 计频器