当前位置:文档之家› AVR单片机程序

AVR单片机程序

* 文件名:闪烁灯.c* 杜邦线接法:用单条杜邦线把PD.0和J38的1端相连接。

***********************************************************************/ #include <avr/io.h>#define F_CPU 8000000 //这里的值是单片机工作的相关晶振频率#include <util/delay.h>#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 <avr/io.h>#define F_CPU 8000000 //这里的值是单片机工作的相关晶振频率#include <util/delay.h>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 <avr/io.h>#define F_CPU 8000000 //这里的值是单片机工作的相关晶振频率#include <util/delay.h>#define uchar unsigned charint 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 <avr/io.h>#define F_CPU 8000000 //这里的值是单片机工作的相关晶振频率#include <util/delay.h>#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口赋值高电平PORTB = 0x0f; //PB口赋值高电平while(1){ /*南北红灯亮、东西绿灯亮、持续时20秒*/LED1L; LED2M; LED3M;LED4M; LED5M; LED6L;LED7L; LED8M; LED9M;LED10M; LED11M; LED12L;/*这里,我们调用_delay_ms()函数的时候,参数不要过大,最好不要超过1000,怕引起溢出*/for(i=0;i<20;i++){_delay_ms(1000); //延时20个1秒,总共时间20秒}/*南北红灯亮、东西黄灯亮、持续时间5秒*/LED1L; LED2M; LED3M;LED4M; LED5L; LED6M;LED7L; LED8M; LED9M;LED10M; LED11L; LED12M;for(i=0;i<5;i++){_delay_ms(1000);}/*南北绿灯亮、东西红灯亮、持续时间20秒*/LED1M; LED2M; LED3L;LED4L; LED5M; LED6M;LED7M; LED8M; LED9L;LED10L; LED11M; LED12M;for(i=0;i<20;i++){_delay_ms(1000);}/*南北黄灯亮、东西红灯亮、持续时间5秒*/LED1M; LED2L; LED3M;LED4L; LED5M; LED6M;LED10L; LED11M; LED12M;for(i=0;i<5;i++){_delay_ms(1000);}}}* 文件名: 数码管显示.c* 杜邦线接法:用8针排线把PD口和J12的1-8连接(PD.0接J12的1端)。

相关主题