- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字式直流电压表整体说明数字式直流电压表主要由MSP430G2553、12864和分压电路三部分组成。分压电路先将输入的电压信号衰减的,后通过控制路选择开关设定测量的量程,实现精确读数的电压信号由MSP430G2553内部的ADC10模块转换成数字信号;再通过12864液晶屏串行显示原理图数字式直流电压表12864通过串口方式显示,只需占用单片机2个I/O口;分压电路可以通过开关S1选择量程档位,只占用1个I/O口。
三、接口定义MSP430G2553的接口说明如表1所示。12864的接口说明如表所示。表1 MSP430G2553的接口说明
表 LCD12864的接口说明 程序流程图主函数的流程框图如图1所示。主函数调用初始化函数初始化的流程框图如图所示对(三)ADC初始化函数
的流程框图如图所示ADC10CTL0和ADC10CTL1的初始化配置。其中,ADC10CTL0 需要配置的是ADC10的开关、采样周期、参考电压、ADC10中断使能;而ADC10CTL1则只需要对外部采样通道和ADC的工作模式进行选择。
(四)液晶屏初始化
液晶屏初始化的流程框图如图所示
(五)中断函数
中断函数用到了ADC中断函数和看门狗中断函数。ADC中断函数的流程框图如图所示ADC10CLKS周期会产生一次中断,ADC10会将采集到的电压值自动保存在转换存储寄存器ADC10MEM中,直接读取该寄存器就可以取出数据,再通过固定的转换公式转换成测得的电压值。看门狗中断函数的流程框图如图所示程序代码/******************************************************************/
/* 程序说明:直流电压表(串行LCD显示) */
/* P1.0控制RW,并行的读/写选择信号,串行的数据口 */
/* P1.1控制E,并行的使能信号,串行的同步时钟 */
/* P1.4接被测电压信号源,信号源与单片机要共地 */
/* PSB低电平是串行,直接接地;RS接高电平 */
/* 注:程序运行前先选择量程Voltage_Range,并将P1.4口接上对应通 */
/* 道,若选Range_3V接①道,若选Range_15V接②道,否则烧坏芯片 */
/******************************************************************/
#includemsp430g2452.h
#define uint unsigned int
#define uchar unsigned char
#define BIT(x) (1(x))
#define Range_3V 0 //量程为0~3V
#define Range_15V 1 //量程为0~15V
/*********************************************************
函数声明
*********************************************************/
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 uchar *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; //全局变量Voltage
uint Voltage_Range;
/*********************************************************
函数功能:系统初始化
入口参数:无
出口参数:无
函数说明:无
**********************************************
文档评论(0)