《单片机系统设计》实验报告



《《单片机系统设计》实验报告》由会员分享,可在线阅读,更多相关《《单片机系统设计》实验报告(17页珍藏版)》请在装配图网上搜索。
1、短学期实验报告 (单片机系统设计) 题 目 : 专 业: 指导教师 : 学生姓名 : 学 号 : 完成时间 : 成 绩 : 基于单片机的交流电压表设计 目录 1 系统的设计要求 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ ⋯ 2 2 系统的硬件要求 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ ⋯ 2 2.1 真有效值转换电路的分析 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ ⋯ 2 2.2 放大电路的设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ ⋯3 2.3 A/D 转换电路的设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ ⋯ 3 2.4 单片机电路的分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
2、⋯ ⋯⋯⋯⋯ ⋯4 2.5 显示电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ ⋯⋯⋯⋯ ⋯4 3 软件设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5 3.1 软件的总流程图 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ ⋯⋯ ⋯5 3.2 初始化定义与定时器初始化流程 图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5 3.3 A/D 转换流程图 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 6 3.4 数据处理流程图 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 6 3.5 数据显示流程图 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 7 4 调试 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
3、⋯⋯⋯ 7 4.1 调试准备 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 7 4.2 关键点调试 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 7 4.3 测试结果 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 8 4.4 误差分析 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 8 5 结束语 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 8 5.1 总结 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 9 5.2 展望 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 9 附录 1 总原理图 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 10
4、附录 2 程序 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 10 附录 3 实物图 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 14 基于单片机的交流电压表设计 学院 专业 姓名 指导老师: 1 设计要求 1)运用单片机实现真有效值的检测和显示。 2)数据采集使用中断方式,显示内容为有效值与峰值交替进行。 2 硬件设计 本系统是完成一个真有效值的测量和显示,利用 AD737 将交流电转换成交流电压 的有效值,用 ADC0804实现模数转换,再通过单片机用数码管来显示。系统原理框图 如图 2-1所示。系统框图由真有效值转换电路、 放大电路、A/D 转换电路、
5、单片机电路、 数码管显示电路五部分。 交流 转换 放大 A/D 单片机 显示 信号 电路 电路 转换 电路 电路 图 2-1 原理框图 2.1 真有效值转换电路 真有效值转换电路主要是利用 AD737芯片来实现真有效值直流变换的, 即将输入 的交流信号转换成直流信号的有效值,其原理图 如图 2-2 所示。 图 2-2 真有效值转换电路 由于 AD737最大输入电压为 200mV, 所以需要接两个二极管来限制输入电压, 起到限 幅的作用。如图中 D1、D2,由IN4148构成,电容 C6是耦合电容,电阻 R1是限流电阻。 2.2
6、放大电路设计 放大电路主要是利用运放 uA741来进行放大,电路原理图如图 2-3 所示 图 2-3 放大电路原理图 由于 AD737 可接受的信号有效值为 0~200mV 。而 ADC0804 、单片机的电源电 压都需要 0~5V ,因此需要一个放大电路, 将 AD737 输出的 200mV 的电压提升至 5V, 所以放大电路的放大倍数最低需要 25 倍。该放大电路采用集成芯片 uA741 ,连接成 一个同相比例运放,输入电阻采用 3.3K ,反馈电阻用 100K 的滑动变阻器,当滑动变 阻器处于最大值时,放大倍数处于最大,为 AVf=(1+R3/R2 ) ≈31.3 。放大倍数
7、可以根 据滑动变阻器的滑动而改变。 2.3 A/D 转换电路 A/D 转换电路采用 ADC0804实现,其原理图如图 2-4 所示 图 2-4 A/D 转换电路原理图 此电路考虑到做单片机系统时,需数据采集,而数据采集能通过 I/O 口扩展接口 电路得到,但 51单片机大多不带 A/D转换器,所以模拟量的采集必须靠 A/D 实现。所 谓 A/D转换就是将输入的模拟信号转换成数字信号输出。 改该电路采用 ADC0804
8、 芯片, 其最快转换时间为 100us,时钟频率 f=1/(C5*R9) ,可对 0~5V 之间的电压进行转换; 输入基准电压为实际基准电压的 1/2;若输入基准电压为 2.56V ,其输入模拟电压为 (DATA/256)*2 ,DATA 为转换数字量。转换结束信号输出到单片机外中断 1,如图 2-4所示。 /RD为外部读取转换结果的控制输出信号。 /RD为 HI 时, DB0~DB7为高阻抗; /RD为LO时,数据才输出。 /WR用来启动转换控制输入,相当于 ADC转换开始( /CS=0 时),当/WR由 HI 变为 LO时,转换器被清除;当 /WR为 HI 时开始转换。 CLKI N,C
9、LK R: 接振荡电路,振荡频率为 1/(1.1RC) ,如图中 R9、C6,ADC0804的最大输入电压为 5V, 输出转换值为 0~255,R5、R11 组成分压电路,为 VREF提供基准电压。根据 ADC0804原 理图,将输入模拟值转换成数字值后由 P0口输出。 2.4 单片机电路 单片机电路主要是单片机的最小系统,其原理图如图 2-5 所示 图 2-5 单片机电路原理图 该部分电路主要由 89S51、晶振和复位电路组成其原理图如 2-6所示。采用 12M的晶 振,机器周期为 0.1
10、us;上电复位;信号输入到外中断 0,在中断中启动 AD 转换; AD转 换结束标志作为外中断 1的中断源,在中断 1中读取数据并保存; P1口为数码管提供断码; P0.0~P0.7分别为 AD的启动信号、 AD的读取信号和数码管的扫描信号。 2.5 显示电路 显示电路采用数码管来显示 如图 2-6 所示。 图2-6 显示电路原理图 该部分电路采用 3位数码管来交替显示所测电压的有效值和峰值, 同时数码管采用 动态显示,每 1ms刷新一位, 用3个8550的PNP型三极管来片选。 图中smg0~smg7与单片 机P0口相连接,三极管的集电极分别与共阳数码管
11、9脚相连接,基极分别与单片机的 P2.1~P2.3相连接。 3 软件设计 3.1 总软件流程 总软件流程图如图 3-1 所示: 图 3-1 总软件流程图 3.2 初始化程序 初始化程序主要是定义主程序中要用的变量和定时器的初始化。 变量定义如下: unchar dat; //AD 采样数据变量 unchar tab[3]; //显示数据各个位存储数组 定时器初始化流程图如图 3-2 所示: 图 3-2 定时器初始化流程图 3.3 AD 采样程序 AD 采样主要是根据 ADC0804 的时序进行对外部数据的采用读取。其中包括 AD 初始化时序和 AD 数据读取
12、程序。 AD 时序图 3-3 所示: 图 3-3 AD 时序图 根据 3-3 图所示时序,写出 AD 程序流程图,如图 3-4 所示 图 3-4 AD 程序流程图 3.4 数据处理程序 AD 对 AD 采样的数据必须进行处理才能正常地显示。首先的要把十六进制数的 值转换成十进制数,然后进行值处理,求出有效值,峰值,接着分别求出数据中的各 个位上的数字,以便显示。其程序流程图如图 3-7 所示。 图 3-7 数据处理程序流程图 3.5 数据显示程序 数据显示主要是用数码管动态扫描的方法。其程序流程图如土 3-8 所示 图 3-8 数据显示程序流程图
13、 4 调试 4.1 调试准备 调试所用到的仪器有万用表、直流稳压电源、示波器、信号发生器。运用万用表 来测量电阻、电压,直流稳压电源接正负 Vs和地,信号发生器产生信号,示波器显示 输出波形和峰值。 4.2 关键点调试 (1)、放大电路调试前要先进行调零,即将运放的 2个输入端(同相输入端和反向输 入端)对地短路,用万用表测输出电压,调节滑动变阻器 R1,使输出电压为 0,如果不进行调零,则会导致输出电压有偏差。 ( 2)、注意输入 A/D的基准电压为 1/2vef, 同时最合适的基准电压为 2.56V, 以便计算时 方便。 4.2.1 放大波形 (1)、理论波形
14、 2)、实际波形 4.2.2 显示电路 4.3 测试结果 4.4 误差分析 ( 1)放大电路的放大倍数会因输入电阻, 反馈电阻与理论值有偏差而存在一定的误 差,放大倍数过大会波形互失真; ( 2)当ADC0804的基准电压为 2.56V时,其最小分辨率为 20mv,因此测量值会有± 20mv 的偏差; (3)输入信号存在干扰和波动; (4)偏置电压引起的误差。 5 结束语 5.1 总结 通过本次短学期的实验,使我对很多芯片有了一定的了解和巩固,对它们的功能 有了一定的熟悉和掌握。如 AD737,该芯片可以用来将交流电转换成真有效值的直流 电,如 ADC
15、0804芯片可实现数模转换,同时对真有效值的转换、放大等电路的设计有 了进一步的理解和掌握。 在电路设计中必须注意电路中各元件值的选择会影响电路最终的结果。当在设计 放大电路时,输入电阻、反馈电阻的不同就会使放大倍数有所不同,根据题目要求和 芯片的资料,必须保证最低放大倍数 25,因此如放大倍数太小则不能满足要求,而太 大则会导致输出波形的失真。因此,要合理选择各元件的值。在电路调试时,应该分 模块进行调试,及时发现问题解决问题, 等所有模块都调试成功再进行总体的调试。 最 后要根据自己所测的结果,进行分析,尤其对测试出的结果与理论结果进行比较,是 否有误差,并分析形成误差的原因,如何减少误
16、差。 5.2 展望 虽然该电路已经基本能实现对真有效值的测量和显示,但测量结果还存在着较大 的误差,电路设计还有待于进一步的完善,各部分电路的稳定性也有待于进一步的提 高,希望通过更进一步的研究和学习,实现用更少的元件,设计出更加合理、更高效 的电路。 附录: 1 总原理图
17、
2 程序清单
主程序模块 #include
18、init() { TMOD=0x01;/* 定时器 T0方式 1(16位计数器) */ /* 公式为: x=65536-fosc/12*t 65536-50000=15536 其中x为定时初值, fosc 为晶振频率, t 为定时时间 */ TH0=15536/256; /* 定时器高位 */ TL0=15536%256; /*定时器低位 , 定时时间为 50ms , 20次为1s */ ET0=1;/* 允许定时器 T0中断 */ TR0=1;/* 开定时器 T0*/ EA=1;/* 开总中断 */ } void main() { unchar dat; uncha
19、r tab[3]; time_init(); while(1) { dat=get_adc_value(); value_done(dat,tab,ID); led_display(tab[0],tab[1],tab[2]); } } void timer0() interrupt 1 { TR0=0; TH0=15536/256; TL0=15536%256; /* 重装初值 */ count++; /* 计数,累加中断次数 */ if(count==20) /* 判断是否到 10次,即 0.5s*/ { count=0; ID++; /* 转换下一个显示 *
20、/ if(ID==3) ID=0; 11 TR0=1; } A/D 转换模块:(头文件) #ifndef __ADC0804_H__ #define __ADC0804_H__ #ifndef unchar #define unchar unsigned char #endif #ifndef unint #define unint unsigned int #endif #define adc_databus P1 //the databus of ADC sbit cs_adc=P2^0; sbit wr=P3^6; sbit rd=P3^7; //to cho
21、ose the chip ADC0804 //wr# signal //rd# signal void value_done(unint tvdata,unchar led[],unchar ID) unint temp; //temp=(unint)(tvdata*1.0/255*500); temp=(unint)(tvdata*2); switch(ID) { case 0: //有效值 break; case 1: //峰值 temp*=sqrt(2); break; default: //其他情况 break; } led[0]=(temp/100)%10;
22、//最高位 led[1]=(temp/10)%10; led[2]=temp%10; //最低位 if(led[0]>10||led[0]<0) led[0]=11; if(led[1]>10||led[1]<0) led[0]=11; if(led[2]>10||led[2]<0) led[0]=11; 12 unchar get_adc_value(void) { unchar k; unint tvdata; // adc0804 start // cs_adc=0; k=k; //nop wr=0; k=k; wr=1; k=k; cs_adc=1; k=k;k=k;k
23、=k; // read value of adc0804 // adc_databus=0xff; cs_adc=0; k=k; rd=0; k=k; tvdata=adc_databus; rd=1; k=k; cs_adc=1; k=k; return tvdata; } #endif 显示模块(头文件) #ifndef __SMGDIS_H__ #define __SMGDIS_H__ #ifndef unchar #define unchar unsigned char #endif #ifndef unint #define unint unsigned int
24、 #endif /* 全局变量定义 */ #define DataBus P0 //数据口定义 sbit c0=P2^1; //数码管 0 控制脚 sbit c1=P2^2; //数码管 1 控制脚 sbit c2=P2^3; //数码管 2 控制脚 void delay(void) { unchar i; unchar t=1; while(t--) 13 for(i=0;i<125;i++); } void led_display(unchar a,unchar b,unchar c) { /*共阳数码管数字码 0~9+全暗码 */ Unchar code tab0[
25、12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x86}; DataBus=(tab0[a]&0x7f);/* 送显示码,由 a 控制 */ c0=0; /* 选通数码管 0*/ delay(); DataBus=0xff; c0=1; DataBus=tab0[b];/* 送显示码,由 b 控制*/ c1=0; /* 选通数码管 1*/ delay(); DataBus=0xff; c1=1; DataBus=tab0[c];/* 送显示码,由 c 控制*/ c2=0; /* 选通数码管 2*/ delay(); DataBus=0xff; c2=1; } #endif 3 实物图 14
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 36个关键词详解2025政府工作报告
- 学习2025年政府工作报告中的八大科技关键词
- 2025年政府工作报告要点速览接续奋斗共谱新篇
- 学习2025政府工作报告里的加减乘除
- 深化农村改革党课ppt课件(20250305)
- 弘扬雷锋精神凝聚奋进力量学习雷锋精神的丰富内涵和时代价值
- 深化农村改革推进乡村全面振兴心得体会范文(三篇)
- 2025年民营企业座谈会深度解读PPT课件
- 领导干部2024年述职述廉述责述学述法个人报告范文(四篇)
- 读懂2025中央一号党课ppt课件
- 2025年道路运输企业主要负责人安全考试练习题[含答案]
- 2024四川省雅安市中考英语真题[含答案]
- 2024湖南省中考英语真题[含答案]
- 2024宁夏中考英语真题[含答案]
- 2024四川省内江市中考英语真题[含答案]