现代电子技术综合实验报告文档格式.docx
《现代电子技术综合实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《现代电子技术综合实验报告文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
(一)试验要求
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@)即可。
不交纸质件的报告。