基于msp430单片机的交流电压测量Word下载.docx
《基于msp430单片机的交流电压测量Word下载.docx》由会员分享,可在线阅读,更多相关《基于msp430单片机的交流电压测量Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
……………………………………………………………………6
输出显示电路………………………………………………………………6
……………………………………………………………7
…………………………………………………………8
3系统软件设计………………………………………………………………………9
3.1概述…………………………………………………………………………9
3.2系统程序设计模块…………………………………………………………9
3.3调试及仿真………………………………………………………………14
结论…………………………………………………………………………………16
参考文献……………………………………………………………………………17
绪论
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于MSP430单片机的交流电压测量系统,详细描述了利用单片机和简单模拟电路实现交流电压的测量过程,重点对模拟电路与单片机的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现交流电压的测量与显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,以MSP430单片机为主,模拟电路为辅,该系统结构简单,抗干扰能力强,有超低功耗等特点。
适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
本次设计的目的就是让我们在理论学习的基础上,通过完成一个智能仪表的设计,使我们学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
1.设计背景
1.1本课题背景
近年来,随着微型电脑的发展,他的应用在人们的工作和日常生活中越来越普遍。
工业过程控制是电脑的一个重要应用领域。
其中由单片机构成的嵌入式系统已经越来越受到人们的关注。
现在可以毫不夸张的说,没有微型电脑的仪器不能称为先进的仪器,没有微型电脑的控制系统不能称其为现代控制系统的时代已经到来。
本课程设计是系统以MSP430F448为核心,该单片机内部集成了12位的A/D转换器,转换器带有内部参考源、采样保持、自动扫描特性,极大地简化了硬件设计。
设计内容
1、能利用所设计的数字交流电压表测量某一交流电压
2、能在环境温度范围为-40~+125℃的环境下正常工作
4、测量温度由LCD液晶屏直读显示
2交流电压测量系统简介
2.1设计方案
系统主要由以下4大模块组成:
中央处理器、电源电路、电压极性转换电路和显示电路。
为了保证硬件电路设计的通用性,采用单级性电压测量的方法,将输入的双极性电压转换成单级性电压进行测量。
然后将转换后的电压送入单片机A/D模拟通道进行模数转换,最终将转换的数字信号在LCD液晶上显示。
系统设计框图如图1所示。
图系统设计框图
2.2电压极性转换电路
从图2的电路中可以得到,首先通过变压器将220V的交流电压降成8V的交流电压,再经过极性转换电路将双极性的交流电压转换为单级性的交流电压。
电路中的R405电位器主要用于调节参考电压,R404电位器用于调节交流输入电压的幅度。
经过上面电路的处理,可以将输入的交流电压转换成0~3V的单级性交流电压,这样很容易使用MSP430单片机自带的A/D转换通道进行模拟量采集,从而实现交流电压的测量。
其中,极性转换电路主要由放大电路实现,在此我采用MCP601放大芯片。
图2.2电压极性转换电路
2.3电源电路
用电池给系统供电,由于MSP430系列有内置模拟电源和模拟地,所以要进行模拟电源和数字电源的转换,以便给芯片供电。
然后将电池电源转换为3V左右的电源给系统供电。
具体电路如图3所示。
图2.3电源电路
2.4A/D转换、输出显示电路及JTAG接口电路
A/D转换用到了模拟输入通道A0,LCD显示用到了S0至S20,使用4MUX模式。
液晶所需要的模拟信号由外接的等值电阻产生。
具体电路如图4所示。
图2.4A/D、LCD、JTAG电路
晶振及复位电路
其中,晶振电路由晶振和两个22pF的电容组成。
系统总硬件电路图
系统总硬件电路图包括中央处理器MSP430单片机、电源电路、电压极性转换电路和显示电路及晶振电路。
图2.6系统总框图
3系统软件设计
3.1概述
对于交流采集,需要在1个工作周期内采集40个点,即时间间隔为500μs,时间间隔采用定时器实现。
图程序流程图
3.2系统程序设计模块
系统程序主要包括主程序,采样和A/D转换程序,显示程序等。
voidinit_ADC(void)
{
P6SEL=0X01;
ADC12CTL9&
=~(ENC);
ADC12MCTL0=INCH_0+EOS;
ADC12CTL1=0X00;
ADC12CTL1+=CSTARTADD_0;
ADC12CTL1+=SHP;
ADC12CTL1+=CONSEQ_1;
ADC12CTL1+=ADC12SSEL_0;
ADC12CTL1+=ADC12DIV_0;
ADC12CTL0=ADC12ON+REFON+REF2_5V+SHT0_6;
ADC12IE=0;
ADC12IE|=ENC;
return;
}
voidinit_TimerA(void)
TACTL=TASSEL1+TACLR;
TACTL+=ID1;
TACTL+=ID0;
CCTL0=CCIE;
CCR0=500;
TACTL|=MC0;
#pragmavector=TIMERA1_VECTOR
__interruptvoidTimerA(void)
intresults;
ADC12CTL0&
=~ENC;
result=ADC12MEM0;
ADC_BUF[nADC_Count]=results;
nADC_Count+=1;
//采集40个点
if(nADC_Count==40)
{
nADC_Flag=1;
nADC_Count=0;
}
ADC12CTL0|=ENC+ADC12SC;
//把数据编程要显示的格式。
然后写到lcd_Buf中去
voidformat_Data()
intresult;
unsignedchartmp;
if(nADC_Flag==1)
nADC_Flag=0;
for(i=0;
i<
40;
i++)
{
result+=ADC_BUF[i];
}
result=(int)(((REFVOL*result)/4096-0.986)/0.0000355);
for(tmp=0;
tmp<
7;
tmp++)
lcd_Buf[tmp]=result%10;
result=result/10;
#pragmavector=ADC_VECTOR
__interruptvoidADC_Interrupt(void)
formal_Data();
adc_Flag=1;
显示子程序
constunsignedcharNUM_LCD[16]={
0x7b,0x12,0x4f,0x1f,0x36,
0x3d,0x7d,0x13,0x7f,0x3f,
0x73,0x7c,0x69,0x5e,0x6f,
0x65};
unsignedcharlcd_Buf[LCD_IN_USE];
voidinit_LCD(void)
chartmpv;
LCDCTL=LCDP2+LCD4MUX+LCDON;
P5SEL=0xFC;
BTCTL=BTSSEL+BT_ADLY_1000+BTFRFQ1;
BTCTL|=0x10;
P3DIR=0xff;
P5SEL=0xfc;
LCDCTL=LCDON+LCD4MUX+LCDP1;
for(tmpv=0;
tmpv<
tmpv++)
LCDMEM[tmpv]=0x00;
LCDMEM[7]=0x02;
voidlcd_Display()
for(tmpv=0;
LCD_IN_USE-1;
LCDMEM[tmpv]=NUM_LCD[lcd_buf[tmpv]];
//设置小数点
voidlcd_SetRP()
LCDMEM[2]|=0x80;
//lcd初始化
voidAdcvolt(void)//进行电压转换时ADC12的初始化
ADC12CTL0&
=~ENC;
//ENC为低电平,设置AD控制寄存器
ADC12CTL1=CSTARTADD_0+CONSEQ_1+SHP;
//单通道单次转换,采样频率源自采样定时器
ADC12MCTL0=INCH_0;
//选择模拟输入通道2
ADC12IE|=BIT0;
//AD转换中断允许
ADC12CTL0|=ENC;
//转换允许
ADC12CTL0|=ADC12SC;
//开始A/D转换
//A/D转换中断子程序
voidADC(void)//A/D转换中断子程序
ADresult0=ADC12MEM0;
//转换结果寄存器给了变量ADresult0
Volttem0=((long)ADresult0*33)/4095;
//计算实际电压值
ADresult1=ADC12MEM1;
//转换结果寄存器给了变量ADresult1
Volttem1=((long)ADresult1*33)/4095;
Volt0=Volttem0;
Volt1=Volttem1;
//TIMERA中断子程序
voidTimer_A(void)//TIMERA中断子程序
data0++;
if(data0>
=30)
data1=1;
else
data1=0;
if(data0>
=60)
data0=0;
P3OUT^=BIT3;
//每隔一定时间进行一次转换
3.3调试及仿真
经软件调试-仿真器proteus调试通过,并烧录芯片,得到所要求的设计结果。
如图3.4试验成功。
电路测试结果如表1所示。
表1电路测试结果
通过上述结果分析,测量较高值时测量精度有点低,误差大。
但数值小的时候测量精度很高。
不足之处是本设计的外围分压电路是通过调节电位器来实现的分压效果,实际电路受到电压源等因素影响较大,这之间会因为电压值的不同而引起效果好坏的改变。
结论
本设计是用基于msp430单片机的一款交流电压测量系统。
硬件电路包括晶振及复位电路,电源电路,电压极性转换电路,和显示电路。
电路结构小巧紧凑,是比较实用的交流电压测量仪。
文中的程序通过MSP430开发工具IAREmbeddedWorkbench编译、运行。
在实验室做成一个简易电路,并将程序下载到电路板上进行运行,发现此电路可以实现测量交流电压的功能,但在精确度方面需要进一步改良。
本次课设过程中,虽然理论电路成立,但仿真总是有问题。
通过老师与同学的鼎力相助,才能找到并发现其中的一些错误。
通过本次课设,让我懂得了理论正确,实践不一定正确。
在学到知识的同时,也加深了同学之间的友谊。
参考文献
[1]李群芳.张士军.单片微型电脑与接口技术.北京:
电子工业出版社.2008.
[2]李光飞.楼然苗..单片机课程设计实例指导.北京:
北京航空航天大学出版社.2004.
[3]沈德金.陈粤初.单片机接口电路与应用程序实例.北京:
北京航天航空大学出版社.1990.
[4]徐爱钧.彭秀华.单片高级语言C51应用程序设计..
[5]李群芳.单片微型电脑及其应用.南京:
东南大学出版社.2004.