05V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告.docx
- 文档编号:2763736
- 上传时间:2022-11-12
- 格式:DOCX
- 页数:16
- 大小:72.58KB
05V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告.docx
《05V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告.docx》由会员分享,可在线阅读,更多相关《05V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
05V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告
《电子与控制系统设计》实验报告
实验项目名称:
0~5V数字式直流电压表设计
指导老师:
元泽怀
完成时间:
2015年11月3日
姓名:
刘文开
班级:
12电气1班
学号:
201224122116
成绩:
电子信息与机电工程学院编制
实验
项目
0~10V数字式直流电压表设计
实验项目类型
验证
演示
综合
设计
其他
*
一、实验目的
1.掌握A/D转换程序的设计;
2.掌握数据采集与显示的应用;
3.掌握数据处理的方法;
二、实验内容
1.编一程序,实现0~5V数字式直流电压表功能,用电位器RV1作模拟量的输入,右边4
位数码管显示输入电压值,使用PA7进行模拟量输入。
其仿真电路见下图5-1所示。
图5-10~5V数字式直流电压表仿真电路图
2.实现输入信号的幅值为0~10V,重新设计实现电路和算法程序,电路图如5-2所示。
图5-20~10V数字式直流电压表仿真电路图
三、使用仪器设备及材料
1、安装windowsxp操作系统的微型计算机1台
2、AVR单片机C语言集成开发环境ICCAVR6.31A
3、单片机仿真平台proteus7.5
4、AVR单片机下载软件progisp
5、AVR单片机实验板1套(含下载器)
四、实验过程原始记录
1、主程序流程图
2.显示函数流程图:
2、软件主要程序及注解
驱动程序:
/*******LCD1602液晶驱动程序***************/
#include
#include
#definextal8
#definePB00
#definePB11
#definePB22
//----------------------------
#defineucharunsignedchar
#defineuintunsignedint
#defineSET_BIT(x,y)(x|=(1< #defineCLR_BIT(x,y)(x&=~(1< #defineGET_BIT(x,y)(x&=(1< //-------端口电平的宏定义------------ #defineLCM_RS_1SET_BIT(PORTB,PB0) #defineLCM_RS_0CLR_BIT(PORTB,PB0) #defineLCM_RW_1SET_BIT(PORTB,PB1) #defineLCM_RW_0CLR_BIT(PORTB,PB1) #defineLCM_EN_1SET_BIT(PORTB,PB2) #defineLCM_EN_0CLR_BIT(PORTB,PB2) //------------------------------ #defineDataPortPORTA #defineBusy0x80 //**********函数声明******************** voidDelay_1ms(void); voidDelay_nms(uintn); voidLcdWriteData(ucharW); voidLcdWriteCommand(ucharCMD); voidInitLcd(void); voidDisplayLine2(uchardd); voidDisplayOneChar(ucharx,uchary,ucharWdata); voidePutstr(ucharx,uchary,ucharconst*ptr); /***********显示指定坐标的一串字符子函数************/ voidePutstr(ucharx,uchary,ucharconst*ptr) { uchari,l=0; while(ptr[l]>31){l++;} for(i=0;i DisplayOneChar(x++,y,ptr[i]); if(x==16){ x=0;y^=1; } } } //**********演示第二行移动字符串子函数************ voidDisplayLine2(uchardd) { uchari; for(i=0;i<16;i++){ DisplayOneChar(i,1,dd++); dd&=0x7f; if(dd<32)dd=32; } } //***********显示光标定位子函数****************** voidLocateXY(charposx,charposy) { uchartemp=0; temp&=0x7f; temp=posx&0x0f; posy&=0x01; if(posy)temp|=0x40; temp|=0x80; LcdWriteCommand(temp); } //**********显示光标定位的一个字符子函数*********** voidDisplayOneChar(ucharx,uchary,ucharWdata) { LocateXY(x,y); LcdWriteData(Wdata); } //***********LCD初始化子函数****************** voidInitLcd(void) { LcdWriteCommand(0x38);//显示模式设置(固定),8位数据接口 Delay_nms(5); LcdWriteCommand(0x01);//清屏 Delay_nms(5); LcdWriteCommand(0x0c);//开显示,不显示光标 Delay_nms(5); } //************写命令到LCM子函数************ voidLcdWriteCommand(ucharCMD) { LCM_RS_0;LCM_RW_0; DataPort=CMD; LCM_EN_1;Delay_nms (1);LCM_EN_0; } //************写数据到LCM子函数************* voidLcdWriteData(uchardataW) { LCM_RS_1;LCM_RW_0; DataPort=dataW; LCM_EN_1;Delay_nms (1);LCM_EN_0; } //***********1ms延时子函数******************* voidDelay_1ms(void) {uinti; for(i=1;i<(uint)(xtal*143-2);i++); } //=============n*1ms延时子函数================ voidDelay_nms(uintn) { uinti=0; while(i {Delay_1ms(); i++; } } 0~5V数字式直流电压表程序: #include #defineucharunsignedchar #defineuintunsignedint ucharconstSEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//单个数码管1~9显示 ucharconstACT[4]={0xfe,0xfd,0xfb,0xf7};//选通数码管 uintadc_val,dis_val; uchari,cnt; /************************************************/ voidport_init(void) { PORTA=0x7F; DDRA=0x7F; PORTB=0xFF; DDRB=0xFF; PORTC=0xFF; DDRC=0xFF; PORTD=0xFF; DDRD=0xFF; } /************************************************/ voidadc_init(void){ ADCSRA=0xE3; ADMUX=0x47;} //*************************** voidtimer0_init(void){ TCNT0=0x83; TCCR0=0x03; TIMSK=0x01; } /*********************************************/ voidinit_devices(void) { port_init(); timer0_init(); adc_init(); SREG=0x80; } //*************************** #pragmainterrupt_handlertimer0_ovf_isr: 10 voidtimer0_ovf_isr(void) { TCNT0=0x83; cnt++; } //========================= uintADC_Convert(void) {uinttemp1,temp2; adc_init(); temp1=(uint)ADCL; temp2=(uint)ADCH; temp2=(temp2<<8)+temp1; return(temp2); } /**************************/ uintconv(uinti) { longx; uinty; x=(5000*(long)i)/1023; y=(uint)x; returny; } voiddelay(uintk) { uinti,j; for(i=0;i { for(j=0;j<1141;j++); } } /***********************/ voidmain(void) { init_devices(); delay(400); DDRA=0X7F;PORTA=0X7F; DDRC=0XFF;PORTC=0X00; DDRB=0XFF;PORTB=0X00; while (1) { if(cnt>100) { adc_val=ADC_Convert(); dis_val=conv(adc_val); cnt=0; } delay(10); for(i=0;i<100;i++) { PORTC=ACT[0]; PORTB=SEG7[d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子与控制系统设计 05 数字式 直流 电压表 设计 实验 报告 电子 控制系统
