现代电子技术综合实验报告文档格式.docx

上传人:b****6 文档编号:20822767 上传时间:2023-01-25 格式:DOCX 页数:17 大小:216.47KB
下载 相关 举报
现代电子技术综合实验报告文档格式.docx_第1页
第1页 / 共17页
现代电子技术综合实验报告文档格式.docx_第2页
第2页 / 共17页
现代电子技术综合实验报告文档格式.docx_第3页
第3页 / 共17页
现代电子技术综合实验报告文档格式.docx_第4页
第4页 / 共17页
现代电子技术综合实验报告文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

现代电子技术综合实验报告文档格式.docx

《现代电子技术综合实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《现代电子技术综合实验报告文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

现代电子技术综合实验报告文档格式.docx

(一)试验要求

1)、程序开始后:

当核心板上LED的D1~D8只有第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.0开始倒计时,计时到0.0后程序自动进入任务3.

3)、核心板上数码管其余不显示,第6、7、8位显示三位电压值(0.00~2.49V),增减调节电压值,LED1亮度跟随变化。

按按键进入任务1。

(二)实验内容

1、硬件设计

2、

各部分硬件原理

数码管动态扫描原理:

动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。

选亮数码管采用动态扫描显示。

所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。

动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

PWM调节LED亮度工作原理:

PWM信号波形是一系列占空比可调的方波脉冲。

该信号经低通滤波器后,可得到一个电压与占空比成正比的直流电压信号,当方波频率达到50Hz以上是,人眼基本无法觉察到闪烁,只能感觉到平均亮度(相当于低通滤波器)。

I2C工作原理:

I2C总线由两根信号线组成,一根是串行数据线SDA,另一根是串行时钟线SCL。

I2C总线信号的连接方法如下图所示。

一般具有I2C总线的器件其SDA和SCL引脚都是漏极开路(或集电极开路)输出结构。

因此实际使用时,SDA和SCL信号线都必须接上拉电阻。

上拉电阻一般取值3-10KΩ。

ADC工作原理及应用:

3、软件设计

(三)思考题

程序任务跳转的按键改用外部中断模式,电路如何修改(画示意图)?

程序如何修改,写出中断服务程序。

答:

将KEY1与KEY2键通过跳线分别接到P3.2(INT0)与P3.3(INT1)接口上。

示意图及程序如下。

图7示意图

开启中断:

SysInit()

{

EA=0;

//禁止总中断

EX1=1;

//使能/INT1中断

EX0=1;

//使能/INT0中断

EA=1;

//使能总中断

}

中断服务程序:

voidkeypress1()interrupt0

{

if(!

(P3&

0x04))

delay(10);

//稍作延时,用于去抖

if(!

flag_keypress1=1;

//P3.2被按下

while(!

0x04));

//等待释放

}

voidkeypress2()interrupt2

{

0x08))

if(!

flag_keypress2=1;

//P3.3被按下

while(!

0x08));

七、总结及心得体会

通过本次实验熟悉了系统设计与实现原理,基本掌握了KEILC51的基本使用方法,熟悉了SMARTSOPC实验箱的应用。

并且实现了各部分的功能完成系统软件的编写与调试。

八、对本实验过程及方法、手段的改进建议

九、附录

#include<

reg51.h>

ctype.h>

absacc.h>

intrins.h>

#include"

VolTab.h"

#definePWM_MAX50

#defineucharunsignedchar

unsignedcharv;

unsignedcharf;

unsignedcharsw;

unsignedcharg;

unsignedcharm;

unsignedcharDispBuf[8];

unsignedcharPwmValue;

sbitKEY2=P2^0;

sbitCS=P1^5;

sbitDAT=P1^7;

sbitCLK=P1^6;

/*

函数:

ReadAdc()

功能:

读取A/D转换结果

*/

unsignedcharReadAdc()

unsignedchard;

unsignedcharn;

CS=0;

n=5;

while(--n!

=0);

n=8;

