努力学习Day7【单片机部分】

        今天来哥不一样的,单片机部分!这一期的话,会比较有意思在我看来,我是真的很喜欢单片机啦哈哈哈哈哈!

学习过的知识要及时巩固,符合记忆曲线的复习,才能牢记到心里

——————————————————————————————————————————

我选择的第一个项目案例是:跑马灯

这个案例算是特别基础的案例,让我稍微回忆一下

ps:我使用的是普中的开发板

首先我们得要求他要怎么闪,亮灭闪三下,然后全灭,接者跑马,依次点亮,再一次熄灭。

那么开始吧!

首先,我们先设定延时函数,用我们的软件设定的延时函数如下

void Delay1ms()		//@12.000MHz
{
	unsigned char i, j;

	i = 12;
	j = 169;
	do
	{
		while (--j);
	} while (--i);
}

我喜欢把这个函数给修改一下,并且将其模块化,创建一个新的delay.c和一个新的delay.h

delay.c如下:

#include <REGX52.H>

void Delay(unsigned int xms)		//@12.000MHz
{
    unsigned char i, j;
    while(xms--)
    {	i = 12;
        j = 169;
        do
        {
            while (--j);
        } while (--i);
    }

}

不过如果想在主函数main中调用这个函数,我们需要为delay创建一个头文件delay.h如下

#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int xms);


#endif

ok,我们的预处理完成,接着就是编写我们的主程序了:

#include <REGX52.H>
#include "delay.h"    //调用我们上面所定义的delay头文件

void LEDrunning()  //定义跑马灯函数
{
    int i;
    for(i=0;i<3;i++)
        {
            P2=0x00;        //全亮 0000 0000
            Delay(100);
            P2=0xff;
            Delay(100);       //亮,持续1000ms,灭持续100ms,总共执行三次
        }
     
    for(i=0;i<8;i++)
        {
            P2=0xff<<i ;  /*依次点亮,1111 1111向左移动,下一位为1111 1110
                               依次类推 1111 1100,高位的1向左走,低位补0 */
            Delay(100);  //必须要加延时避免现象过快无法观察到
        }
    for(i=0;i<8;i++)
        {
            P2=~(0xff<<i) ;   //与上述相反,0000 0000 则会变为0000 0001这样就实现了依次点灭
            Delay(100);
        }
    
}
int main()
{
    while(1)
    {
        LEDrunning();   //调用运行跑马灯函数
    }
}

那么我们上电看看他的效果!

完美! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值