多量程数字电压表.doc_第1页
多量程数字电压表.doc_第2页
多量程数字电压表.doc_第3页
多量程数字电压表.doc_第4页
多量程数字电压表.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

多量程数字电压表本毕设以stc89c52rc单片机为核心,利用adc0809采集外部电压进行转换显示,并采用串联电阻法,选取不同的量程。程序:#include/#include#define uint unsigned int#define uchar unsigned charsbit rs=p30;sbit e=p31;sbit start=p20;sbit out=p22;sbit ale=p23;sbit key1=p34;sbit key2=p35;sbit key3=p36;uchar num=1,flag=0;uint ad_data;uchar data table=0123456789.v h:;void delay(uchar ms) /延时子函数 uchar j,i; for(i=ms;i0;i-) for(j=110;j0;j-);/写指令/void write_com(uchar com) /写指令函数 rs=0; p1=com; e=1; delay(1); e=0;/写数据/void write_data(uchar da) /写数据函数 rs=1; p1=da; e=1; delay(1); e=0; /初始化液晶/void lcd_init() write_com(0x38); /*显示模式设置*/ delay(5); write_com(0x38); delay(5); write_com(0x38); delay(5); write_com(0x38); write_com(0x08); /*显示关闭*/ write_com(0x01); /*显示清屏*/ write_com(0x06); /*显示光标移动设置*/ delay(5); write_com(0x0c); /*显示开及光标设置*/ write_com(0x83); write_data(table14); /初始化显示相关字符/void display_data(uchar add1,uchar add2,uint date) uchar i; write_com(0x82); write_data(tablenum); /ad通道显示 write_com(0x80+add1*0x40+add2); /地址计算 delay(1); if(num=1) i=date/100; write_data(tablei); / i=date/10%10; write_data(tablei); write_data(table10); i=date%10; write_data(tablei); write_data(table11); if(num=2|num=3) i=date/100; write_data(tablei); /write_data(table10); i=date/10%10; write_data(tablei); i=date%10; write_data(tablei); write_data(table11); write_data(table12); void key_scan() if(key1=0) delay(10); /消抖延时 if(key1=0) num=1; while(key1=0); if(key2=0) delay(10); /消抖延时 if(key2=0) num=2; while(key2=0); if(key3=0) delay(10); /消抖延时 if(key3=0) num=3; while(key3=0);void int0_init() ea=1; it0=1; ex0=1;void ad_transform() p2&=0x0f;/ delay(2); ale=0; p2|=0x00+num*16; /地址计算 delay(1); ale=1; ale=0; start=0; start=1; start=0; void main() float aa=0.0; lcd_init(); /液晶屏初始化 int0_init(); /中断初始化while(1) key_scan(); /按键扫描函数 ad_transform(); delay(100); if(flag=1) ea=0; flag=0; aa=(float)ad_data; /ad转换函数 if(num=1) aa=(aa*200)/255; /标度转换此公式将ad值放大100倍 if(num=2) aa=(aa*200)/255; /标度转换此公式将ad值放大100倍 if(num=3) aa=(aa*500)/255; /标度转换此公式将ad值放大100倍 ea=1; display_data(0,4,(uint)aa);/数值显示 void it0() interrupt 0 out=1; flag+; ad_dat

温馨提示

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

评论

0/150

提交评论