标题:
带详细注释跑马灯源码 单片机输入输出端口控制实验
[打印本页]
作者:
wjcjy
时间:
2018-6-4 16:57
标题:
带详细注释跑马灯源码 单片机输入输出端口控制实验
实验一 单片机输入输出端口控制实验
用P1口作为输出口,接8位用作逻辑电平显示的发光二极管。设计程序使发光二极管间隔300ms先奇数亮再偶数亮,循环3次;一个发光二极管亮上下循环3次;两个分别从两边向中间流动3次;再从中间向两边流动3次;8个全部闪烁3次;关闭全部发光二极管,停止
有程序及注释
#include<reg52.h> //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{//delay(500);大约延时500ms.
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函数
{
uchar a,i,j;
for(j=0;j<3;j++) //寄偶交替
{
P1=0x55; //点亮小灯
delay(300); //延时300毫秒
P1=0xaa;
delay(300); //延时300毫秒
}
for(j=0;j<3;j++) //流水灯
{
a=0xfe;
for(i=0;i<8;i++)
{
P1=a; //点亮小灯
delay(300); //延时300毫秒
a=_crol_(a,1);
}
P1=0xff;
for(j=0;j<3;j++) //从两边往中间流
{
P1=0x7e; //点亮小灯
delay(300); //延时300毫秒
P1=0xbd;
delay(300); //延时300毫秒
P1=0xdb; //点亮小灯
delay(300); //延时300毫秒
P1=0xe7;
delay(300); //延时300毫秒
}
P1=0xff;
for(j=0;j<3;j++) //从中间往两边流
{
P1=0xe7; //点亮小灯
delay(300); //延时300毫秒
P1=0xdb;
delay(300); //延时300毫秒
P1=0xbd; //点亮小灯
delay(300); //延时300毫秒
P1=0x7e;
delay(300); //延时300毫秒
P1=0xff;
for(j=0;j<6;j++) //全部闪烁
{
P1=~P1; //点亮小灯
delay(300); //延时300毫秒
}
P1=0xff;
while(1);
}
思考题程序代码:
#include <reg52.h> //包含所需的头文件
#include <intrins.h>
#define uint unsigned int //定义类型别名为无符号的整型
#define uchar unsigned char //定义类型别名为无符号的字符型
void delayms(uint);//声明延时子函数
void main()
{
uint i,j;
uchar aa;// 定义一个变量给p1口赋值
aa=0xfe;//赋值11111110
for(i=0;i<3;i++)
{
P1=0x55; // 点亮所有奇数小灯
delayms(300);//延时300毫秒
P1=0xaa; //点亮所有偶数小灯
delayms(300); //延时300毫秒
}
for(i=0;i<3;i++)
{
for(j=0;j<7;j++)
{
P1=aa;//点亮第一个小灯
delayms(300);
aa=_crol_(aa,1);//将aa循环左移一位后赋值给aa循环7次
}
aa=0x7f;//把11101111赋值给aa
for(j=0;j<7;j++)
{
P1=aa;//点亮中间的小灯
delayms(300);//延时300ms
aa=_cror_(aa,1); //将aa循环左移一位后赋值给aa循环7次
}
}
for(i=0;i<3;i++)//两个分别从两边向中间依次点亮
{
P1=0x7e;
delayms(300);
P1=0xbd;
delayms(300);
P1=0xdb;
delayms(300);
P1=0xe7;
delayms(300);
}
for(i=0;i<3;i++)//从中间向两边依次点亮
{
P1=0xe7;
delayms(300);
P1=0xdb;
delayms(300);
P1=0xbd;
delayms(300);
P1=0x7e;
delayms(300);
}
for(i=0;i<3;i++)
{
P1=0x00;//全亮
delayms(300);//延时300ms
P1=0xff;//全灭
delayms(300);
}
while(1);
}
void delayms(uint xms)//延时子程序
{uint i,j;
for(i=xms;i>0;i--)//i=xms
for(j=110;j>0;j--);
}
复制代码
完整的Word格式文档51黑下载地址:
单片机实验.doc
(21 KB, 下载次数: 8)
2018-6-4 16:55 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1