单片机原理与应用课程设计pdf.docx
- 文档编号:7778426
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:12
- 大小:214.60KB
单片机原理与应用课程设计pdf.docx
《单片机原理与应用课程设计pdf.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用课程设计pdf.docx(12页珍藏版)》请在冰豆网上搜索。
单片机原理与应用课程设计pdf
2013级单片机原理及应用课程设计
数字温度计的设计与制作
:
宋昊明
专业:
电子信息科学与技术
学号:
201340620124
指导教师:
周小波
二零一五年十二月
数字温度计的设计与制作
数字温度计
1.设计任务与要求
1.1设计要求
1、设计一个能显示当前环境温度的数字温度计;
2、拟定设计步骤和测试方案;
3、根据设计要求和技术指标设计好电路,选好元件及参数;
4、绘出原理图,画出PCB图,并制出实物;
5、撰写设计报告;
6、预留相关技术指标的测试端口。
2.总体方案设计概述
2.1系统总体方案设计
本设计以检测温度并显示温度为目的,按照系统设计功能的要求,确定系统由三个模块组成:
主控器、测温电路、显示电路。
系统以STC12C5404AD为主芯片,对热敏电阻传入的温度值进行处理,由单片机程序控制,将处理后的温度用四位一体的数码管显示出来。
2.2各功能模块
2.2.1温度检测
由热敏电阻感知环境温度,改变自身阻值,通过分压法来测出电压值,从而测出温度大
小。
2.2.2温度显示
将数据用四位一体数码管显示,处理过程主要由单片机程序控制
3.硬件系统设计
3.1总体电路设计
总电路原理图和PCB图如下
-1-
数字温度计的设计与制作
-2-
数字温度计的设计与制作
3.2主控制器STC12C5404AD
STC12C5410系列单片机是单时钟/机器周期的兼容8051核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,部集成MAX810专用复位电路。
3.3测温电路工作原理
3.3.1测温电路的选择
①恒流源法
-3-
数字温度计的设计与制作
②电桥法:
精度高但电路较为复杂
③分压法:
电路简单但精度差综合考虑,本设计选择分压法下图为本实验测温电路原理图
分压电路ADC7
热敏电阻R14,R16不能太大,否则会分流
-4-
数字温度计的设计与制作
3.4显示电路工作原理
数码管驱动电路如图所示
4个三极管所在电路为数码管位选端驱动电路,端口分别为W1,W2,W3,W4。
其余A-H为数码管段选段
3.5下载电路
电脑USB接口供电,约5V。
TXD、RXD接口用于下载程序。
-5-
数字温度计的设计与制作
4.程序设计
#include"reg51.h"#include"intrins.h"#include"math.h"
typedefunsignedcharBYTE;typedefunsignedintWORD;
/*DeclareSFRassociatedwiththeADC*/sfrAUXR=0x8e;
sfrADC_CONTR=0xC5;//ADCcontrolregister
sfrADC_DATA=0xC6;//ADChigh8-bitresultregistersfrADC_LOW2=0xBE;//ADClow2-bitresultregistersfrP1M0=0x91;//P1modecontrolregister0
sfrP1M1=0x92;//P1modecontrolregister1
#defineADC_POWER0x80//ADCpowercontrolbit#defineADC_FLAG0x10//ADCcompleteflag#defineADC_START0x08//ADCstartcontrolbit#defineADC_SPEEDLL0x00//1080clocks#defineADC_SPEEDL0x20//810clocks
sbitpoint=P3^7;
//小数点
sbitW1
=P3^2;
//数码管位选
sbitW2
=P3^3;
sbitW3
=P3^4;
sbitW4
=P3^5;
#defineADC_SPEEDH0x40//540clocks#defineADC_SPEEDHH0x60//270clocks
voidDelay(WORDn);voidInitADC();
voiddelay_s(unsignedintN);
voiddisplay(unsignedcharnum,unsignedx);voiddisplay_num(unsignedintnum);
voidget_data();
unsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0x84,0xf5,0x89,0xc1,0xf0,0xc2,0x82,0xe5,0x80,0xe00xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
floatwendu;
unsignedinttemp=0;floatR=0;
unsignedcharflag=0;
BYTEch=7;//ADCchannelNO.
-6-
数字温度计的设计与制作
voidmain()
{
InitADC();//InitADCsfrAUXR|=0x10;//setEADCI
IE=0xa0;//EnableADCinterruptandOpenmasterinterruptswitch
while
(1)
{
display_num(wendu);
}
}
/*----------------------------
ADCinterruptserviceroutine
----------------------------*/voidadc_isr()interrupt5using1
{
flag++;
ADC_CONTR&=!
ADC_FLAG;//ClearADCinterruptflag
temp=ADC_DATA;temp=temp<<2;temp=temp|ADC_LOW2;
if(flag==10)
{
flag=0;
if(temp<451)//TEMP=10240/(R+10)
wendu=(42.16-11059.2/temp)*100;//-720c;38.3988K12.69K,
TEMP(211,451)T=31.36-1.08*R
elseif(451<=temp<=518)
wendu=(61.91-18944.0/temp)*100;//2025c;12.65k,10k
TEMP(451,512)T=43.41-1.85*R
elseif(512<=temp<=655)
wendu=(96.87-37478.4/temp)*100;//2640c;9.5762k,5.734k
TEMP(523,651)T=60.269-3.66576*R
elseif(655<=temp<=800)
wendu=(149.53-72089.6/temp)*100;//4160c;5.54.5k,2.825k
TEMP(659,798)T=79.134-7.04*R
else
wendu=(291.23-185856.0/temp)*100;//6190c;2.7762k1.236k
TEMP(801,911)T=109.731-18.147*R
}
-7-
数字温度计的设计与制作
ADC_CONTR=ADC_POWER|ADC_SPEEDHH|ADC_START|ch;
}
voidInitADC()
{
P1=P1M0=P1M1=0xff;//SetallP1asOpen-DrainmodeADC_DATA=0;//Clearpreviousresult
ADC_CONTR=ADC_POWER|ADC_SPEEDL|ADC_START|ch;Delay
(2);//ADCpower-ondelayandStartA/Dconversion
}
voidSendData(BYTEdat)
{
while(!
TI);//WaitforthepreviousdataissentTI=0;//ClearTIflag
SBUF=dat;//Sendcurrentdata
}
voidget_data()
{
floatval=0.0;
floatr=0.0;
temp=ADC_DATA;
temp<<2;
temp=temp|ADC_LOW2;
wendu=(35.28-1.1*r)*10;//35.28-1.1*10240/TEMP+11
46.28-11264/TEMP
}
voidDelay(WORDn)
{
WORDx;
while(n--)
{
x=5000;
while(x--);
}
}
voiddelay_s(unsignedintN)
{
while(N--);
}
voiddisplay(unsignedcharnum,unsignedx)
-8-
数字温度计的设计与制作
{
switch(x)
{
case1:
W1=0;W2=1;W3=1;W4=1;point=1;P1=tab[num];break;case2:
W1=1;W2=0;W3=1;W4=1;point=0;P1=tab[num];break;case3:
W1=1;W2=1;W3=0;W4=1;point=1;P1=tab[num];break;case4:
W1=1;W2=1;W3=1;W4=0;point=1;P1=tab[num];break;//default:
P1=0x00;P3=0x00;break;
}
delay_s(300);
}
voiddisplay_num(intnum)
{
unsignedcharg,s,b,q;if(num>=0)
{
q=num/1000;b=num/100%10;s=num/10%10;g=num%10;display(q,1);P1=0xff;display(b,2);P1=0xff;display(s,3);P1=0xff;display(g,4);P1=0xff;
}
else
{
num=0-num;//q=num/1000;b=num/100%10;s=num/10%10;g=num%10;display(10,1);P1=0xff;display(b,2);P1=0xff;display(s,3);P1=0xff;
-9-
数字温度计的设计与制作
display(g,4);
P1=0xff;
}
}
5.制作过程
5.1选择测温度电路——分压法
5.2选择及购买实验器材
5.3设计实验原理图
5.4PCB工程制图
5.5制作电路板:
打印打孔,泡溶液,焊接元器件,下载程序,检测调试,成品
5.6制作后续材料
5,7相关图片:
-10-
6.心得体会
通过此次课程设计,使我更加扎实的掌握了单片机制作方面的知识,“纸上得来终觉浅,绝知此事要躬行”在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了问题所在,也暴露出了我这方面的知识欠缺和经验不足。
通过亲自动手制作,使我们掌握的知识更佳灵活的运用。
在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情。
在设计过程中,相互探讨,相互学习,相互监督。
学会了合作,学会了相互学习。
课程设计是我们专业课程知识综合应用的实践训练。
在这次设计过程中,体现出自己单独设计能力以及综合运知识的能力,体会了学以致用、收获自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,加以弥补。
在这次设计制作过程中,我也发现了作为一个实验人员应当具备眼镜细心耐心的工作和学习的态度,比如焊接电路时需要耐心和细心,注意不能焊成短路和断路。
而且在调试电路接通电源前一定要反复检查焊接是否有误。
在做pcb板时也没有注意到焊盘问题,导致最后焊接十分麻烦。
总而言之,这次课程设计受益匪浅,收获很多,感谢老师和同学的帮助,同时感谢自己的努力,坚持到底,不放弃的精神。
6.参考资料
《单片机原理及应用》(第二版)毅刚等著
-11-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 课程设计 pdf