数字电压表程序及仿真图_第1页
数字电压表程序及仿真图_第2页
数字电压表程序及仿真图_第3页
数字电压表程序及仿真图_第4页
数字电压表程序及仿真图_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

//************************************************用adc0809进电压测,lcd1602显示精//************************************************#include"reg51.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedintuchartable[]="ID:";欢显示,包括空格在<=16uchartable1[]="Name:";//欢迎显示,包括空格在<=16//************管定义************************sbit=P3^0;//ADC输允许信号端口sbit=P3^1;//ADC转换结束信号输出端sbitP3^2;//ADC启动转换信号输入端sbitP3^3;//ADC时输入端sbitlcd_rs=P3^4;//液数据命令选择端sbitlcd_en=P3^5;//晶使能//************参定义************************ucharnum;//LCD1602开显示数组数ucharAD_data;//AD转原始数uchardis1[]="CurrentVoltage";

uchardis2[]={'','','','','','','',};初化数组,用来保存电压显示//************子数定义***********************voiddelay(uchar//delay延子程序voidinit_lcd();//LCD1602初始化函数voidInitTimer0();//定时器0初始化函数voidwrite_com(ucharcom);//LCD1602写令函数voidwrite_data(uchardate);写据函数voidwrite_welcome();//LCD1602开显示欢迎函数voidinit_ADC();//ADC初化数voidAD_covert();//AD转子程序voidADC_change();//ADC转函数voidwrite_adc();//ADC显函//************主数voidmain(){init_lcd();//LCD1602初化write_welcome();//LCD1602开显示欢迎InitTimer0();定时器初始化init_lcd();//LCD1602初化init_ADC();//ADC初化while(1){AD_covert();//AD转换ADC_change();//ADC转函数write_adc();//ADC显}}//************delay延时子程序***********************voiddelay(uchar{ucharx,y;for(x=0;x<z;x++)for(y=0;y<114;y++);}//************LCD1602初化函数***********************voidinit_lcd(){lcd_en=0;将能端置write_com(0x38);//设16*2显示5*7点,位据接口

write_com(0x08);//写个字符后地址指针加1write_com(0x01);//显清零,数据指针清零write_com(0x06);//写个字符后地址指针加1write_com(0x0c);//显示,光标不显示不闪烁}//************定器0初始化函************************voidInitTimer0(){TMOD=0x02;定器0工方式2TH00x14;初位20TL00x14;EA1;//开中断ET01;允T0中TR01;启T0}//************LCD1602写令函数************************voidwrite_com(ucharcom){lcd_rs0;P2=com;delay(5);lcd_en=1;delay(5);lcd_en=0;

//选择写指令//将要写的命令送到数据总线上//延时,待数据稳定//由于初始化已将lcd_en置为0,能给一个高脉冲,//延时,待数据稳定//将使能端置0以完成脉冲}//************LCD1602写据函数***********************voidwrite_data(uchardate){lcd_rs1;//选写数据P2=date;将写的数据送到数据总线上delay(5);延时,待数据稳定lcd_en=1;由初始化已将置,使能端给一个高脉冲,delay(5);延时,待数据稳定lcd_en=0;将能端置以成脉冲}//************LCD1602开显示欢迎函******************voidwrite_welcome(){

write_com(0x80);//现数据指针定位到第一第一个字处for(num=0;num<16;num++)//做短延时{write_data(table[num]);delay(5);}write_com(0x80+0x40);现数据指针定位到第二行第一个字处for(num=0;num<16;num++)做短时{write_data(table1[num]);delay(20);}delay(50000);}//************中函数************************voidTimer0()interrupt{ADC_CLK=~ADC_CLK;时钟不断取反}//***********ADC初化函数***********************voidinit_ADC(){ADC_OE=0;//ADC输允许信号端口置ADC_EOC=1;//ADC转结束信号输出端置ADC_START=1;//ADC启转换信号输入端置1ADC_CLK=1;//ADC时输入端置}//***********AD转子程***********************voidAD_covert(){ADC_START=0;ADC_CLK=0;_nop_();//延空循环,一个机指令的时间ADC_START=1;ADC_CLK=1;_nop_();//延时空循环,一个机器指令的时间ADC_START=0;ADC_CLK=0;//在START上产生一个正脉冲while(ADC_EOC);//等上次转换完成_nop_();

delay(100);while(ADC_EOC==0){ADC_CLK=1;delay(1);ADC_CLK=0;delay(1);}P1=0xff;_nop_();ADC_OE=1;_nop_();AD_dataP1;ADC_OE=0;}//***********ADC转函************************voidADC_change(){doublev;ucharval_integer;uintval_decimal;vAD_data*0.0196078;时输出的数字量是2.55为使5v时输出val_integer=(uchar)v;//电压整数部分val_decimal=将压小数点后三位转换为整数(dis2[6])val_integer+0x30;//电整数转换为(dis2[8])val_decimal/100+0x30;电小第一位转换为ASSII(dis2[9])val_decimal/10%10+0x30;//电小数第二位转换为ASSII(dis2[10])=val_decimal/10%10+0x30;//电压小数第位转换为ASSII}//************LCD1602显adc

温馨提示

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

评论

0/150

提交评论