基于51单片机的频率温度测量系统报告.doc

基于51单片机的频率温度测量系统报告.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE19

实训任务

实训目的

掌握从事电子类高级专业人才必须具备的单片机基本理论、基础技能,接口及应用技术。同时通过实训,使学生对于单片机的组成原理和结构有比较深刻的理解,掌握单片机应用系统的设计方法,可比较灵活地使用单片机构成系统的外围芯片,具备单片机软件设计和编程能力。培养学生分析、解决电子电路应用问题的能力。为以后从事自动化类工作打下深厚基础。

实训要求

用PROTEL99画出原理图;

用实验板搭建该单片机系统;

用C语言编写程序(keil);

改变电容频率显示发生变化;

可测温度范围0℃~100℃

通过按键实现频率与温度的切换显示。

可测得占空比;(发挥部分)

增加一个按键,可以设定上下限值(发挥部分)

实训方案

该单片机系统用台湾宏晶STC单片机系列为核心,用NEC555产生可调的振荡频率,输送给单片机外部中断口,单片机启动定时器定时,将每秒中的脉冲个数记下,即可得到频率;给铂电阻一个恒压,将铂电阻产生的电压信号经运算放大器放大后,送到单片机内部A/D,再经过标度变换即可求得温度。

这两个功能可以通过两个按键相互转换。显示采用数码管显示,静态方式。用单片机的串行口转成并行来控制数码管的显示。

图1.1系统原理框图

电源模块

原理图设计

图2.1电源模块

将220V交流电经保险丝接入开关电源模块,输出5V直流电压经开关后用一大一小两电容进行再滤波,用一个红色的led来显示开关的状态,当然需要加一个限流电阻,由该led的额定电压为2.4v额定电流为24ma故限流电阻R2=(5V-2.4V)/24ma

单片机模块及其下载模块

原理图设计

图3.1单片机模块设计、

单片机采用STC12C5A08AD也是51系列单片机,右边是51单片机的典型时钟电路和复位电路,左边的两个上拉电阻是用来切换频率温度显示。

图3.2单片机下载模块

这是RS232电平(串口电平)转TTL电平电路,构成单片机和电脑的通路,再采用STC_ISP软件进行下载。

显示模块

原理图设计

图4.1显示模块原理图

采用八段共阳数码管显示频率和温度,由于他们的额定电压时3,8v,每段静态额定电流为10ma,故限流电阻R1=(5-3.8)V/(10*24)ma。

用移位寄存器74LS164把单片机输出的串行数据转成并行输出给数码管。

程序设计

#includereg51.h//包含单片机寄存器的头文件

sbitsclk=P2^1;

sbitsda=P2^2;

inttab[10]={0x03,0xf3,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//共阳数码管0~9编码

voiddelay(xms)//延时程序

{

inti,j;

for(i=xms;i0;i--)

for(j=110;j0;j--);

}

voidbit_out(biti)//给74ls164写入一位数

{sclk=0;

sda=i;

sclk=1;//上跳沿时写入数据

}

voidleddisp(intnum)//把一个三位数显示到数码管上

{

chari,j;

intge,bai,shi;//把三位数变成3个一位数

bai=num/100;

shi=(num%100)/10;

ge=num%10;

for(i=0;i3;i++)//每次写一个数

{

switch(i)//由于是移位寄存器是故先写个位数,再写十位数,最后写百位数

{ case0:

j=ge;break;

case1:

j=shi;break;

case2:

j=bai;break;

}

//把每个数对应的八位编码从低位到高位写入到74ls164

bit_out((bit)(tab[j]0x01));/*段码二进制的最低位*/

bit_out((bit)(tab[j]0x02));

bit_out((bit)(tab[j]0x04));

bit_out((bit)(tab[j]0x08));

bit_out((bit)(tab[j]0x10));

bit_out((bit)(tab[j]0x20));

bit_out((bit)(tab[j]0x40));

bit_out((bit)(tab[j]0x80));/*段码二进制的最高位*/

} /*输出段码,显示数字*/

}

voidmain()

{

while(1)

{

leddisp(789);

delay(100);

}

}

频率模

文档评论(0)

138****4229 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档