单片机原理及应用课程设计-电阻测量(带程序版_第1页
单片机原理及应用课程设计-电阻测量(带程序版_第2页
单片机原理及应用课程设计-电阻测量(带程序版_第3页
单片机原理及应用课程设计-电阻测量(带程序版_第4页
单片机原理及应用课程设计-电阻测量(带程序版_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告 课程名称课程名称:单片机原理及应用课程设计 设计题目设计题目: 院院 系:系: 专专 业:业: 班班 级:级: 学生姓名学生姓名: 学学 号号: 指导教师评语指导教师评语: 指导教师签名: 年 月 日 成绩成绩 项项 目目 权权 重重 1、设计过程中出勤、学习态度等方面 0.2 2、课程设计质量与答辩0.5 3、设计报告书写及图纸规范程度0.3 成成 绩绩 评评 定定 总 成 绩 教研室审核意见: 教研室主任签字: 年 月 日 教学系审核意见: 主任签字: 年 月 日 摘 要 本设计电阻测量是利用A/D转换原理,将被测模拟量转换成数字量,并用数字方 式显示测量结果的电子测量仪表。

2、通常测量电阻都采用大规模的A/D转换集成电路, 测量精度高,读数方便,在体积、重量、耗电、稳定性及可靠性等方面性能指标均 明显优于指针式万用表。其中,A/D转换器将输入的模拟量转换成数字量,逻辑控 制电路产生控制信号,按规定的时序将A/D转换器中各组模拟开关接通或断开,保 证A/D转换正常进行。A/D转换结果通过计数译码电路变换成 BCD 码,最后驱动显 示器显示相应的数值。本系统以单片机AT89C52 为系统的控制核心,结合A/D转换芯 片ADC0809 设计一个电阻测量表,能够测量一定数值之间的电阻值,通过四位数码 显示。具有读数据准确,测量方便的特点。 关键词:关键词:单片机单片机( (

3、ATAT8989C C52)52); 电压;电压;A/DA/D转换;转换;ADCADC08090809 目录 设设计计要求要求.1 1 1 1、方案论证与对比、方案论证与对比.2 2 1.1 方案一 .1 1.2 方案二 .3 1.3 方案对比与比较 .3 2 2、系统硬件电路的设计、系统硬件电路的设计.3 3 2.1 振荡电路模块 .3 2.2 A/D 转换电路模块.4 2.2.1 主要性能.4 2.2.2 ADC0809 芯片的组成原理.4 2.2.3 ADC0809 引脚功能.5 2.3 主控芯片 AT89C52 模块 .6 2.3.1 主要功能特性.6 2.3.2 主要引脚功能 .7

4、2.4 显示控制电路的设计及原理 .9 3 3、程序设计、程序设计.1111 3.1 初始化程序 .11 3.2 主程序 .11 3.3 显示子程序 .11 3.4 A/D 转换测量子程序.12 4 4、调试及性能分析、调试及性能分析.1313 4.1 调试与测试 .13 4.2 性能分析 .13 5 5、元件清单.1414 6 6、总结与思考及致谢、总结与思考及致谢.1414 参考文献参考文献.1515 附一:原理图附一:原理图.1616 附二:程序附二:程序.1717 设计要求 电阻测量(需要简单的外围检测电路,将电阻转换为电压) 测量 100,1k,4.7k,10k,20k 的电阻阻值,

5、由数码管显示。 测试:误差 10%。 1 1、方案论证与对比、方案论证与对比 1.11.1 方案一方案一 利用单稳或电容充放电规律等,可以把被测电阻量的大小转换成脉冲的宽窄, 即脉冲的宽度 Tx 与 Rx 成正比。只要把此脉冲和频率固定不变的方波(以下称为时 钟脉冲)相与,便可以得到计数脉冲,将它送给数字显示器。如果时钟脉冲的频率 等参数合适,便可实现测量电阻。计数控制电路输出的脉冲宽度 Tx 应与 Rx 成正比, 其电路原理图及具体 555 单稳态触发器的构成及仿真如图 1 所示。 用 555 构成的单稳态电路在正常工作条件下输出脉冲的宽度 Tx 与 Rx 的函数 关系是: 3ln XX C

6、RT 所产生的时间误差可能达到百分之十五,再加上其他原因产生的误差,测量是 的时间延迟太大。 555 单稳态 电 路 A/D 转换 电路 译码-驱动-显示 电路 图 1 方案一原理图 1.2方案二 用 ADC0809电阻测量,以一个 1K 的电阻作为基准电阻。和被测电阻进行分 压,分压比例得出电阻比例。 = 2 1 R R 2 1 V V 用 ACD0809 测量电阻时间误差为%10 以下,分辨率高,输出能与 TTL 电平兼容。 其原理图如图 2 所示。 简易外围电路 A/D 转换电路 译码-驱动-显示 电路 图 2 方案二原理图 1.3方案对比与比较 由于课程设计的要求是电阻测量需要简单的外

7、围检测电路,将电阻转换为电压, 测量 100,1k,4.7k,10k,20k 的电阻阻值,由数码管显示。测试:误差 10%。通过比 较以上两个方案,可知方案二相对来说比较适合。所以选用方案二作为实验方案。 2 2、系统硬件电路的设计、系统硬件电路的设计 2.12.1 振荡电路模块振荡电路模块 振荡电路通过这两个引脚外并接石英晶体振荡器和两只电容(电容和一般取 33pF) ,这样就构成一个稳定的自激振荡器。为单片机提供时钟信号。如图 3 所示。 8051 XTAL1 XTAL2 C2 C1 图 3. 振荡电路 2.22.2 A/DA/D 转换电路转换电路模块模块 ADC0809 是采用逐次逼近式

8、原理的A/D转换器。 ADC0809 的工作过程是:首先输入 3 位地址,并使ALE=1,将地址存入地址锁存 器中。此地址经译码选通 8 路模拟输入之一到比较器。START上升沿将逐次逼近寄 存器复位。下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行。 直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存 器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的 数字量输出到数据总线上,9 电路图如图 4 所示。 图 4 A/D 转换电路原理图 2.2.12.2.1 主要性能主要性能 1 分辨率为 8 位二进制数。 2 模拟输入电压范围 0V

9、5V,对应A/D转换值为 00HFFH。 3 每路A/D转换完成时间为 100s。 4 允许输入 4 路模拟电压,通过具有锁存功能的 4 路模拟开关,可以分时进行 4 路A/D转换。 5 工作频率为 500kHz,输出与 TTL 电平兼容。 2.2.22.2.2 ADC0809ADC0809 芯片的组成原理芯片的组成原理 具体设计要求如图 5 所示,它是由地址锁存器、4 路模拟开关、8 位逐次 A/D 转换器和三态锁存输出缓冲器构成。由 3 位地址输入线 ADDRA、ADDRB、ADDRC 决定 4 路模拟输入中的 1 路进 8 位 A/D 转换器,A/D 转换值进入三态锁存输出缓冲 器暂存,

10、在 CPU 发来输出允许控制信号 OE 后,三态门打开,经 DB7DB0 进入 CPU 总线,完成一次 A/D 转换全过程。 图 5A/D 转换电路原路图 2.2.32.2.3 ADC0809ADC0809 引脚功能引脚功能 ADC0809 采用 28 引脚的封装,双列直插式。A/D 转换由集成电路 ADC0809 完 成。ADC0809 具有 8 路模拟输入端口,地址线(23 25 脚即 C,B,A,)可决定对 哪一路模拟输入作 A/D 转换。22 脚为地址锁存控制(ALE) ,当输入为高电平时, 对地址信号进行锁存。6 脚为测试控制(START) ,当输入一个 2us 宽高电平脉冲时, 就

11、开始 A/D 转换。7 脚为 A/D 转换结束标志(EOC) ,当 A/D 转换结束时,7 脚输出 高电平。9 脚为 A/D 转换数据输出允许控制(OE) ,当 OE 脚为高电平时,A/D 转换 数据从该端口输出。10 脚为 ADC0809 的时钟输入端(CLOCK) ,利用单片机 30 脚 的六分频晶振频率再通过 14024 二分频得到 1MHz 时钟。单片机的 P1、P3.0P3.3 端口作为四位 LED 数码管显示控制。P3.5 端口用作单路显示/循环显示转换按钮, P3.6 端口用作单路显示时选择通道。P0 端口作 A/D 转换数据读入用,P2 端口用作 ADC0809 的 A/D 转

12、换控制。 2.32.3 主控芯片主控芯片 AT89C52AT89C52 模块模块 AT89C52 是一个低电压,高性能CMOS 8 位单片机,片内含 8k bytes的可反 复擦写的Flash只读程序存储器和 256 bytes的随机存取数据存储器(RAM), 器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS51 指令 系统,片内置通用 8 位中央处理器和Flash存储单元,功能强大的AT89C52 单片 机可为您提供许多较复杂系统控制应用场合。 AT89C52 有 40 个引脚,32 个外部双向输入 /输出(I/O)端口,同时内含 2 个外中断口。 3 个 16 位可编程

13、定时计数器 ,2 个全双工串行通信口, 2 个读写口 线,AT89C52 可以按照常规方法进行编程,也可以在线编程。其将通用的微处理 器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低 开发成本。 如图 6 所示为AT89C52 管脚图。 图 6 AT89C52 管脚图 2.3.12.3.1 主要功能特性主要功能特性 与MCS51 产品指令和引脚完全兼容 8k字节可重擦写Flash闪速存储器 1000 次擦写周期 全静态操作: 0Hz24MHz 三级加密程序存储器 32 个可编程I/O口线 低功耗空闲和掉电模式 3 个 16 位定时/计数器 可编程串行UART通道

14、2.3.22.3.2 主要引脚功能主要引脚功能 VCC : 电源 GND: 地 P0 口:P0 口是一组 8 位漏极开路型双向I/O 口,也即地址 /数据总线复用 口。 P1 口:P1 口是一个具有内部上拉电阻的 8 位双向I/O口,P1 输出缓冲器能驱 动 4 个TTL逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以 作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输 出电流(IIL) 。此外,P1.0 和P1.2 分别作定时器/计数器 2 的外部计数输入 (P1.0/T2)和时器/计数器 2 的触发输入(P1.1/T2EX) 。 P2 口:P2 口是

15、一个具有内部上拉电阻的 8 位双向I/O口,P2 输出缓冲器能驱 动 4 个TTL逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以 作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输 出电流(IIL) 。在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执 行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部 上拉发送 1。在使用 8 位地址(如MOVX RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容。在flash编程和校验时,P2 口也接收高 8 位地址字节和一些控制 信号。 P1 口和P2

16、口的第二功能如下表 1 所示。 表 1 P0 和P1 口的第二功能 引脚号功能特性 P1.0 T2(定时/计数器 2 外部计数脉冲输入),时钟输 出 P1.1 T2EX(定时/计数 2 捕获/重载触发和方向控制) P3 口:P3 口是一个具有内部上拉电阻的 8 位双向I/O口,P3 口输出缓冲器能驱动 4 个TTL逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作 为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出 电流(IIL) 。P3 口亦作为AT89C52 特殊功能(第二功能)使用,在flash编程和校 验时,P3 口也接收一些控制信号。具体功能如

17、表 2 所示: 表 2P3 口的第二功能 端口引脚第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 外中断 0 P3.3 外中断 1 P3.4 T0(定时/计数器 0) P3.5 T1(定时/计数器 1) P3.6 外部数据存储器写选通 P3.7 外部数据存储器读选通 RST: 复位输入。晶振工作时,RST脚持续 2 个机器周期高电平将使单片机复位。 看门狗计时完成后,RST脚输出 96 个晶振周期的高电平。特殊寄存器AUXR(地址 8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。 ALE/PROG:地址锁存控制信号(ALE

18、)是访问外部程序存储器时,锁存低 8 位地 址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情 况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使 用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需 要,通过将地址为 8EH的SFR的第 0 位置 “1” ,ALE操作将无效。这一位置 “1” , ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标 志位(地址为 8EH的SFR的第 0 位)的设置对微控制器处于外部执行模式下无效。 PSEN:外部程序存储器选通信号(PSEN)是外部程

19、序存储器选通信号。当 AT89C52 从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而 在访问外部数据存储器时,PSEN将不被激活。 EA/VPP:访问外部程序存储器控制信号。为使能从 0000H到FFFFH的外部程序存 储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash 编程期间,EA也接收 12 伏VPP 电压。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 2.42.4 显示控制电路的设计及原理显示控制电路的设计及原理 显示子程序采用动态扫描法实现 4 位数码管的数值显示。测量所得的

20、A/D转 换数据放 70H77H内存单元中,测量数据在显示时须经过转换成为十进制BCD码放 在 78H7BH单元中,其中 7B存放通道标志数。寄存器R3 用作 8 路循环控制,R0 用作显示数据地址指针。 本系统显示部分采用 4 位数码管动态扫描显示。 动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路 是把所有显示器的 8 个笔划段a-h同名端连在一起,而每一个显示器的公共极COM 是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到 相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由 I/O控制 的,所以我们就可以自行决定何时显示哪

21、一位了。而所谓动态扫描就是指我们采用 分时的方法,轮流控制各个显示器的COM端,使各个数码管轮流点亮。本系统采用 4 位共阴极数码管,COM端接接P20P23 端,8 个笔划段a-h分别按顺序接P07 P00,轮流给P20P23 口低电平,使各个数码管轮流点亮。 在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约 1ms) ,但由 于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点 亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁 感。 显示控制电路由图 7 的 8255 芯片和图 8 的数码管显示电路两部分组成 图 78255 芯片 图

22、8 数码管显示电路 3 3、程序设计、程序设计 3.13.1 初始化程序初始化程序 void Init() ST = 0; OE = 0; a8255_CON=0 x81; PB=0 xff; PA=0 xff; 3.23.2 主程序主程序 void main() uchar I=0,J=0; uint RRR=0; Init(); while (1) Get_Resistance(); If(RRR=0)RRR=R_T; ; /计算平均值 else if(J=30)R=RRR;RRR=0;J=0; /J 为 30 个平均值 可改 else J+; Display(); 3.33.3 显示子程

23、序显示子程序 void Display() uchar A; uint B=10000; for(A=0 x02;A=0X40;A=1) if(R/B) if(A!=0X02)Delay(150); PB=0XFF; PA=0XFF; PB=LED_CODE(R%(B*10)/(B); PA=A; B/=10; 3.4 A/D 转换测量子程序 uchar Ad_Cover() uchar AD_DATA; ST = 0; ST = 1; /启动 AD 转换 ST = 0; while (EOC=0)CLK = CLK; OE = 1; AD_DATA = P0; OE = 0; return

24、AD_DATA; 4 4、系统调试与分析系统调试与分析 4.14.1 硬件调试硬件调试 硬件调试时可以检查印制板和外围电路是否有断路或短路问题,在检查无误的 情况下,通过外围电路接入一个被测电阻,检查数码管显示是否正常,若不正常, 用万用表检查出电路的问题所在,并纠正电路的焊接问题。 为了测量的精准度,用万用表选择的基准电阻,尽量使基准电阻接近1 ,减少测量的误差。1 4.2 软件调试软件调试 将用 keil 编译产生的 HEX 文件下载到单片机开发板中,通过外围电路接入一个 已知的被测电阻,看数码管上的显示数值是否接近已知的电阻值,若不对,则反复 调试程序,直到正确为止。 4.34.3 性能

25、分析性能分析 1.误差 W=100%,如表 3 所示。 0 |21| R RR 2.误差分析 AD 的分辨率只有八位,分辨率小,所以测量小电阻的时候误差小,随着测量电阻的 变大误差变大。 表 3 误差分析 电阻理想阻值 R(K)万用表测量值 R0(K) 模拟测量值 R1(K)误差 w 10.990.9950.5% 4.74.614.5650.98% 0.470.4610.4620.22% 5 5、元件清单、元件清单 元件名称类型或量程数量 芯片 AT89C52 1 片 芯片 8255 1 片 芯片 ADC0809 1 片 杜邦线2 根 万用表1 个 电阻1K、4.7K、0.47K各一个 电源线

26、供电电源线1 根 数码管 HSK 2 个 6 6、总结与思考及致谢总结与思考及致谢 这次单片机课程设计意义非同一般,把我从单深入的理论编程到硬件软件 综合实现一个使用的电路。通过这学期的单片机的学习,知道了单片机在实际应用 中占据很重要的作用,也了解单片机本身的功能,用编程控制;也了解了单片机的 一些扩展功能。通过这次设计,我更深入地了解到单片机的使用原理和功能。 为期两周的设计中,我看到很多同学都很努力,很认真,我也不敢懈怠。虽说 两周的时间有点仓促,但老师和同学们夜以继日在解决问题,我做电阻测量的设计 中也遇到些许问题,但通过他人的指点,并查阅很多有价值的书籍,我从中认识了 不少。也增强了

27、自己发现问题解决问题的能力。还有在编程的时候要仔细,要实现 一个完整的功能就要考虑全面,在测试程序的时候要善于发现错误,而且可能是一 些小问题,比如说把立即数和地址混用,这是很常见的。 两周的设计完满结束了,经过自己的努力和同学的帮忙终于有了成果,特别离 不开指导老师方智文的悉心教导,我受益匪浅,相信他的工作作风和知识筑成都是 我们学习榜样,给我很大的启迪。感谢这些老师不畏辛劳,热心精心的指导。在这 里向他们说声谢谢,你们辛苦了。 参考文献 1 张鑫. 单片微机原理与应用.M 北京.电子工业出版社. 2008 2 楼然苗.李光飞. 单片机课程设计指导. M北京.航空航天大学出版社. 2007

28、3 长洪润.刘秀英. 单片机应用设计 200 例(上、下) . M 北京.航空航 天大学出版社.2006 4 张毅刚. 新编MCS51 单片机应用设计(第3版) .M哈尔滨工业大学 出版社.2008 5 马静.单片机原理与应用. M 实践教学指导书中国计量出版社. 2003 附一:原理图 附二:程序 #include#include #define#define ucharuchar unsignedunsigned charchar #define#define uintuint unsignedunsigned intint sbitsbit STST = = P2P2 7;7; sbit

29、sbit EOCEOC = = P3P3 4;4; sbitsbit OEOE = = P2P2 3;3; sbitsbit CLKCLK = = P2P2 0;0; xdataxdata ucharuchar PAPA _at_at_ 0 xD1FF,0 xD1FF, PBPB _at_at_ 0 xD2FF,0 xD2FF, PCPC _at_at_ 0 xD5FF,0 xD5FF, a8255_CONa8255_CON _at_at_ 0 xD7FF;0 xD7FF; uintuint R=0,R_T;R=0,R_T; ucharuchar codecode LED_CODE=LED_C

30、ODE=0 xA0,0 xA0, 0 xBB,0 xBB, 0 x62,0 x62, 0 x2A,0 x2A, 0 x39,0 x39, 0 x2C,0 x2C, 0 x24,0 x24, 0 xBA,0 xBA, 0 x20,0 x20, 0 x28;0 x28; voidvoid Init()Init() STST = = 0;0; OEOE = = 0;0; a8255_CON=0 x81;a8255_CON=0 x81; PB=0 xff;PB=0 xff; PA=0 xff;PA=0 xff; ucharuchar Ad_Cover()Ad_Cover() ucharuchar AD_DATA;AD_DATA; STST = = 0;0; STST = = 1;1; STST = = 0

温馨提示

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

评论

0/150

提交评论