版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于MSP430G2553的电压表设计 数字式直流电压表一、整体说明在电子技术中,往往离不开对电压的测量,作为一种测量电压的仪器电压表是近代电子技术领域的常用工具之一,在许多领域得到广泛应用。本设计是基于TI单片机设计的数字式直流电压表,它主要由MSP430G2553、LCD12864和分压电路三部分组成。分压电路先将输入的电压信号衰减一定的倍数,后通过控制双路选择开关设定测量的量程,分别有03V和015V两个档,以便实现精确读数;分压处理后的电压信号由MSP430G2553内部的ADC10模块转换成数字信号;再通过LCD12864液晶屏进行串行显示。经多次测量实验得出误差范围在2%以内。二、
2、原理图基于MSP430G2553单片机设计的数字式直流电压表的电路图如图1所示。由于MSP430开发板已具备单片机最小系统结构,只需添加显示电路和分压电路。LCD12864通过串口方式显示,只需占用单片机2个I/O口;分压电路可以通过开关S1选择量程档位,只占用1个I/O口。图1 直流电压表电路图三、接口定义MSP430G2553的接口说明如表1所示。图1中的复位和晶振部分是MSP430开发板固有的部分,故不再说明。P1.0接液晶屏的SID脚,作为串行的数据口用;P1.1则接液晶屏的SCLK脚,控制串行的同步时钟;P1.4接分压电路的输出端。LCD12864的接口说明如表2所示。当PSB脚接低
3、电平时,串口模式被选择。在该模式下,只用2根线(SID与SCLK)来完成数据传输。RS接高电平,不使用片选功能。注意:信号源与单片机之间要共地。表1 MSP430G2553的接口说明引脚号引脚名接口说明备注2P1.0接12864的5脚(R/W)3P1.1接12864的6脚(E)6P1.4接分压电路的输出端表2 LCD12864的接口说明引脚号引脚名接口说明备注1VSS电源地2VDD电源正端4RS(CS)电源正端5R/W(SID)P1.06E(CLK)P1.115PSB电源地19LED_A电源正端20LED_K电源地四、程序流程图图1 主函数流程图系统初始化开启ADC转换开始(一)主函数主函数的
4、流程框图如图1所示。主函数主要是调用系统初始化函数和循环开启ADC转换,这是由于ADC10采用单通道单次转换模式,每次采样后需要重新开启ADC,才会进行下一次信号采样转换。另外,信号的采样与处理以及电压值的显示都是通过中断来完成。(二)系统初始化函数系统初始化的流程框图如图2所示。该函数对看门狗的工作模式、所需的I/O口以及ADC10和12864进行定义或初始化配置。(三)ADC初始化函数ADC初始化的流程框图如图3所示。该函数的任务是对转换控制寄存器ADC10CTL0和ADC10CTL1的初始化配置。其中,ADC10CTL0 需要配置的是ADC10的开关、采样周期、参考电压、ADC10中断使
5、能;而ADC10CTL1则只需要对外部采样通道和ADC的工作模式进行选择。(四)液晶屏初始化液晶屏初始化的流程框图如图4所示。该函数需要写指令控制:清屏指令、功能设定为基本指令集操作、地址归0、开显示且关闭光标及其反白显示。结束系统初始化开始设看门狗为定时器模式图2 系统初始化流程图使能看门狗中断设P1.0P1.1口为输出设P1.4作A4通道选择电压量程ADC初始化液晶屏初始化结束ADC初始化开始ADC10CTL0&=ENC图3 ADC初始化流程图ADC10CTL0|=ADC10ONADC10CTL0|=SREF_0ADC10CTL0|=ADC10IEADC10CTL1|=INCH_4
6、+CONSEQ_0_EINT( )结束液晶屏初始化开始写指令0x01图4 液晶屏初始化流程图写指令0x30写指令0x02写指令0x0c(五)中断函数结束看门狗中断开始LCD显示图6 看门狗中断流程图流程图结束ADC中断开始读取采样数据图5 ADC中断流程图处理数据中断函数用到了ADC中断函数和看门狗中断函数。ADC中断函数的流程框图如图5所示,每4个ADC10CLKS周期会产生一次中断,ADC10会将采集到的电压值自动保存在转换存储寄存器ADC10MEM中,直接读取该寄存器就可以取出数据,再通过固定的转换公式转换成测得的电压值。看门狗中断函数的流程框图如图6所示,每隔1s会产生一次中断,更新液
7、晶屏显示的电压值。五程序设计 /* 程序说明:直流电压表(串行LCD显示) */* P1.0控制RW,并行的读/写选择信号,串行的数据口 */* P1.1控制E,并行的使能信号,串行的同步时钟 */* P1.4接被测电压信号源,信号源与单片机要共地 */* PSB低电平是串行,直接接地;RS接高电平 */* 注:程序运行前先选择量程Voltage_Range,并将P1.4口接上对应通 */* 道,若选Range_3V接道,若选Range_15V接道,否则烧坏芯片 */*/#include<msp430g2452.h>#define uint unsigned int#define
8、uchar unsigned char#define BIT(x) (1<<(x)#define Range_3V 0 /量程为03V#define Range_15V 1 /量程为015V/* 函数声明*/void System_Init(void);void ADC_Init(void); void LCD_Init(); void LCD_Send(uchar type,uchar transdata);void Delay_nms(uint n);void LCD_Pos(uchar x,uchar y);void LCD_Display_String(const ucha
9、r *pt,uchar num);void LCD_Display(long int Data);void LCD_Display_Digit(long int num);uchar LCD_Table='0','1','2','3','4','5','6','7','8','9','.','V'long int Voltage; /全局变量Voltageuint Voltage_Range;/*函数功能
10、:系统初始化入口参数:无出口参数:无函数说明:无*/void System_Init(void) WDTCTL = WDT_ADLY_1000; /看门狗工作在定时器模式,1s中断一次 IE1 |= WDTIE; /使能看门狗中断 P1DIR |= BIT0 + BIT1; /相应的位端口设置为输出 P1SEL |= BIT4; /P1.4为A4通道 Voltage_Range = Range_15V; /Range_3V即量程为3V,Range_15V即量程为15V ADC_Init(); /ADC初始化; LCD_Init(); /液晶初始化/*函数功能:ADC初始化入口参数:无出口参数:
11、无函数说明:无*/void ADC_Init (void) ADC10CTL0 &= ENC; /复位转换允许位 ADC10CTL0 |= ADC10ON + ADC10SHT_0 + SREF_0 + ADC10IE ; /设置转换控制寄存器ADC10CTL0,ADC10ON=0x010,使ADC10内核工作 /ADC10SHT_0=0*0x800u,确定采样周期为4xADC10CLKs /SREF_0=0*0x2000u,选择参考电压为VR+=AVCC,VR-=AVSS /ADC10IE=0x00使对应通道转换后产生中断 ADC10CTL1 |= INCH_4 + CONSEQ_0
12、; /设置AD转换控制寄存器ADC10CTL1,INCH_0=0*0x1000u,选择通道A4 /CONSEQ_1=1*2u,设置工作模式为单通道、单次转换模式 ADC10CTL0 |= ENC + ADC10SC; /设置转换控制寄存器ADC12CTL0,ENC=0x002使转换允许位为1 /ADC12SC=0x001使采样/转换控制位为1 _EINT(); /总中断使能 /*ADC中断函数*/#pragma vector = ADC10_VECTOR_interrupt void ADC10_Interrupt(void) uint data; data = ADC10MEM; /将AD采
13、样值存入data if(Voltage_Range = Range_3V) /V(实际)=(VR+ - VR-)*data/1023 + VR- Voltage = (uint)(35.4*data/10.23); /Voltage是实际电压值的1000倍 else Voltage = (uint)(35.4*data/10.23*5.38); /*WDT中断函数*/ #pragma vector = WDT_VECTOR_interrupt void watchdog_timer(void) LCD_Display(Voltage); /显示电压值/*函数名称:LCD初始化函数入口参数:无出
14、口参数:无函数说明:无*/ void LCD_Init() Delay_nms(5); LCD_Send(0,0x01); /清屏指令 Delay_nms(5); /延时等待液晶完成复位 LCD_Send(0,0x30); /功能设定:基本指令集操作 Delay_nms(5); LCD_Send(0,0x02); /地址归0 Delay_nms(5); LCD_Send(0,0x0c); /开显示,且关闭光标及其反白显示 Delay_nms(5); /*函数功能:写指令或数据入口参数:type,transdata出口参数:无函数说明:无*/ void LCD_Send(uchar type,u
15、char transdata) uchar firstbyte = 0xf8; uchar temp,i,j; if(type) firstbyte |= 0x02; P1OUT &= BIT1; for(j=3;j>0;j-) switch(j) case 3:temp=firstbyte;break; case 2:temp=transdata&0xf0;break; case 1:temp=(transdata<<4)&0xf0;break; for(i=8;i>0;i-) if(temp&0x80) P1OUT |= BIT0;
16、else P1OUT &= BIT0; P1OUT |= BIT1; temp <<= 1; P1OUT &= BIT1; Delay_nms(1); P1OUT &= BIT0;/*定位函数*/void LCD_Pos(uchar x,uchar y) int pos; switch(x) case 1:pos=0x80;break; case 2:pos=0x90;break; case 3:pos=0x88;break; case 4:pos=0x98;break; default:pos=0x80; pos += y; LCD_Send(0,pos)
17、;/*函数功能:字符串显示函数入口参数:*pt ,num出口参数:无函数说明:无*/ void LCD_Display_String(const uchar *pt,uchar num) uchar i; for(i = 0;i < (num*2);i+) LCD_Send(1,*(pt+);/*函数功能:数字显示函数入口参数:num出口参数:无函数说明:无*/ void LCD_Display_Digit(long int num) uint SHOW7,i=0; SHOW0=(num/10000)%10; /十位 SHOW1=(num/1000)%10; /个位 SHOW2=10;
18、/. SHOW3=(num/100)%10; /十分位 SHOW4=num/10%10; /百分位 SHOW5=num%10; /千分位 SHOW6=11; /V switch(Voltage_Range) case Range_3V: for(i=1;i<7;i+) LCD_Send(1,LCD_TableSHOWi); break; case Range_15V: for(i=0;i<7;i+) if(i=5)+i; LCD_Send(1,LCD_TableSHOWi); break; default: break; /*延时函数*/void Delay_nms(uint n) uchar i; while(n-) for(i=0;i<115;i+);/*函数名称:显示函数入口参数:Data出口参数:无函数说明:每行最多8个字,2个字母或数字相当于1个字的长度,注意 汉字没法跨格显示。*/ void LCD_Display(long int Data) /LCD_Pos(1,0); /第一行 /LCD_Display_String("",0); LCD_Pos(2,0); /第二行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年西安电力机械制造公司机电学院单招职业适应性测试题库及答案详解一套
- 2026年无锡商业职业技术学院单招综合素质考试题库及完整答案详解1套
- 2026年仙桃职业学院单招职业倾向性考试题库带答案详解
- 2026年江苏食品药品职业技术学院单招职业适应性考试题库及完整答案详解1套
- 2026年石家庄科技信息职业学院单招职业倾向性测试题库及完整答案详解1套
- 2026年兰州职业技术学院单招职业适应性考试题库参考答案详解
- 2026年铜陵职业技术学院单招职业倾向性测试题库及参考答案详解
- 2026年四川托普信息技术职业学院单招职业技能测试题库及答案详解1套
- 2026年温州科技职业学院单招职业适应性考试题库带答案详解
- 2026年四川工商职业技术学院单招职业技能测试题库及答案详解一套
- 工程部项目进度监控与风险应对方案
- 河南省青桐鸣2026届高三上学期第二次联考语文试卷及参考答案
- 社会能力训练教程
- 哈尔滨工业大学本科生毕业论文撰写规范
- 2025年河南高二政治题库及答案
- 水库文明施工方案
- 地面防静电地坪施工方案
- 创新激励机制
- 产品成熟度评估标准文档
- 2025年浙江衢州龙游经济开发区下属国资公司公开招聘普通岗位合同制员工11人笔试考试参考题库附答案解析
- 广东省深圳市2025学年六年级上册数学期末备考真题(北师大版)
评论
0/150
提交评论