do

d<

<

=1;

if(DAT)d++;

CLK=1;

CLK=0;

}while(--n!

CS=1;

returnd;

DispClear()

清除数码管的所有显示

voidDispClear()

unsignedchari;

for(i=0;

i<

8;

i++)

DispBuf[i]=0x00;

}

DispChar()

在数码管上显示字符

voidDispChar(unsignedcharx,unsignedcharc,bitdp)

codeunsignedcharTab[]=

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71

};

unsignedchart;

x&

=0x07;

x=7-x;

if(c=='

-'

t=0x40;

else

t=toint(c);

if(t<

16)

{

t=Tab[t];

}

else

t=0x00;

if(dp)

t|=0x80;

t&

=0x7F;

DispBuf[x]=t;

DispStr()

在数码管上显示字符串

voidDispStr(unsignedcharx,unsignedchar*s)

unsignedcharc;

for(;

;

c=*s;

if(c=='

\0'

)break;

s++;

DispChar(x,c);

x++;

DispDotOn()

显示指定位的小数点

参数:

x为数码管坐标

voidDispDotOn(unsignedcharx)

DispBuf[7-x]|=0x80;

DispInit()

数码管扫描显示初始化

voidDispInit()

DispClear();

EA=0;

TMOD&

=0x0F;

TMOD|=0x10;

TH1=0xFC;

TL1=0x66;

TR1=1;

ET1=1;

EA=1;

AdcInit()

初始化ADC接口

voidAdcInit()

CLK=0;

DAT=1;

ReadAdc();

Delay()

延时tms

voidDelay(unsignedintt)

TH0=0xFA;

TL0=0x24;

TR0=1;

while(!

TF0);

TR0=0;

TF0=0;

}while(--t!

DispVol()

将ADC值转换成电压值,并显示

v:

8位ADC结果

voidDispVol(unsignedcharv)

DispStr(5,VolTab[v]);

DispDotOn(5);

T1INTSVC()

定时器T1的中断服务函数

voidT1INTSVC()interrupt3

staticunsignedchartemp=0;

codeunsignedcharcom[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

staticunsignedcharn=0;

TR1=0;

TH1=0xFF;

TL1=0x00;

XBYTE[0x7800]=0xFF;

XBYTE[0x7801]=~DispBuf[n];

XBYTE[0x7800]=~com[n];

n++;

n&

if(f==1)

temp++;

if(temp>

=PWM_MAX)temp=0;

if(temp<

=PwmValue)

P0=0x00;

P0=0xff;

SysInit()

系统初始化

voidSysInit1()

=0xF0;

TMOD|=0x01;

DispInit();

voidSysInit2()

DispChar(0,'

0'

0);

DispChar(1,'

9'

DispChar(2,'

DispChar(3,'

DispChar(4,'

DispChar(5,'

voidSysInit3()

PwmValue=ReadAdc();

P0=0xff;

AdcInit();

Delay(100);

voidmain()

for(;

unsignedchars[]="

12345678-"

unsignedcharx;

unsignedcharaa;

bitdp;

while(KEY2==0);

SysInit1();

dp=0;

f=0;

aa=0x7f;

for(;

{

for(i=0;

P0=aa;

aa=_cror_(aa,1);

for(x=0;

x<

x++)

{

if(x==i)

DispChar(x,s[i],dp);

else

DispChar(x,s[8],dp);

}

if(KEY2==0)break;

Delay(500);

}

if(KEY2==0)break;

SysInit2();

for(m=50;

m>

0;

m--)

P0=0xFF;

sw=m/10;

g=m%10;

DispChar(6,sw+'

1);

DispChar(7,g+'

Delay(100);

SysInit3();

f=1;

v=ReadAdc();

DispVol(v);

PwmValue=v/5;

if(KEY2==0)break;

说明:

实验报告和可以运行的程序,都以电子档的形式打包发到我的邮箱(hongfeizhao@)即可。

不交纸质件的报告。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1