0~5V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告.doc_第1页
0~5V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告.doc_第2页
0~5V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告.doc_第3页
0~5V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告.doc_第4页
0~5V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

电子与控制系统设计实验报告实验项目名称:05v数字式直流电压表设计指导老师: 元泽怀 完成时间: 2015年11月3日 姓名: 刘文开 班级: 12电气1班 学号: 201224122116 成绩: 电子信息与机电工程学院 编制实验项目010v数字式直流电压表设计实验项目类型验证演示综合设计其他*一、实验目的1. 掌握 a/d转换程序的设计;2. 掌握数据采集与显示的应用;3掌握数据处理的方法;二、实验内容1. 编一程序,实现05v 数字式直流电压表功能,用电位器rv1 作模拟量的输入,右边4位数码管显示输入电压值,使用 pa7 进行模拟量输入。其仿真电路见下图5-1所示。图5-1 05v 数字式直流电压表仿真电路图2. 实现输入信号的幅值为 010v,重新设计实现电路和算法程序,电路图如5-2所示。图5-2 010v数字式直流电压表仿真电路图三、使用仪器设备及材料1、安装windows xp操作系统的微型计算机1台2、avr单片机c语言集成开发环境iccavr6.31a3、单片机仿真平台proteus7.54、avr单片机下载软件progisp5、avr单片机实验板1套(含下载器)四、实验过程原始记录1、主程序流程图2.显示函数流程图:2、软件主要程序及注解驱动程序:/*lcd1602液晶驱动程序*/ #include #include #define xtal 8 #define pb0 0 #define pb1 1 #define pb2 2 /- #define uchar unsigned char #define uint unsigned int #define set_bit(x,y) (x|=(1y) #define clr_bit(x,y) (x&=(1y) #define get_bit(x,y) (x&=(131)l+; for(i=0;il;i+) displayonechar(x+,y,ptri); if(x=16) x=0;y=1; /*演示第二行移动字符串子函数* void displayline2(uchar dd) uchar i; for(i=0;i16;i+) displayonechar(i,1,dd+); dd&=0x7f; if(dd32)dd=32; /*显示光标定位子函数* void locatexy(char posx,char posy) uchar temp=0; temp&=0x7f; temp=posx&0x0f; posy&=0x01; if(posy)temp|=0x40; temp|=0x80; lcdwritecommand(temp); /*显示光标定位的一个字符子函数* void displayonechar(uchar x,uchar y,uchar wdata) locatexy(x,y); lcdwritedata(wdata); /*lcd初始化子函数* void initlcd(void) lcdwritecommand(0x38);/显示模式设置(固定),8位数据接口 delay_nms(5); lcdwritecommand(0x01);/清屏 delay_nms(5); lcdwritecommand(0x0c);/开显示,不显示光标 delay_nms(5); /*写命令到lcm子函数* void lcdwritecommand(uchar cmd) lcm_rs_0;lcm_rw_0; dataport=cmd; lcm_en_1;delay_nms(1);lcm_en_0; /*写数据到lcm子函数* void lcdwritedata(uchar dataw) lcm_rs_1;lcm_rw_0; dataport=dataw; lcm_en_1;delay_nms(1);lcm_en_0; /*1ms延时子函数* void delay_1ms(void) uint i; for(i=1;i(uint)(xtal*143-2);i+) ; /=n*1ms延时子函数= void delay_nms(uint n) uint i=0; while(in) delay_1ms(); i+; 05v 数字式直流电压表程序:#include #define uchar unsigned char #define uint unsigned int uchar const seg710=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f;/单个数码管19显示 uchar const act4=0xfe,0xfd,0xfb,0xf7;/选通数码管 uint adc_val,dis_val; uchar i,cnt; /*/ void port_init(void) porta = 0x7f; ddra = 0x7f; portb = 0xff; ddrb = 0xff; portc = 0xff; ddrc = 0xff; portd = 0xff; ddrd = 0xff; /*/ void adc_init(void) adcsra = 0xe3; admux = 0x47; /* void timer0_init(void) tcnt0 = 0x83; tccr0 = 0x03; timsk = 0x01; /*/ void init_devices(void) port_init(); timer0_init(); adc_init(); sreg =0x80; /* #pragma interrupt_handler timer0_ovf_isr:10 void timer0_ovf_isr(void) tcnt0 = 0x83; cnt+; /= uint adc_convert(void) uint temp1,temp2; adc_init(); temp1=(uint)adcl; temp2=(uint)adch; temp2=(temp28)+temp1; return(temp2); /*/ uint conv(uint i) long x; uint y; x=(5000*(long)i)/1023; y=(uint)x; return y; void delay(uint k) uint i,j; for(i=0;ik;i+) for(j=0;j100) adc_val=adc_convert(); dis_val=conv(adc_val); cnt=0; delay(10);for(i=0;i100;i+) portc=act0; portb=seg7dis_val%10; delay(1); portc=act1; portb=seg7dis_val/10%10; delay(1); portc=act2; portb=seg7dis_val/100%10; delay(1); portc=act3; portb=0x80|seg7dis_val/1000; delay(1); 输入信号的幅值为 010v程序:#include #include lcd1602_8bit.c uchar const title=0-10v d_voltager; #define uchar unsigned char #define uint unsigned int uint adc_val,dis_val; uchar i,cnt; /*/ void port_init(void) porta = 0x7f; ddra = 0x7f; portb = 0xff; ddrb = 0xff; portc = 0xff; ddrc = 0xff; portd = 0xff; ddrd = 0xff; /*/ void adc_init(void) adcsra = 0xe3; admux = 0x47; /* void timer0_init(void) tcnt0 = 0x83; tccr0 = 0x03; timsk = 0x01; /*/ void init_devices(void) port_init(); timer0_init(); adc_init(); sreg =0x80; /* #pragma interrupt_handler timer0_ovf_isr:10 void timer0_ovf_isr(void) tcnt0 = 0x83; cnt+; /= uint adc_convert(void) uint temp1,temp2; adc_init(); temp1=(uint)adcl; temp2=(uint)adch; temp2=(temp28)+temp1; return(temp2); /*/ uint conv(uint i) long x; uint y; x=(10000*(long)i)/1023; y=(uint)x; return y; void delay(uint k) uint i,j; for(i=0;ik;i+) for(j=0;j100) adc_val=adc_convert(); dis_val=conv(adc_val); cnt=0; delay(10); displayonechar(5,1,(adc_val/1000)+0x30); displayonechar(6,1,(adc_val/100)%10+0x30); displayonechar(7,1,(adc_val/10)%10+0x30); displayonechar(8,1,(adc_val%10)+0x30); displayonechar(10,1,(dis_val/10000)+0x30); displayonechar(11,1,(dis_val/1000)%10+0x30); displayonechar(13,1,(dis_val/100)%10+0x30); disp

温馨提示

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

评论

0/150

提交评论