AVR单片机程序

  • 格式:docx
  • 大小:23.68 KB
  • 文档页数:33

AVR单片机程序

* 文件名 : 闪烁灯.c

* 杜邦线接法:用单条杜邦线把PD.0与J38的1端相连接。

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

#include

#define F_CPU 8000000 //这里的值是单片机工作的有关晶振频率

#include

#define LED1 PORTD|=~0XFE //LED=1 LED不亮

#define LED0 PORTD&=0XFE //LED=0 LED发光

int main(void)

{

DDRD = 0x01; //PD0定义为输出,PD的其他端口为输入。

while(1)

{

LED1;

_delay_ms(500);

LED0;

_delay_ms(500);

}

}

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

* 文件名 : 闪烁灯2.c

* 创建人 : 东流,2012年2月10日

* 版本号 : 1.0

* 杜邦线接法:用8针杜邦线把PD与J38的1--8连接(PD0对应J38的1端)。

用杜邦线把PB0对应J38的9端。

用杜邦线把PB1对应J38的10端。

用杜邦线把PB2对应J38的11端。

用杜邦线把PB3对应J38的12端。

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

#include

#define F_CPU 8000000 //这里的值是单片机工作的有关晶振频率

#include

int main(void)

{

DDRD = 0xff;

DDRB = 0x0f;

while(1)

{

/*北面的三个LED亮*/

PORTD = 0xf8;

PORTB = 0xff;

_delay_ms(300); /*东面的三个LED亮*/

PORTD = 0xc7;

PORTB = 0xff;

_delay_ms(300);

/*南面的三个LED亮*/

PORTD = 0x3f;

PORTB = 0xfe;

_delay_ms(300);

/*西面的三个LED亮*/

PORTD = 0xff;

PORTB = 0xf1;

_delay_ms(300);

/*北面的两个LED亮,中间一个不亮*/

PORTD = 0xfa;

PORTB = 0xff;

_delay_ms(300);

/*东面的两个LED亮,中间一个不亮*/

PORTD = 0xd7;

PORTB = 0xff;

_delay_ms(300);

/*南面的两个LED亮,中间一个不亮*/

PORTD = 0xbf;

PORTB = 0xfe;

_delay_ms(300);

/*西面的两个LED亮,中间一个不亮*/

PORTD = 0xff;

PORTB = 0xf5;

_delay_ms(300);

/*12个LED全亮*/

PORTD = 0x00;

PORTB = 0xf0;

_delay_ms(200);

/*12个LED全灭*/

PORTD = 0xff;

PORTB = 0xff;

_delay_ms(200);

/*12个LED全亮*/

PORTD = 0x00;

PORTB = 0xf0;

_delay_ms(200);

/*12个LED全灭*/

PORTD = 0xff;

PORTB = 0xff;

_delay_ms(200); _delay_ms(500); //延时0.5秒

}

}

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

* 文件名 : 闪烁灯2.c

* 描述 : 在LED上根据要求,进行不一致的显示。

* 杜邦线接法:用8针杜邦线把PD与J38的1--8连接(PD0对应J38的1端)。

用杜邦线把PB0对应J38的9端。

用杜邦线把PB1对应J38的10端。

用杜邦线把PB2对应J38的11端。

用杜邦线把PB3对应J38的12端。

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

#include

#define F_CPU 8000000 //这里的值是单片机工作的有关晶振频率

#include

#define uchar unsigned char

int main(void)

{

uchar i, temp;

DDRD = 0xff;

DDRB = 0x0f;

PORTB = 0xff;

PORTD = 0xff;

while(1)

{

temp = 0xf7;

for(i=0; i<4; i++)

{

PORTB = temp; //把值赋给P2口

_delay_ms(100); //延时(10毫秒 * j)秒

temp = temp >> 1; //值右移一位

temp = temp | 0x08;

}

PORTB = 0xff;

temp = 0x7f;

for(i=0; i<8; i++)

{

PORTD = temp; //把值赋给P1口

_delay_ms(100); //延时(10毫秒 * j)秒

temp = temp >> 1; //值右移一位

temp = temp | 0x80;

}

PORTD=0xff;

} }

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

* 文件名 : 闪烁灯2.c

* 杜邦线接法:用8针杜邦线把PD与J38的1--8连接(PD0对应J38的1端)。

用杜邦线把PB0对应J38的9端。用杜邦线把PB1对应J38的10端。

用杜邦线把PB2对应J38的11端。用杜邦线把PB3对应J38的12端。

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

#include

#define F_CPU 8000000 //这里的值是单片机工作的有关晶振频率

#include

#define uchar unsigned char

//定义北面的三个灯的两灭

#define LED1L PORTD&=0XFE //LED1=0 LED1红灯发光

#define LED2L PORTD&=0XFD //LED2=0 LED2黄灯发光

#define LED3L PORTD&=0XFB //LED3=0 LED3绿灯发光

#define LED1M PORTD|=~0XFE //LED1=1 LED红灯不亮

#define LED2M PORTD|=~0XFD //LED2=1 LED黄灯不亮

#define LED3M PORTD|=~0XFB //LED3=1 LED绿灯不亮

//定义东面的三个灯的两灭

#define LED4L PORTD&=0XF7 //LED4=0 LED4红灯发光

#define LED5L PORTD&=0XEF //LED5=0 LED5黄灯发光

#define LED6L PORTD&=0XDF //LED6=0 LED6绿灯发光

#define LED4M PORTD|=~0XF7 //LED4=1 LED红灯不亮

#define LED5M PORTD|=~0XEF //LED5=1 LED黄灯不亮

#define LED6M PORTD|=~0XDF //LED6=1 LED绿灯不亮

//定义南面的三个灯的两灭

#define LED7L PORTD&=0XBF //LED7=0 LED7红灯发光

#define LED8L PORTD&=0X7F //LED8=0 LED8黄灯发光

#define LED9L PORTB&=0XFE //LED9=0 LED9绿灯发光

#define LED7M PORTD|=~0XBF //LED7=1 LED红灯不亮

#define LED8M PORTD|=~0X7F //LED8=1 LED黄灯不亮

#define LED9M PORTB|=~0XFE //LED9=1 LED绿灯不亮

//定义西面的三个灯的两

#define LED10L PORTB&=0XFD //LED10=0 LED10红灯发光

#define LED11L PORTB&=0XFB //LED11=0 LED11黄灯发光

#define LED12L PORTB&=0XF7 //LED12=0 LED12绿灯发光

#define LED10M PORTB|=~0XFD //LED10=1 LED红灯不亮

#define LED11M PORTB|=~0XFB //LED11=1 LED黄灯不亮

#define LED12M PORTB|=~0XF7 //LED12=1 LED绿灯不亮

int main(void)

{ unsigned char i;

DDRD = 0xff; //PD口定义为输出

DDRB = 0x0f; //PB口定义为输出

PORTD = 0xff; //PD口赋值高电平