MicrochipStudio7教程_02-LED流水灯

木仔科技 2024-03-10 09:52:10

1.打开软件

2.软件中打开配套代码

File -> Open -> Project/Solution...

然后找到开发板配套资料包的项目文件:

加载中....

有时候软件会提示你更新ATmega_DFP的库,这里取消即可

此时可以看到项目已经打开了:

备注:这里打开此项目也可以直接在代码的文件目录里面,双击项目文件

双击一下main.c文件,可以看到整个代码的内容如下:

再看一下开发板流水灯对应的单片机引脚原理图:

6路发光二极管的流水灯,通过一个双排的排针短路到单片机的PF2~PF7口,这个时候跳线帽记得安装上,如上图红色框框。

通过下面发光二极管的原理图可以知道:

只要单片机的PF2~PF7输出低电平,对应的对应的灯即可点亮,电流通过灯D5-D10再到限流电阻R5-R10,然后再到单片机,使得灯亮起。

再看看芯片手册关于电流的说明:

此时我们使用了10K的电阻,满足条件,自己在设计发光二极管的时候,限流电阻最好不要过小,别导致单片机发热。

再看看代码:

首先还是头文件的定义:

#include <avr/io.h>

#define F_CPU 8000000UL //外部晶振设置

#include <util/delay.h>

再对灯口进行宏定义,这里使用蜂鸣器进行上电提示

#define LED PORTF

#define BEEL_ON  (PORTB |= 0x01)

#define BEEL_OFF (PORTB &= ~(0x01))

unsigned char i = 0;//tab 为设置F口输出的值,对应的低、高电平可以点亮、熄灭LED灯

unsigned char tab[16] =//此数据赋值到PF口

{0XFB,0XF3,0XE3,0XC3,0X83,0X03,0X03,0X83,0XC3,0XE3,0XF3,0XFB,0X55,0XAA,0X55,0XAA};

上面的数值赋值到PF口时,一个8位的数据刚好对应的PF 8个io(PF0~PF7),如下图:

如下图,跟第二个数据对比,第一个数据PF2输出低,第二个数据PF2和PF3输出低电平,其他数据一次类推。

/*******************************************************************************

* 函数名称: io_init()

* 入口参数: void

* 函数作者: 木仔科技

* 功能描述: IO口初始化

*******************************************************************************/

void io_init(void)

{

DDRB |= 0x01; //设置PB0为输出 蜂鸣器

PORTB &= ~(0x01);//PB0输出低电平

DDRF  = 0xFC;//LED灯口 PF2~PF7设置为输出

PORTF = 0xFC;//输出高电平即:1111 1100  所有灯不亮

}

/*******************************************************************************

* 函数名称: main()

* 入口参数: void

* 函数作者: 木仔科技

* 功能描述: 主函数

*******************************************************************************/

int main(void)

{

io_init();//io初始化

BEEL_ON;//蜂鸣器响

_delay_ms(100);//蜂鸣器响的时间,如何不习惯的,可以删除蜂鸣器响

BEEL_OFF;//蜂鸣器关闭

/* Replace with your application code */

while (1)

{

LED = 0X00;//灯全亮_delay_ms(1000);//延时LED = 0XFC;//灯全灭_delay_ms(1000);//延时

for(i = 0;i < 16;i ++)//循环数组共16个数据,赋值到F口,对应高低电平点亮或不点亮LED灯

{LED = tab[i];//从第一个数据开始0xFB->0xF3->0xE3->0xC3....._delay_ms(200);//延时,灯亮、灭时间}i = 0;//16个数据都赋值完了,又重新开始}

}

0 阅读:0

木仔科技

简介:产品开发,方案设计,电路板设计,电路研发,程序研发!