现代电子技术综合实验报告.docx
- 文档编号:7697660
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:17
- 大小:216.47KB
现代电子技术综合实验报告.docx
《现代电子技术综合实验报告.docx》由会员分享,可在线阅读,更多相关《现代电子技术综合实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
现代电子技术综合实验报告
电子科技大学电子工程学院
实验报告
实验名称现代电子技术综合实验
姓名:
学号:
评分:
教师签字
电子科技大学教务处制
电子科技大学
实验报告
学生姓名:
学号:
指导教师:
实验地点:
实验时间:
一、实验室名称:
电子技术综合实验室
二、实验项目名称:
现代电子技术综合实验
三、实验学时:
40
四、实验目的与任务:
1、熟悉系统设计与实现原理
2、掌握KEILC51的基本使用方法
3、熟悉SMARTSOPC实验箱的应用
4、连接电路,编程调试,实现各部分的功能
5、完成系统软件的编写与调试
五、实验器材
1、PC机一台
2、示波器、SMARTSOPC实验箱一套
六、实验原理、步骤及内容
(一)试验要求
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(!
(P3&0x04))
flag_keypress1=1;//P3.2被按下
while(!
(P3&0x04));//等待释放
}
}
voidkeypress2()interrupt2
{
if(!
(P3&0x08))
{
delay(10);//稍作延时,用于去抖
if(!
(P3&0x08))
flag_keypress2=1;//P3.3被按下
while(!
(P3&0x08));//等待释放
}
}
七、总结及心得体会
通过本次实验熟悉了系统设计与实现原理,基本掌握了KEILC51的基本使用方法,熟悉了SMARTSOPC实验箱的应用。
并且实现了各部分的功能完成系统软件的编写与调试。
八、对本实验过程及方法、手段的改进建议
九、附录
#include
#include
#include
#include
#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!
=0);
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;
}
else
{
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()
{
CS=1;
CLK=0;
DAT=1;
ReadAdc();
}
/*
函数:
Delay()
功能:
延时tms
*/
voidDelay(unsignedintt)
{
do
{
TH0=0xFA;
TL0=0x24;
TR0=1;
while(!
TF0);
TR0=0;
TF0=0;
}while(--t!
=0);
}
/*
函数:
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;
TR1=1;
XBYTE[0x7800]=0xFF;
XBYTE[0x7801]=~DispBuf[n];
XBYTE[0x7800]=~com[n];
n++;
n&=0x07;
if(f==1)
{
temp++;
if(temp>=PWM_MAX)temp=0;
if(temp<=PwmValue)
{
P0=0x00;
}
else
{
P0=0xff;
}
}
}
/*
函数:
SysInit()
功能:
系统初始化
*/
voidSysInit1()
{
TMOD&=0xF0;
TMOD|=0x01;
DispInit();
}
voidSysInit2()
{
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);
}
voidSysInit3()
{
TMOD&=0xF0;
TMOD|=0x01;
TMOD&=0x0F;
TMOD|=0x10;
PwmValue=ReadAdc();
P0=0xff;
TH1=0xFF;
TL1=0x00;
TR1=1;
ET1=1;
EA=1;
DispInit();
AdcInit();
Delay(100);
}
voidmain()
{
for(;;)
{
unsignedchars[]="12345678-";
unsignedchari;
unsignedcharx;
unsignedcharaa;
bitdp;
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,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+'0',1);
DispChar(7,g+'0',0);
Delay(100);
}
SysInit3();
for(;;)
{
f=1;
v=ReadAdc();
DispVol(v);
Delay(100);
PwmValue=v/5;
if(KEY2==0)break;
}
}
}
说明:
实验报告和可以运行的程序,都以电子档的形式打包发到我的邮箱(hongfeizhao@)即可。
不交纸质件的报告。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代 电子技术 综合 实验 报告