版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学电子工程学院实验报告实验名称现代电子技术综合实验姓名:学号:评分:教师签字电子科技大学教务处制电子科技大学实验报告学生姓名:学号:指导教师:实验地点:实验时间:一、实验室名称:电子技术综合实验室二、实验项目名称:现代电子技术综合实验三、实验学时:40四、 实验目的与任务:1、熟悉系统设计与实现原理2、掌握 KEIL C51 的基本使用方法3、熟悉 SMART SOPC实验箱的应用4、连接电路,编程调试,实现各部分的功能5、完成系统软件的编写与调试五、 实验器材1、PC 机一台2、示波器、 SMART SOPC实验箱一套六、 实验原理、步骤及内容(一)试验 要求1)、程序开始后:当核
2、心板上LED 的 D1D8 只有第 1 个发光二极管亮时,同时第 1 个数码管显示数字 1,其余显示 - ;持续 0.5 秒之后,只有第 2 个发光二极管亮,同时第 2 个数码管显示数字 2,其余显示 - ;再过 0.5 秒,只有第 3 个发光二极管亮,同时第 3 个数码管显示数字 3,其余显示 - ; ;间隔 0.5 秒后,只有第 8 个发光二极管亮,同时第 8 个数码管显示数字 8,其余显示- 。此后进入循环状态。循环过程中,按按键进入任务 2。2)、停止任务1 中发光二极管显示,核心板上数码管的第1、2位显示学号最后二位,第 4、5、6 位显示 - 。第 7、8 位实现秒表功能,从 5.
3、0 开始倒计时,计时到 0.0 后程序自动进入任务 3.3)、核心板上数码管其余不显示,第6、7、8 位显示三位电压值( 0.002.49V),增减调节电压值, LED1 亮度跟随变化。按按键进入任务 1。(二)实验内容1、硬件设计2、各部分硬件原理数码管动态扫描原理:动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。 选亮数码管采用动态扫描显示。 所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选, 利用发光管的余辉和人眼视觉暂留作用, 使人的感觉好像各位数码管同时都在显示。 动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的
4、。U1P101P10P00P112P11P01P123P12P02P134P13P03P145P14P04P156P15P05P167P16P06P178P17P07INT 11 3INT 1P20INT 01 2INT 0P21T 01 4T 189C52P22P23T 11 5T 0P243 1P25E A/VPP261 9P27X11 8X2VCC9GNDRESETRXDRD1 7T XDRDAL E/PW R1 6W RPSE N39P0038P0137P0236P0335P0434P0533P0632P0721P2022P2123P2224P2325P2426P2527P2628P2
5、74 02 01 0 RXD1 1T XD3 0AL E2 9PSEN5 V654321091111111R1K123456780123456700000000PPPPPPPP0123456700000000PPP PP P PP1742053111DPYabcdefgd paaaafbfgbfgbfbggecedcedcecddd pd pd pd p0234CCCCDPY4-L ED68921LED0123PPPP2222PWM 调节 LED 亮度工作原理 : PWM 信号波形是一系列占空比可调的方波脉冲。该信号经低通滤波器后, 可得到一个电压与占空比成正比的直流电压信号, 当方波频率达到
6、 50Hz 以上是,人眼基本无法觉察到闪烁,只能感觉到平均亮度(相当于低通滤波器)。I2C 工作原理: I2C 总线由两根信号线组成,一根是串行数据线SDA ,另一根是串行时钟线SCL。I2C 总线信号的连接方法如下图所示。一般具有 I2C 总线的器件其 SDA 和 SCL 引脚都是漏极开路(或集电极开路)输出结构。因此实际使用时, SDA 和 SCL 信号线都必须接上拉电阻。上拉电阻一般取值 3-10K。ADC 工作原理及应用:3、软件设计(三)思考题程序任务跳转的按键改用外部中断模式,电路如何修改(画示意图)?程序如何修改,写出中断服务程序。答:将 KEY1 与 KEY2键通过跳线分别接到
7、P3.2(INT0)与P3.3(INT1) 接口上。示意图及程序如下。图7 示意图开启中断:SysInit()EA=0; / 禁止总中断EX1=1; / 使能 /INT1 中断EX0=1; / 使能 /INT0 中断EA 1; /使能总中断中断服务程序:void keypress1 () interrupt 0if(!(P3&0x04)delay(10);/稍作延时,用于去抖if(!(P3&0x04)flag_keypress1=1;/P3.2 被按下while(!(P3&0x04);/等待释放void keypress2 () interrupt 2if(!(P3&a
8、mp;0x08)delay(10);/ 稍作延时,用于去抖if(!(P3&0x08)flag_keypress2=1;/P3.3 被按下while(!(P3&0x08);/ 等待释放七、 总结及心得体会通过本次实验熟悉了系统设计与实现原理,基本掌握了KEILC51 的基本使用方法,熟悉了SMART SOPC 实验箱的应用。并且实现了各部分的功能完成系统软件的编写与调试。八、 对本实验过程及方法、手段的改进建议九、 附录#include <reg51.h>#include <ctype.h>#include <absacc.h>#include
9、 <intrins.h>#include "VolTab.h"#define PWM_MAX 50#define uchar unsigned charunsigned char v;unsigned char f;unsigned char sw;unsigned char g;unsigned char m;unsigned char DispBuf8;unsigned char PwmValue;sbit KEY2 = P20;sbit CS = P15;sbit DAT = P17;sbit CLK = P16;/*函数: ReadAdc()功能:读取A
10、/D 转换结果*/unsigned char ReadAdc()unsigned char d;unsigned char n;CS=0;n = 5;while ( -n != 0 );n = 8;dod <<= 1;if ( DAT ) d+;CLK = 1;CLK = 0;while ( -n != 0 );CS=1;return d;/*函数: DispClear()功能:清除数码管的所有显示*/void DispClear()unsigned char i;for ( i=0; i<8; i+ )DispBufi = 0x00;/*函数: DispChar()功能:在
11、数码管上显示字符*/void DispChar(unsigned char x, unsigned char c, bit dp)code unsigned char Tab =0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71;unsigned char t;x &= 0x07;x = 7 - x;if ( c = '-' )t = 0x40;elset = toint(c);if ( t < 16 )t = Tabt;elset = 0x00;if (
12、dp )t |= 0x80;elset&= 0x7F;DispBufx = t;/*函数: DispStr()功能:在数码管上显示字符串*/void DispStr(unsigned char x, unsigned char *s)unsigned char c;for (;)c = *s;if ( c = '0' ) break;s+;DispChar(x,c);x+;/*函数: DispDotOn()功能:显示指定位的小数点参数: x 为数码管坐标*/void DispDotOn(unsigned char x)DispBuf7-x |= 0x80;/*函数: D
13、ispInit()功能:数码管扫描显示初始化*/void DispInit()DispClear();EA=0;TMOD &= 0x0F;TMOD |= 0x10;TH1 = 0xFC;TL1 = 0x66;TR1 = 1;ET1 = 1;EA=1;/*函数: AdcInit()功能:初始化ADC 接口*/void AdcInit()CS=1;CLK = 0;DAT = 1;ReadAdc();/*函数: Delay()功能:延时t ms*/void Delay(unsigned int t)doTH0 = 0xFA;TL0 = 0x24;TR0 = 1;while ( !TF0 );
14、TR0 = 0;TF0 = 0; while ( -t != 0 );/*函数: DispVol()功能:将 ADC 值转换成电压值,并显示参数:v: 8 位 ADC 结果*/void DispV ol(unsigned char v)DispStr(5,V olTabv);DispDotOn(5);/*函数: T1INTSVC()功能:定时器T1 的中断服务函数*/void T1INTSVC() interrupt 3static unsigned char temp = 0;code unsigned char com = 0x01,0x02,0x04,0x08,0x10,0x20,0x4
15、0,0x80; static unsigned char n = 0;TR1 = 0;TH1 = 0xFF;TL1 = 0x00;TR1 = 1;XBYTE0x7800 = 0xFF;XBYTE0x7801 = DispBufn;XBYTE0x7800 = comn;n+;n &= 0x07;if(f=1)temp+;if ( temp >= PWM_MAX ) temp = 0;if ( temp <= PwmValue )P0 =0x00;elseP0= 0xff;/*函数: SysInit()功能:系统初始化*/void SysInit1()TMOD &= 0
16、xF0;TMOD |= 0x01;DispInit();void SysInit2()TMOD &= 0xF0;TMOD |= 0x01;DispInit();DispChar(0,'0',0);DispChar(1,'9',0);DispChar(2,'-',0);DispChar(3,'-',0);DispChar(4,'-',0);DispChar(5,'-',0);void SysInit3()TMOD &= 0xF0;TMOD |= 0x01;TMOD &= 0x0
17、F;TMOD |= 0x10;PwmValue = ReadAdc();P0 = 0xff;TH1 = 0xFF;TL1 = 0x00;TR1 = 1;ET1 = 1;EA=1;DispInit();AdcInit();Delay(100);void main()for(;)unsigned char s = "12345678-"unsigned char i;unsigned char x;unsigned char aa;bit dp;while (KEY2 = 0) ;SysInit1();dp = 0;f=0;aa=0x7f;for (;)for ( i=0; i<8; i+ )P0=aa;aa=_cror_(aa, 1);for ( x=0; x<8; x+ )if (x=i)DispChar(x,si,dp);elseDispChar(x,s8,dp);if (KEY2 = 0)Delay(500);break;if (KEY2 = 0)br
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论