版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include<msp430g2553.h>#defineucharunsignedchar#defineuintunsignedint#defineLCD_CON_DIRP2DIR#defineLCD_CON_INP2IN#defineLCD_CON_OUTP2OUT#defineLCD_RSBIT0//p2.5接51p2.5#defineLCD_RWBIT1//p2.0接51p2.6#defineLCD_ENBIT2//p2.1接51p2.7#defineLCD_DATA_DIRP1DIR#defineLCD_DATA_INP1IN#defineLCD_DATA_OUTP1OUT#defineA1000#defineB100#defineX10voidInitOsc(void);voidInitLCD(void);voidwrite_command(ucharcommand);voidwrite_data(uchardata);voidDisplay_ZFC(uchar*s);voidLCD_Set_xy(ucharx,uchary);voidTrans_val(uintHex_Val);voidDisplay_Volte(uintHex_Val);voidMeasure_Volte(void);ucharnum[]={".v"};ucharvolte[]={"Volt:"};uintindex=0;inti;unsignedlongsum=0;uintHex_Val;#defineNum_of_Results32uintresults[Num_of_Results];//保存ADC转换成果旳数组uintaverage;/****************************************************************************ADC初始化*****************************************************************************/voidADC_Init(void){ADC10CTL0=ADC10SHT_2+ADC10ON+ADC10IE;//ADC10ON,interruptenabledADC10CTL1=INCH_1;//inputA1ADC10AE0|=0x02;//二次采集}/****************************************************************************DCO时钟初始化设为1MHz*****************************************************************************/voidDCO_Init(void){ if(CALBC1_1MHZ==0xFF||CALDCO_1MHZ==0xFF)ﻩﻩ{ﻩﻩﻩwhile(1); } BCSCTL1=CALBC1_1MHZ;ﻩDCOCTL=CALDCO_1MHZ;ﻩBCSCTL2=SELM_0+DIVM_0;}/****************************************************************************向12864发送字节*****************************************************************************/voidSendByte(ucharZdata){ uinti;ﻩfor(i=0;i<8;i++) {ﻩﻩif((Zdata<<i)&0x80) ﻩ{ﻩﻩﻩLCD_CON_OUT|=LCD_RW;//clk始终信号为高ﻩﻩ}ﻩﻩelse ﻩ{ﻩ LCD_CON_OUT&=~LCD_RW;//clk始终信号为低ﻩﻩ}ﻩﻩLCD_CON_OUT&=~LCD_EN;ﻩ LCD_CON_OUT|=LCD_EN;ﻩ}}/****************************************************************************向12864写命令*****************************************************************************/voidwrite_command(ucharcommand){ LCD_CON_OUT|=LCD_RS;ﻩSendByte(0xF8);ﻩSendByte(command&0xF0); SendByte((command<<4)&0xF0);ﻩ_delay_cycles(200);}/****************************************************************************向12864写数据*****************************************************************************/voidwrite_data(uchardata){ﻩLCD_CON_OUT|=LCD_RS;ﻩSendByte(0xFA);ﻩSendByte(data&0xF0);ﻩSendByte((data<<4)&0xF0); _delay_cycles(200);}voidDisplay_ZFC(uchar*s){ while(*s>0){ﻩﻩwrite_data(*s);ﻩﻩs++;ﻩﻩ_delay_cycles(5000);}}/****************************************************************************拟定12864屏幕显示旳坐标位置(x,y)*****************************************************************************/voidLCD_Set_xy(ucharx,uchary){ucharaddress;ﻩswitch(x)ﻩ{ ﻩcase0:address=0x80+y;break;case1:address=0x80+y;break;ﻩﻩcase2:address=0x90+y;break;ﻩﻩcase3:address=0x88+y;break;ﻩﻩcase4:address=0x98+y;break; ﻩdefault:address=0x80+y;break;ﻩ}write_command(address);//写入地址命令}/****************************************************************************lcd初始化*****************************************************************************/voidInitLCD(void){ﻩLCD_CON_DIR|=0xFF;//p2口定义为输出ﻩwrite_command(0x01);//清屏ﻩwrite_command(0x30);ﻩ_delay_cycles(5000); write_command(0x0c);ﻩ_delay_cycles(5000);}/****************************************************************************采集到旳数据转化成电压形式*****************************************************************************/voidTrans_val(uintHex_Val){ﻩunsignedlongcaltmp;ﻩuintCurr_Volt,volt,max;ﻩuinta[50];ﻩcaltmp=Hex_Val;caltmp=caltmp*34600;//caltmp=Hex_Val*34600Curr_Volt=caltmp>>10;//Curr_Volt=caltmp/2^nvolt=Curr_Volt;for(i=0;i<50;i++){a[i]=volt;}for(max=a[0],i=0;i<50;i++){if(a[i]>max)max=a[i];}Curr_Volt=max;Display_Volte(Curr_Volt);}/****************************************************************************主函数*****************************************************************************/voidmain(void){ﻩWDTCTL=WDTPW+WDTHOLD;ﻩADC_Init();//ADC初始化ﻩDCO_Init();//DCO初始化 InitLCD();//12864液晶初始化ﻩwhile(1)ﻩ{ ﻩMeasure_Volte();//测量直流电压值并且显示ﻩ}}/****************************************************************************测量电压*****************************************************************************/voidMeasure_Volte(void){ﻩADC10CTL0|=ENC+ADC10SC;//Samplingandconversionstart __bis_SR_register(CPUOFF+GIE);ﻩresults[index++]=ADC10MEM;//Moveresultsﻩif(index==Num_of_Results) { ﻩindex=0; ﻩfor(i=0;i<Num_of_Results;i++) ﻩ{ﻩ ﻩsum+=results[i]; ﻩ}ﻩ sum>>=5;//除以32ﻩﻩTrans_val(sum); ﻩsum=0;ﻩ}}/****************************************************************************显示电压值*****************************************************************************/voidDisplay_Volte(uintHex_Val){ﻩuintCurr_Volt; Curr_Volt=Hex_Val;ﻩwr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年贵州省贵阳市白云区牛场布依族乡社区工作人员考试模拟试题及答案
- 2026年保安证考试理论学习试题及答案
- 6月安保考试试题测试题库(附答案)
- 快乐数学节:探索智慧奥秘小学主题班会课件
- 心理健康护成长阳光少年小学主题班会课件
- 新客户合作意向己接收函(7篇范文)
- 幼儿园后勤应急预案
- 幼儿园大班幼儿安全自护教育方案
- 影视策划制片人创意策划能力KPI考核表
- 学校共青团组织管理条例
- 2025年邢台市水务发展集团有限公司招聘真题
- 《DL-T 1482-2023架空输电线路无人机巡检作业技术导则》2025实施指南(完整版)
- 北京中考英语听力高频词汇
- 工业企业无组织排放排查整治技术指南
- DBJ33-T 1358-2025 建筑与市政工程有限空间作业安全技术规程
- DL∕T 5210.6-2019 电力建设施工质量验收规程 第6部分:调整试验
- JT-T-1008.1-2015公路交通情况调查设备第1部分:技术条件
- 2023江苏中考数学试题分类汇编:反比例函数(纯word)
- 储能技术-电化学储能
- 敖汉旗龙武矿业有限责任公司金矿评估报告
- GB/T 5796.4-2022梯形螺纹第4部分:公差
评论
0/150
提交评论