单片机原理与应用课程设计1.docx
- 文档编号:18106107
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:33
- 大小:309.16KB
单片机原理与应用课程设计1.docx
《单片机原理与应用课程设计1.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用课程设计1.docx(33页珍藏版)》请在冰点文库上搜索。
单片机原理与应用课程设计1
2012~2013学年第一学期
《单片机原理与应用》
课程设计报告
题目:
电容、电阻参数单片机测试系统的设计
专业:
电子信息工程
班级:
10信息本一
姓名:
指导教师:
电气工程系
2012年10月20日
摘要
随着电子工业的发展,电子元器件急剧增加,电子元器件的适用范围也逐渐广泛起来,在应用中本设计常常要测定电阻,电容的大小。
因此,设计可靠,安全,便捷的电阻,电容,有极大的现实必要性。
由于测量电阻,电容,电感方法多并具有一定的复杂性,所以本次设计是在参考555振荡器基础上拟定的一套自己的设计方案。
电阻和电容的测量是采用555多谐震荡电路产生的,定时器可以利用外部的时钟源来计数,这里本设计将RC的测量电路产生的频率作为单片机的时钟源,通过定时和计数可以计算出被测频率,再通过该频率计算出各个参数。
本系统是通过16位单片机89C51测量电阻、电容对应震荡电路所产生的频率实现各个参数的测量,一方面可以提高测量精度,另一方面便于使仪表实现自动化,而且还能加入语音播报的功能使其更加智能化。
利用555多谐振荡电路将电阻,电容参数转化为频率,这样就能够把模拟量近似的转换为数字量,而频率f是单片机很容易处理的数字量,一方面测量精度高,另一方面便于使仪表实现自动化,而且单片机构成的应用系统有较大的可靠性。
系统扩展、系统配置灵活。
容易构成各种规模的应用系统,且应用系统有较高的软、硬件利用系数。
单片机具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。
参考文献30
答辩记录及评分表31
第一章电容电阻参数测试系统的总体设计
1.1电阻、电容测试仪设计方案的比较
电阻、电容测试仪的设计可用多种方案完成,例如利用模拟电路,电阻可用比例运算器法和积分运算器法,电容可用恒流法和比较法,使用可编程逻辑控制器(PLC)、振荡电路与单片机结合或CPLD与EDA相结合等等来实现。
在设计前对各种方案进行了比较:
1)利用纯模拟电路
虽然避免了编程的麻烦,但电路复杂,所用器件较多,灵活性差,测量精度低,现在已较少使用。
2)可编程逻辑控制器(PLC)
应用广泛,它能够非常方便地集成到工业控制系统中。
其速度快,体积小,可靠性和精度都较好,在设计中可采用PLC对硬件进行控制,但是用PLC实现价格相对昂贵,因而成本过高。
3)采用CPLD或FPGA实现
应用目前广泛应用的VHDL硬件电路描述语言,实现电阻,电容,电感测试仪的设计,利用MAXPLUS
集成开发环境进行综合、仿真,并下载到CPLD或FPGA可编程逻辑器件中,完成系统的控制作用。
但相对而言规模大,结构复杂。
4)利用振荡电路与单片机结合
利用555多谐振荡电路将电阻,电容参数转化为频率,这样就能够把模拟量近似的转换为数字量,而频率f是单片机很容易处理的数字量,一方面测量精度高,另一方面便于使仪表实现自动化,而且单片机构成的应用系统有较大的可靠性。
系统扩展、系统配置灵活。
容易构成各种规模的应用系统,且应用系统有较高的软、硬件利用系数。
单片机具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。
综上所述,利用振荡电路与单片机结合实现电阻、电容、电感测试仪更为简便可行,节约成本。
所以,本次设计选定以单片机为核心来进行。
1.2方案论证
测量电子元器件集中参数RC的仪表种类较多,方法也各有不同,但都有其优缺点,一般的测量方法都存在计算复杂、不易实现自动测量而且很难实现智能化。
在这里本设计着重要介绍的是把电子元件的参数RC转换成频率信号f,然后用单片机计数后再运算求出RC,并送显示,转换原理是RC振荡,这样就能把模拟量近似转换为数字量,而频率f是单片机很容易处理的数字量,这种数字化的处理便于使仪表实现智能化。
方案中用到的单片机是16位单片机89C51,由于该CPU具有丰富的I/O口和丰富的时基信号,为本设计提供了极大的方便,其中可以利用I/O口置高低电平来实现量程的转换,由于单片机89C51的定时器可以通过外部时钟源来计数,本设计便可以将555电路产生的频率作为89C51的定时器的时钟源,这样就很容易得到被测R/C对应产生的频率。
而且89C51具有语音处理功能,本设计在显示的基础上还可以加入语音播报,使得整个测量过程更加智能化。
同时89C51还具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。
第二章系统原理与参数设计
2.1系统原理系统分三大部分:
测量电路、通道选择和控制电路,如下图所示。
图2.1-1系统设计框图
框图各部分说明如下:
1)控制部分:
本设计以单片机为核心,采用89C51单片机,利用其管脚的特殊功能以及所具备的中断系统,定时/计数器和LED显示功能等。
LED灯:
本设计中,设置了1盏电源指示灯,采用红色的LED以共阳极方式来连接,直观易懂,操作也简单。
数码管显示:
本设计中有1个74HC02、2个74LS573、1个2803驱动,采用共阳极方式连接构成动态显示部分,降低功耗。
键盘:
本设计中有Sr,Sc,SL三个按键,可灵活控制不同测量参数的切换,实现一键测量。
2)通道选择:
本设计通过单片机控制CD4052模拟开关来控制被测频率的自动选择。
3)测量电路:
RC震荡电路是利用555振荡电路实现被测电阻和被测电容频率化。
电容三点式振荡电路是利用电容三点式振荡电路实现被测电感参数频率化。
通过51单片机的IO口自动识别量程切换,实现自动测量。
2.2参数计算
2.2.1电阻测量电路
555接成多谐振荡器的形式,其振荡周期为:
(1)
得出:
(2)
即:
(3)
2.2.2电容测量电路
555接成多谐振荡器的形式,其振荡周期为:
(4)
得出:
(5)
即:
(6)
第三章硬件设计
3.1555定时器简介
555定时器是一种模拟电路和数字电路相结合的中规模集成器件,它性能优良,适用范围很广,外部加接少量的阻容元件可以很方便地组成单稳态触发器和多谐振荡器,以及不需外接元件就可组成施密特触发器。
因此集成555定时被广泛应用于脉冲波形的产生与变换、测量与控制等方面。
555定时器是一种模拟电路和数字电路相结合的中规模集成电路,其内部结构和功能表如下所示。
图3.1-1定时器内部结构
它由分压器、比较器、基本R--S触发器和放电三极管等部分组成。
分压器由三个5KΩ的等值电阻串联而成。
分压器为比较器A1、A2提供参考电压,比较器A1的参考电压为2/3VCC,加在同相输入端,比较器的A2参考电压为
。
,加在反相输入端。
比较器由两个结构相同的集成运放A1、A2组成。
高电平触发信号加在A1的反相输入端,与同相输入端的参考电压比较后,其结果作为基本R--S触发器
。
端的输入信号;低电平触发信号加在A2的同相输入端,与反相输入端的参考电压比较后,其结果作为基本R--S触发器
。
端的输入信号。
基本R--S触发器的输出状态受比较器的A1、A2输出端控制。
3.2电阻测试电路
电阻的测量采用“脉冲计数法”,由555电路构成的多谐振荡电路,通过计算振荡输出的频率来计算被测电阻的大小。
电路分为2档:
1、100
Rx<1000Ω:
闭合开关Srd,R2=330Ω,C2=0.22uF:
(7)
2、1000
Rx<1MΩ:
闭合开关Srg,R1=20KΩ,C3=103pF:
(8)
电阻测试电路见图3所示:
图3.2-1电阻测量电路
3.3电容测量电路
电容的测量同样采用“脉冲计数法”,由555电路构成的多谐振荡电路,通过计算振荡输出的频率来计算被测电容的大小。
电路分为1档:
R4=510KΩ,R4=R6;
(9)
电容测试电路见图3.3-1所示:
图3.3-1电容测试电路
3.489C51单片机电路
在本设计中,考虑到单片机89C51构成的应用系统有较大的可靠性,容易构成各种规模的应用系统,且应用系统有较高的软、硬件利用系数。
还具有可编程性,硬件的功能描述可完全在软件上实现。
另外,本设计还需要利用单片机的定时计数器、中断系统、串行接口等等,所以,选择以单片机89C51为核心进行设计具有极大的必要性。
单片机89C51包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元,以及数据总线、地址总线和控制总线等三大总线,现在分别加以说明:
1)中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
2)数据存储器(RAM):
内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
3)程序存储器(ROM):
共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
4)定时/计数器(ROM):
有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
5)并行输入输出(I/O)口:
共有4组8位I/O口,用于对外部数据的传输。
6)全双工串行口:
内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
7)中断系统:
具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串口中断,可满足不同的控制要求,并具有2级的优先级别选择。
8)时钟电路:
内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序。
单片机电路图如图3.5-1所示。
图3.4-1单片机电路
3.5LED显示接口电路
电路由2个或非门、两个74HC573和一个ULN2803组成。
或非门片选作用:
当单片机通过总线输出数据时,18管脚为低电平“0”,片选信号端中,要被片选端为“0”,其它为“1”,这样三个或非门中,只有需要片选中或非门的输出为高电平“1”,其它两个或非门的输出信号为低电平“0”。
另外,74HC573数据锁存器的LE使能端为高电平有效,与之前电路结合可以实现片选功能。
两个74HC573分别作为段码和位码的数据锁存器,它们的片选信号来自最小系统AT89S52的P2.5和P2.6,由此可以计算出它们的片选地址:
段码片选地址为[C000H~DFFFH],位码片选地址为[A000H~BFFFH]。
ULN2803是达林顿管,在电路中能起到大电流输出和高压输出的作用。
LED显示接口电路如图3.5-1所示。
图3.5-1LED显示接口电路
3.6电路总原理图
电路总原理图见附录Ⅱ
第四章.软件的设计
4.1流程图的设计
是否
图4.1-1流程图
4.2程序清单
程序清单见附录Ⅳ
第五章.仿真
5.1仿真软件的介绍
Proteus是英国Labcenterelectronics公司出版的EDA工具。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编辑器。
Proteus软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能是:
(1)原理布图
(2)PCB自动或人工布线
(3)SPICE电路仿真
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
5.2仿真的步骤
利用protues软件画出原理图,在keil软件中写出程序并生成hex格式文件导入protues进行仿真并生成PC板
图5.2-1电阻仿真结果
图5.2-2电容仿真结果
第六章PCB板制作
6.1印刷电路板(PCB)设计制作流程
1、新建一个PCBProject工程文档并保存文件;
选择File→New→Project→PCBProject→Save.
2、在工程文档里新建一个原理图文档并生成网络表后保存文件;
选择File→New→Schematic→Save;
设置图纸尺寸及版面,在Design→Documentoptions中的Standardstyle;
设置工作环境,选择Preferences→Graphicalediting→CursorGrid中;
放置元件并布局执行命令Place→Part;
原理图布线;
声称网络表
选择Design→NetlistForProject→Protel→save.
3、在工程文档里新建一个PCB文档并设置电路板结构及尺寸等参数后保存文件;
新建PCB文档File→New→PCB→Keep-outLayer→Place→Line.
4、更新网络表生成PCB;
执行Design→UpdatePcb*.Pcbdoc或打开我们刚建的PCB文档,执行Design→Importchangesfrom*.prjpcb.
5、手动修改封装与布局;
将所有的器件手动移入电路板内。
6、选择自动布线;
执行AutoRoute→All→Routeall→Save.
7、查看空间布局;
执行View→Boardin3D.
6.2生成PC板
图6.2-1PCB板
总结
课程设计是一次非常好的将理论与实际相结合的机会,通过对电阻、电容、电感测试仪的课题设计,锻炼了我的实际动手能力,增强了我解决实际工程问题的能力,同时也提高我查阅文献资料、设计规范以及电脑制图等其他专业能力水平。
本设计的硬件电路图简单,可降低生产成本。
采用单片机可提高系统的可靠性和稳定性,缩小系统的体积,调试和维护方便,而且以单片机最小系统为核心的设计能够满足了整个系统的工作需求,555振荡器实现了被测电阻和被测电容参数的频率化。
虽然本系统完成了设计设计要求,但其中仍然存在着很多需要改进的地方。
作品实测中,测量电容值有一定的误差,而且C值越大时误差越大,该误差则是来源于振荡电路产生的频率和单片机程序上的误差。
希望在之后的设计之中能够得到进一步解决。
附录Ⅰ
元件清单
序号
元器件类型
元器件规格
数量
备注
电阻R1-R4、R6、Rv
20KΩ
1
R1
电阻
330Ω
1
R2
电阻
Rx
1
R3
电阻
510KΩ
1
R4
电阻
4KΩ
1
R5
电容
104pF
1
C1、C4
电容
103pF
1
C2
电容
0.22uF
1
C3
电容
Cx
1
C5
定时器
2
LM555
二极管
3
R、C、PLED
或非门
MC7402AN
2
MC7402AN
按键
2
Sr、Sc
数据锁存器
2
74HC573
达林顿管
1
ULN2803
多路选择开关
1
CD4052
附录Ⅱ
总原理图
附录Ⅲ
PC板
附录
Ⅳ
程序清单
#include
#include
#defineDATAP0
#defineucharunsignedchar
#defineuintunsignedint
sbitadcs=P2^3;
sbitadrd=P2^5;
sbitadwr=P2^4;
sbitRW=P2^1;
sbitRS=P2^0;
sbitEN=P2^2;
sbitb_test=P3^7;
sbitc_test=P3^6;
sbit_reset=P3^5;
uintT_flag,N,D,C,i,Dis1,Dis0;
ucharget_ad();
uintA,F,H,A1,A2;
uintr[]={'R','=','0','0','.','0','K',0Xf4};
uintb[9]={'C','=','0','0','.','0','0','u','F'};
uintData1;
voidDelay1ms(uintmm)
{uinti;
for(;mm>0;mm--)
for(i=0;i<100;i++);
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);}
voidCheckstates()
{
uchardat;
RS=0;
RW=1;
do{EN=1;
_nop_();
_nop_();
dat=DATA;
_nop_();
_nop_();EN=0;
}while((dat&0x80)==1);
}
voidwcomd(ucharcmd)
{
Checkstates();
RS=0;
RW=0;
DATA=cmd;
EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
EN=0;
}
voidwdata(uchardat)
{
Checkstates();
RS=1;
RW=0;
DATA=dat;
EN=1;
_nop_();
_nop_();
_nop_(
);
_nop_();
EN=0;}
voidLCDINIT()
{Delay1ms(15);
wcomd(0x38);
Delay1ms(5);
wcomd(0x38);
Delay1ms(5);
wcomd(0x01);
Delay1ms(5);
wcomd(0x08);
Delay1ms(5);
wcomd(0x0c);}
{uchari,j;
uchara[12]={0X4D,0X45,0X41,0X53,0X55,0X52,0X45,0X4D,0X45,0X4E,0X54,0X53};
for(i=0;i<12;i++)
{wcomd(0x80+i);
Delay1ms
(1);
wdata(a[i]);
Delay1ms
(1);}
for(j=0;j<9;j++)
{wcomd(0xc0+j);
Delay1ms
(1);
wdata(b[j]);
Delay1ms
(1);}
Delay1ms(150);}
voidDisplay1()
{uchari,j;
uchara[12]={0X4D,0X45,0X41,0X53,0X55,0X52,0X45,0X4D,0X45,0X4E,0X54,0X53};
for(i=0;i<12;i++)
{wcomd(0x80+i);
Delay1ms
(1);
wdata(a[i]);
Delay1ms
(1);}
for(j=0;j<9;j++)
{wcomd(0xc0+j);
Delay1ms
(1);
wdata(r[j]);
Delay1ms
(1);
}
Delay1ms(1000);}
ucharget_ad()
{uchartemp;
adcs=1;
adwr=1;
_nop_();
delay
(1);
adcs=0;
adwr=0;
_nop_();
delay
(1);
adwr=1;
adcs=1;
delay
(1);
P1=0xff;
adcs=1;
adrd=1;
delay
(1);
_nop_();
_nop_();
_nop_();
delay(20);
adcs=0;
adrd=0;
_nop_();
temp=P1;
delay
(1);
adrd=1;
adcs=1;
returntemp;}
voidmain()
{IE=0x81;
TMOD=0x09;
IT0=1;
TH0=0x00;
TL0=0x00;
T_flag=0;
_reset=0;
LCDINIT();
while
(1)
{if(!
b_test==1)
{i=0;
_reset=1;
EX0=1;
while(_reset)
{i++;
if(i>5000)
{_reset=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 课程设计