电压表程序代码_第1页
电压表程序代码_第2页
电压表程序代码_第3页
电压表程序代码_第4页
电压表程序代码_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编者:PYH日期:功能:实现ADC0809采集05V电压采集,通过按键可选择02,3个通道切换,要选择其他通道按同理写按键函数即可,采用1602显示.*/maiii.c文卜#iiiclude#iiiclude#iiicluden1602.ir#includedelay.h”frdefineumtunsignedmt#defineuchaiunsignedchar芦*ADC0809引脚定义*/sbitCLK=P2Z6;sbitST=P2A3;sbitALE=P2A7;sbitOE=P2A5;sbitEOC=P2A4;sbitADDA=P3Z5;sbitADDB=P3A6;sbitADDC=P3A

2、7;/*按键定义*/sbitKEY1=P3A2;sbitKEY2=P3A3;sbitKEY3=P3A4;芦*函数声明*/voidADC0809_uut();/ADC0809初始化函数unsignedcharRead_AD();/读取AD数据函数unsignedcharkeyscaii();通道选择函数voidmain()(uclwnum=0;unsignedchaitemp7;显示区域临时存储数组floatVoltage;浮点变量ADC0809_uut();LCD_Imt();/LCD初始化DelayMs(20);LCD.ClearQ;清屏LCD_W【ite_Stnng(3,0,PYH_DVM

3、设置表头ADC0809uut();/AD0809初始化ST=O;while(l)ST=1;启动ADC0809ST=O;keyscan();。2num=Read_AD();读取AD0809数据Vbltage=(float)num*5/256;数据转换,float是强制转换符号,将结果转换为浮点型spimtf(temp,VO:%3.2f,Voltage);格式输出电压值,3.2表示浮点输出,小数点后两位LCD_Wiite_Stiing(2,l,temp);将数据写入1602显示)voidtimerO(void)intemipt1中断处理函数,产生约500KHZ时钟供0809工作(TH0=(6553

4、6-200)/256;TL0=(65536-200)%256;CLK-CLK;voidADC0809_uut()/ADC0809初始化(TMOD=0 x01;TH0=(65536-200)/256;TL0=(65536-200)%256;ET0=l;TR0=l;EA=1;DelayMs(2);unsignedcharRead_AD()读ADC0809数据(uchartemp=0;/存放AD采集的数据wlnle(EOC=0);等待转换完成OE=1;temp=Pl;读取数据DelayMs(l);OE=0;returntemp;unsignedcharkeyscan()(if(KEYl=O)选择通道

5、0ALE=1;/允许写入地址ADDA=O;ADDB=O;ADDC=O;ALE=O;)elseif(KEY2=0)选择通道1ALE=1;ADDA=1;ADDB=O;ADDC=O;ALE=O;elseif(KEY3=0)选择通道2ALE=1;ADDA=0;ADDB=1;ADDC=0;ALE=0;)/*其他通道同理写入地址即可*/)#ifhdef_DELAY_H_#define_DELAYHus延时函数,含参,t值范围0255*voidDelayUs2x(unsignedchart);ms延时函数,含参,t值范围O255*voidDelayMs(unsignedchart);#endif#inclu

6、dedelay.h”voidDelayUs2x(unsignedchart)(vliile(t);voidDelayMs(unsignedchart)(while。-)(大致延时InisDelayUs2x(245);DelayUs2x(245);)#iiiclude/#iiiclude#ifhdef_1602_H_#define_1602_H_bitLCD_Check_Busy(void);voidLCD_Write_Com(unsignedcharcom);voidLCD_Write_Data(unsignedcharData);voidLCD_Cleai(void);voidLCD_Wri

7、te_Stimg(unsignedchaix,unsignedchary,unsignedchar*s);voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData);voidLCD_Init(void);#endif1602.C文件#includen1602.hM#includedelay.h”sbitRS=P2A0;端II定义sbitRW=P2Al;sbitEN=P2A2;defineRS_CLRRS=OdefineRS.SETRS=1#defineRW.CLRRW=OdefineRW_SETRWE#defineEN_CL

8、REN=O#defineEN_SETEN=1#defineDataPortPO判忙函数*bitLCD_Check_Busy(void)DataPoit=OxFF;RS_CLR;RW_SET;EN_CLR;_nop_0;EN_SET;return(bit)(DataPort&0 x80);)写入命令函数*/voidLCD_Wnte_Com(unsignedcharcom)DelayMs(5);RS_CLR;RW_CLR;EN_SET;DataPoit=com;_nop_0;EN_CLR;)写入数据函数*/voidLCD_Wnte_Data(unsignedcharData)(DelayMs(5)

9、;RS_SET;RW_CLR;EN_SET;DataPort=Data;_nop_0;EN_CLR;)清屏函数*/voidLCD_Cleai(void)(LCD.Wnte_Com(OxO1);DelayMs(5);)/*写入字符串函数*/voidLCD_Write_Stimg(unsignedchaix,unsignedchary,unsignedchar*s)iif(y=0)LCD_Write_Com(0 x80+x);表示第一行elseLCD_WHte_Com(0 xC0+x);表示第二行wliile(*s)LCD.Wnte.Data(*s);S+;)芦写入字符函数*/*voidLCD_Write_Char(uiisignedcharx,unsignedchaiy.unsignedcharData)if(y=0)LCD_Wiite_Com(0 x80+x);elseLCD_Wiite_Com(0 xC0+x);)LCD-Wiite_Data(Data);*/*初始化函数*/voidLCD_Init(void)_LCD_Wnte_Com(0 x38);六显示模式设置*/DelayMs(5);LCD_Wnte_Com(0 x38);DelayMs(5);LCD_Wnte_Com(0 x38);DelayMs(5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论