您的位置 首页 解答

玩转单片机,你我都是菜鸟(续3)

好久没有更新博文了,由于晚上回家没有网所以很久没更新了,好不容易写的一篇突然断电没有保存,真够杯具的。电来了又重新写了。不知道最近

良久没有更新博文了,由于晚上回家没有网所以很久没更新了,十分困难写的一篇忽然断电没有保存,真够杯具的。电来了又从头写了。不知道最近还有没有人重视我。其实这我都不惦记了,期望群里的朋友苍茫的赶快找到方向,赶快都成为高手。假如你还重视我不知道是由于我的阅历仍是由于我前一篇的那些标题?前几篇写的一些我的阅历或许有些人看了,或许还会有同感,假如乐意能够跟着我的思路走,先完结我上篇博文说到的几个标题。至于我的阅历,假如你还感兴趣能够留言,我在后边再说说。。。。。。
下面开端第一个标题:流水灯
硬件条件:用51的P1口操控8个LED,1点亮,0平息。
(1)第1,3,5,7个灯半亮,其他的全亮。
(2)第1个亮1/8,第2个亮2/8,第3个亮3/8,第4个亮4/8,第5个亮5/8,第6个亮6/8, 第7个亮7/8,第8个全亮。
(3)一切的灯逐步从暗到全亮,再由全亮到暗。
(4)8个灯从第一个开端顺次渐亮,直到最终一个。再从最终一个起渐暗,直 到 第一个。如此循环往复。这才是真实的流水灯。

单片机初学者简直都做的一个试验便是流水灯试验,由于咱们都做,所以就觉得很简单,很多人对这个试验简直不屑。其实要完全的玩转这个试验也是很不简单的工作,不信看看你能不能完结下面的试验题,假如你能拿下它,那么你现已一只脚稳稳地踏入了单片机门槛,并且你必定不想再回头了,此刻现已有一部分人对你刮目相看了(包含我),由于就这几个标题算起来我想了有整整一天了,总算有个成果,并且还有一些问题,尤其是第(2)个标题作用很不显着。我把这几个标题的程序贴出来,期望咱们给点定见,咱们相互沟通,相互学习,相互辅导。
标题要求:第1,3,5,7个灯半亮,其他的全亮。
(1)程序:
#include
#defineucharunsignedchar
#defineledP1//led接在P1口
#defineTon40//基准脉宽0.04ms
ucharLEDflag=0;//大局变量,最大255,保存T0中止次数

voidinit();
voidled_on();
voidmain()
{
init();
while(1)
{

led_on();

}
}
voidinit()//定时器初始化
{
TMOD=0x02;//T0方法2,8位主动载入
TH0=256Ton;//T0初始值
TL0=256Ton;//重载值
TR0=1;//发动T0
ET0=1;//开T0,T1中止
EA=1;//大局中止答应
}

voidtime0_int()interrupt1using3//T0中止函数,中止1,运用工作组3
{
LEDflag++;//修正LEDflag
}

voidled_on()
{

if(LEDflag==0)//点亮8个灯
{
led=0x00;
}
if(LEDflag==12)//平息1,3,5,7灯
{
led=0x55;
}
}
标题要求:第1个亮1/8,第2个亮2/8,第3个亮3/8,第4个亮4/8,第5个亮5/8,第6个亮 6/8, 第7个亮7/8,第8个全亮。
(2)程序:
#include
#defineucharunsignedchar
#defineledP1//led接在P1口
#defineTon40//基准脉宽0.04ms
uchari,LEDflag=0;//大局变量,最大255,保存T0中止次数
//ucharcodeled_off[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
voidinit();
voidled_on();
voidmain()
{
init();
while(1)
{

led_on();

}
}
voidinit()//定时器初始化
{
TMOD=0x02;//T0方法2,8位主动载入
TH0=256Ton;//T0初始值
TL0=256Ton;//重载值
TR0=1;//发动T0
ET0=1;//开T0,T1中止
EA=1;//大局中止答应
}

voidtime0_int()interrupt1using3//T0中止函数,中止1,运用工作组3
{
LEDflag++;//修正LEDflag
}

voidled_on()
{
switch(LEDflag)
{
case32:led=0x00;
//为真时句子
break;
case64:led=0x01;
//为真时句子
break;
case96:led=0x03;
//为真时句子
break;
case128:led=0x07;
//为真时句子
break;
case160:led=0x0f;
//为真时句子
break;
case192:led=0x1f;
//为真时句子
break;
case224:led=0x3f;
//为真时句子
break;
case255:led=0x7f;
//为真时句子
break;
default:
//冗余句子
break;
}

}
标题要求:一切的灯逐步从暗到全亮,再由全亮到暗。
(3)程序:
#include
#defineucharunsignedchar
#defineledP1//led接在P1口
#defineTon40//基准脉宽0.04ms
ucharLEDflag=0;//大局变量,最大255,保存T0中止次数
voidinit();
voidled_on_off();
voidmain()
{
init();
while(1)
{

led_on_off();

}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/259712.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部