拨码开关控制流水灯实作报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《拨码开关控制流水灯》实作报告
班级:姓名:
一、任务描述:
利用一只拨码开关控制流水灯的流动方向。拨码开关往上拨动时,流水灯自左往右流动,拨码开关往下拨动时,流水灯自右往左流动。流动速度不限。
往上拨动
往下拨动
二、要完成本次任务,你需要把以下问题搞清楚:
1、硬件连接:
根据任务描述,共需要根导线连接LED灯,根导线连接拨码开关。共需要根导线。
2、程序设计:
(1)实验箱上拨码开关往上拨动时输出电平,用数字来表示。往下拨动时输出电平,用数字来表示。
(2)本例程序(需要/不需要)导入头文件
提示:是否用到了I/O口,P0、P1、P2或P3
)本例程序(需要
提示:是否需要移位,有要求做流水灯效果吗?
)本例程序(需要
(5)本例程序对流水灯流动速度不作要求,(需要/不需要)延时子函数。(6)本例程序(需要/不需要)对某些引脚进行位定义(单独使用)?有的话,是哪些脚?
(7)利用(if/while/for)基本语句和逻辑运算符来判断拨码开关当前状态是往上拨动,还是往下拨动;利用(if/while/for)基本语句来反复扫描拨码开关的状态。
(8)流水灯的三要素是:P1=a;
yanshi(数值);数值大小决定的led的
a=_cror_(a,1);或=_crol_(a,1);
3、把程序补充完整(假定拨码开关接P2.0脚,LED接P1脚)
#include< > //导入头文件,方便寻址//
# include< > //导入头文件,便于使用移位指令//
#define unsigned int //宏定义,简化程序//
void yanshi(uint); //声明子函数//
sbit k= ; //位定义单独使用的引脚//
uint a=0x ; //设置流水灯初值//
void main() //主函数//
{
(1) //死循环//
{
if(k= = ) //判断拨码开关状态//
{
P1= ; //将a值送给P1口//
yanshi( ); //延时//
a=_crol_(a,1); //a向左移动一位//
}
if(k= = ) //判断拨码开关状态//
{
P1= ; //将a值送给P1口//
yanshi( ); //延时//
a=_cror_(a,1); // a向右移动一位//
}
}
}
void yanshi(uint x) //延时子函数//
{
uint i,j;
for(i=x;i>0;i--)
for(j= ;j>0;j--);
}