小弟写这些是为了让初学者更好更快的入门,分享我的学习经历和积累的经验,与大家共同学习进步,希望大家也努力分享自己的知识,因为知识是人类进步的财富,希望大家最终能把自己学到的知识更好地转化为自己的学习经验!达到学以致用的目的!
首先谈谈数码管的点亮:数码管的点亮可以说是最基础的控制入门,一是可以让大家了解单片机可以做什么,二是可以激发自己的学习兴趣!
/*
8个发光管间隔200ms依次循环点亮,反过来重复一次,
然后全部熄灭,间隔300MS全部闪烁5次。
间隔300ms先奇数亮再偶数亮,循环3次;
两个从两边往中间流动3次,再从中间往两边流动3次;
全部闪烁5次;
*/
#include"reg51.h"
#include"intrins.h" //包含有左右循环位移的函数库
#define uchar unsigned char
#define uint unsigned int
void delay(uint z) //延时函数delay(100)大约100MS
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
uchar a,i,j;
while(1)
{
for(j=0;j<2;j++) //左右循环2次
{
a=0xfe;
for(i=0;i<8;i++) //循环点亮
{
P0=a;
delay(200);
a=_crol_(a,1);
}
a=0x7f;
for(i=0;i<8;i++)
{
P0=a;
delay(200);
a=_crol_(a,1);
}
}
P0=0xff; //全部关掉
for(j=0;j<10;j++)
{
delay(300);
P0=~P0; //全部闪烁5次
}
for(j=0;j<2;j++) //左右循环2次
{
a=0xfe;
for(i=0;i<3;i++) //循环点亮
{
P0=a;
delay(200);
a=_crol_(a,2);
}
a=0x7f;
for(i=0;i<3;i++)
{
P0=a;
delay(200);
a=_crol_(a,2);
}
}
P0=0xff;
for(j=0;j<3;j++) //从两边往中间流动
{
P0=0x7e;
delay(300);
P0=0xbd;
delay(300);
P0=0xdb;
delay(300);
P0=0xe7;
delay(300);
}
P0=0xff;
for(j=0;j<3;j++) //从两边往中间流动
{
P0=0xe7;
delay(300);
P0=0xdb;
delay(300);
P0=0xbd;
delay(300);
P0=0x7e;
delay(300);
}
P0=0xff;
for(i=0;i<10;i++) //间隔300MS闪烁5次
{
P0=~P0;
delay(300);
}
P0=0xff;
}
}
文章评论(0条评论)
登录后参与讨论