电子综合设计实验报告-数字显示恒流电流源设计.doc

电子综合设计实验报告-数字显示恒流电流源设计.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
物理与电子信息工程学院 实验报告 实验课程名称:电子综合设计实验 实验项目名称:数字显示恒流电流源设计 班 级: 姓 名: 学 号: 成 绩:______________ 实 验 时 间: 2011.11.1 实验目的 (1)掌握数字直流电压表的工作原理。 (2)掌握单片机的使用方法。 (3)掌握程序的编写、调试和下载方法。 (4)学会分析、观察及调式电路。 仪器设备 AT89C51单片机 1 个 ADC0809 1个 LM324运放 1个 9013三极管 1个 11.0592M晶振 1个 四位共阴极数码管 1个 22pF瓷片电容 2个 10uF电解电容1个 排阻 1k*8 1个 10k电阻若干 3、基本要求: (1)设计一个能输出电流0-0.5 A可调的恒定电流源; (2)用2个或更多的LED数字显示电流的大小; (3)要求带50欧姆的负载测量; 4、实验原理与方法 1)AT89C51功能简介: 4Kbytes闪存,128字节RAM,32个I / O线,两个16位定时/计数器,五向量两级中断结构,一个全双工串行通信口,片内振荡器和时钟电路。此外,AT89C51 降至0Hz 的静态逻辑操作,并支持两种软件可选的节电模式。空闲模式时CPU停止工作,而RAM,定时/计数器,串行口和中断系统,温度继续运作。掉电模式保存RAM的内容,但冻结振荡器关闭,直到下一个硬件复位芯片其它功能。 AT89C51 原理方框图: 2)、电路原理图: 1、晶振电路部分: 2、AD采样电路部分: 3、显示电路部分: 4)、电流测量部分电路部分: 5)、恒定电流产生部分电路: 6、系统总体电路图: 实验步骤及内容: 按照原理图在proteus上搭建电路图; 按程序流图编写程序,在proteus上仿真,并调试成功,得到符合要求的仿真结果; 按照原理图在面包板上搭建电路; 将程序下载到单片机中,检查电路后,接通电源,调试电路直到得到满意的实验结果。 记录、分析结果; 6、实验结果: (1)设计出了一个能输出电流0-0.5 A可调的恒定电流源; (2)用3个LED数字显示电流的大小; (3)要求带50欧姆的负载测量,在张变负载的情况下,电流不张变,实现了恒流的效果。 7、程序: #include reg52.h #define uint unsigned int #define uchar unsigned char uchar code LEDData[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; sbit OE = P1^0; sbit EOC = P1^1; sbit ST = P1^2; sbit CLK = P1^3; void DelayMS(uint ms) { uchar i; while(ms--) { for(i=0;i120;i++); } } void Display_Result(uint d) { P2 = 0xf7; //1111 0111 第四个数码管显示个位数 P0 = LEDData[d%10]; //显示个位数 DelayMS(5); P2 = 0xfb; //1111 1011 第三个数码管显示十位数 P0 = LEDData[d%100/10]; DelayMS(5); P2 = 0xfd; //1111 1101 第二个数码管显示百位数 P0 = LEDData[d/100]; DelayMS(5); } void main() { TMOD = 0x02;//定时器1的工作方式2:8位初值自动重装的8位定时器/计数器 TH0 = 0x14;//装初值 TL0 = 0x00; IE = 0x82;//1000 0010开总中断并允许T0中断 TR0 = 1; //启动中断 while(1) { ST = 0; ST = 1; ST = 0; while(EOC == 0); OE = 1; OE = 1; P1 = 0x2f;//0010 1111 选择通道1输入 Display_Result(P3*1/255*500); OE = 0; } } void Timer0_INT() interrupt 1 //脉冲 { CLK = !CLK; }

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档