流水灯在Proteus下的仿真实现.docx
《流水灯在Proteus下的仿真实现.docx》由会员分享,可在线阅读,更多相关《流水灯在Proteus下的仿真实现.docx(18页珍藏版)》请在冰点文库上搜索。
流水灯在Proteus下的仿真实现
流水灯在Proteus下的仿真实现
重庆邮电大学
微处理器与嵌入式系统设计
课程实验报告
实验名称:
流水灯在Proteus下的仿真实现
学期:
2014-2015学年第2学期
班级:
学号:
学生姓名:
任课教师:
实验教室:
二〇一五年〇四月十四日
【实验名称】流水灯在proteus下的仿真实现
实验要求:
1、基本要求:
4个流水灯循环闪烁,1、3、2、4流水灯交替闪烁;
2、扩展要求:
8个流水灯依次闪烁,1、3、5、7、2、4、6、8流水灯交替闪烁,流水灯逐渐亮1、1-2、1-3、1-4、1-5、1-6、1-7、1-8。
实验目的:
1、熟悉proteus软件,了解proteus软件的结构组成和功能,掌握Proteus软件在单片机仿真中的应用,为开发、调试单片机应用系统做准备;
2、熟练掌握isis环境中电路图的绘制;
3、熟悉keilc51软件的程序设计方法;
4、掌握keilc51软件与proteus软件联合仿真调试的方法。
实验方法:
1、通过proteus软件绘制出由单片机和LED构成的仿真电路;
2、通过keil软件编写控制单片机并点亮LED的程序;
3、将keil生成的hex文件导入proteus中的单片机中,实现仿真。
4、观察仿真现象。
实验步骤:
1、打开软件:
双击ISIS7Professional图标,随后就进入了ProteusISIS集成环境。
2、添加元器件:
单击pickfromlibraries,通过搜索栏搜索所需元件(如:
AT89C52、LED),根据元件预览区域的显示,双击所需元件,元件则出现在原理图编辑环境的元件列表区。
用同样方法找出原理图所需全部元件。
3、放置元器件:
在元件列表区单击所需放置的元件,将鼠标置于图形编辑窗口该对象的欲放位置,单击鼠标左键,该对象完成放置。
同样方法放置原理图所需全部元件。
4、放置电源和地:
选择terminalmode选择电源和地,以放置元器件相同的放法放置电源和地。
5、连接电路。
6、编程:
通过keil软件编写控制单片机并点亮LED的程序。
7、导入:
将keil生成的hex文件导入proteus中的单片机中,实现仿真。
8、根据仿真现象优化代码。
实验效果:
1、4个流水灯循环闪烁,1、3、2、4流水灯交替闪烁;
2、8个流水灯依次闪烁,1、3、5、7、2、4、6、8流水灯交替闪烁,流水灯逐渐亮1、1-2、1-3、1-4、1-5、1-6、1-7、1-8;
实验代码:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharxx,i;
ucharcodetable[]={0xfe,0xfd,0xfb,0xf7};
voiddelayms(uint);
//延时
voiddelayms(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidmain()
{
while
(1)
{
//数组实现1、2、3、4个流水灯循环闪烁
for(i=0;i<4;i++)
{
P0=table[i];
delayms(500);
}
//总线控制1、3、2、4流水灯交替闪烁
P0=0xfe;
delayms(500);
P0=0xfb;
delayms(500);
P0=0xfd;
delayms(500);
P0=0xf7;
delayms(500);
//8个流水灯依次闪烁
xx=0xfe;
for(i=8;i>0;i--)
{
P0=xx;
delayms(500);
xx=_crol_(xx,1);
}
//1、3、5、7流水灯交替闪烁
xx=0xfe;
for(i=4;i>0;i--)
{
P0=xx;
delayms(500);
xx=_crol_(xx,2);
}
//2、4、6、8流水灯交替闪烁
xx=0xfd;
for(i=4;i>0;i--)
{
P0=xx;
delayms(500);
xx=_crol_(xx,2);
}
//流水灯逐渐亮1、1-2、1-3、1-4、1-5、1-6、1-7、1-8
xx=0xfe;
for(i=8;i>0;i--)
{
P0=xx;
delayms(500);
xx=xx<<1;
}
}
}
心得体会:
在实现实验要求时原打算使用循环移位函数,在真正实现时发现控制4个流水灯循环闪烁不同于控制8个流水灯,需要限制循环移动的位数,故使用了for循环进行限制。
在实现流水灯的过程中,进行思考,发现可以采用很多方法,如:
位控制、总线控制还可以设置数组,每次在数组中去总线端口的数据闪烁LED。
在进行循环移位时要注意》移位每次补0。
流水灯实验并不困难,但在实现过程中的思考是从未有过的。