AVR单片机 mega128 例程大全.docx
《AVR单片机 mega128 例程大全.docx》由会员分享,可在线阅读,更多相关《AVR单片机 mega128 例程大全.docx(39页珍藏版)》请在三一办公上搜索。
1、AVR单片机 mega128 例程大全/16超声波LED显示 #include /PA0接控制引脚PA7接接收引脚 #include #define chao 100 longint time=0; void delay(long int z) inti,j; for(i=0;iz;i+) for(j=0;j100;j+); void main int o=0; DDRD=0xff; DDRA=0x0f; TCNT1H=0x00; TCNT1L=0x00; while(1) PORTA=0x0f; delay(1); PORTA=0x00; while(PINA&0x80)=0x00); TC
2、CR1B=0x03; while(PINA&0x80)=0x80); TCCR1B=0x00; time=TCNT1H*256+TCNT1L; TCNT1H=0x00; TCNT1L=0x00; if(timechao) if(timechao) if(timechao) o=500; while(o-) PORTD=0x08; /AD #include #include #define unint unsigned int #define unchar unsigned char #pragma data:code const 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0
3、x5e,0x79,0x71; unint mega128_ad unintaddata; DDRF&=BIT(0); PORTF&=BIT(0); ADMUX=0; ADCSRA=0X80; ADCSRA|=BIT(ADSC); while(!(ADCSRA&(BIT(ADIF); addata=ADCL; addata=addata+ADCH*256; returnaddata; void show(count) unchar temp1,temp2,temp3,temp4; temp1=count/1000; table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d
4、, temp2=(count%1000)/100; temp3=(count%100)/10; temp4=count%10; HC_595_OUT(tabletemp4); DDRB|=(14); PORTB|=(14); delay(10); DDRB|=(14); PORTB&=(14); HC_595_OUT(tabletemp3); DDRB|=(15); PORTB|=(15); delay(10); DDRB|=(15); PORTB&=(15); HC_595_OUT(tabletemp2); DDRB|=(16); PORTB|=(16); delay(10); DDRB|=
5、(16); PORTB&=(16); HC_595_OUT(tabletemp1); DDRB|=(17); PORTB|=(17); delay(10); DDRB|=(17); PORTB&=(17); void HC_595_OUT(count) PORTB&=(10); SPDR =count ; while(!(SPSR & (1SPIF); delay(10); PORTB|=(10); void delay(z) unintx,y; for(x=0;xz;x+) for(y=0;y200;y+); void main unintcount,chl; DDRC |= (17); P
6、ORTC &= (17); PORTB = 0x0F; DDRB |= (12)|(11)|(10); SPCR (1SPE)|(1MSTR)|(1SPR0)|(1SPR1); while(1) count=mega128_ad;/用参数代替老是出问题,这一点需要再次认知考虑 /*for(i=0;i4;i+) = ad3-i=shuzhi%10; shuzhi=shuzhi/10; */ show(count); /ADC #include #include #define unint unsigned int #define unchar unsigned char #pragma data
7、:code const 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; unint mega128_ad unintaddata; table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, DDRF&=BIT(0); PORTF&=BIT(0); ADMUX=0; ADCSRA=0X80; ADCSRA|=BIT(ADSC); while(!(ADCSRA&(BIT(ADIF); addata=ADCL; addata=addata+ADCH*256; returnaddata; void show(count) unch
8、ar temp1,temp2,temp3,temp4; temp1=count/1000; temp2=(count%1000)/100; temp3=(count%100)/10; temp4=count%10; HC_595_OUT(tabletemp4); DDRB|=(14); PORTB|=(14); delay(10); DDRB|=(14); PORTB&=(14); HC_595_OUT(tabletemp3); DDRB|=(15); PORTB|=(15); delay(10); DDRB|=(15); PORTB&=(15); HC_595_OUT(tabletemp2)
9、; DDRB|=(16); PORTB|=(16); delay(10); DDRB|=(16); PORTB&=(16); HC_595_OUT(tabletemp1); DDRB|=(17); PORTB|=(17); delay(10); DDRB|=(17); PORTB&=(17); void HC_595_OUT(count) PORTB&=(10); SPDR =count ; while(!(SPSR & (1SPIF); delay(10); PORTB|=(10); void delay(z) unintx,y; for(x=0;xz;x+) for(y=0;y200;y+
10、); void main unintcount,chl; DDRC |= (17); PORTC &= (17); PORTB = 0x0F; DDRB |= (12)|(11)|(10); SPCR (1SPE)|(1MSTR)|(1SPR0)|(1SPR1); while(1) count=mega128_ad;/用参数代替老是出问题,这一点需要再次认知考虑 /*for(i=0;i4;i+) ad3-i=shuzhi%10; shuzhi=shuzhi/10; */ show(count); = /CTC /该程序并未在示波器上测试,在仿真软件上仿真时只有PB5上有方波信号出现 #incl
11、ude #include #define uchar unsigned char #define uint unsigned int void main DDRB|=0X60; TCCR1A=0X50; TCCR1B=0X09; OCR1A=0X7CF; /D口矩阵键盘检测 #include config.h #include #include #define unint unsigned int #define unchar unsigned char const unsigned Seg7_Data=0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F
12、,0x6F, 0x77,0x7C,0x39,0x5E,0x79,0x71,0x00; unchar temp1,temp2,temp3,temp4; unintdata,z; void HC_595_init DDRC=0x80; char PORTC=0x00; PORTB=0x0F; DDRB=0x07; SPCR =0x53; void Seg7_Led_display(unint data) unchar temp1,temp2,temp3,temp4; temp1=data/1000; temp2=(data%1000)/100; temp3=(data%100)/10; temp4
13、=data%10; HC_595_OUT(Seg7_Datatemp4); PORTB|=(14); delay(20); PORTB&=(14); HC_595_OUT(Seg7_Datatemp3); PORTB|=(15); delay(20); PORTB&=(15); HC_595_OUT(Seg7_Datatemp2); PORTB|=(16); delay(20); PORTB&=(16); HC_595_OUT(Seg7_Datatemp1); PORTB|=(17); delay(20); PORTB&=(17); void HC_595_OUT(unchar data) P
14、ORTB=0x06; SPDR =data ; while(SPSR=0); delay(10); PORTB=0x01; void delay(unint z) uninti,j; for(i=0;iz;i+) for(j=0;j100;j+); void delay_1us(void) /1us延时函 数 asm(nop); void delay_nus(unsigned int n) /N us延时函数 unsignedint i=0; for (i=0;in;i+) delay_1us; void delay_1ms(void) 数 unsignedint i; for (i=0;i1
15、140;i+); void delay_nms(unsigned int n) 数 unsignedint i=0; for (i=0;in;i+) delay_1ms; /1ms延时函 /N ms延时函 voidBuzz_init(void) DDRG |= (14); PORTG &= (14); void Beep(unsigned intH_time,unsignedintL_time) PORTG |= (14); delay_nms(H_time); PORTG &= (14); delay_nms(L_time); intkey_press(void) int k; delay_
16、nms(5); PORTD=0x01; delay_nms(5); if(PIND&0xF0)!=0x00) delay_nms(10); if(PIND&0xF0)!=0x00) if(PIND=0x11) Beep(100,50); PORTA=0x1F; k=1; else if(PIND=0x21) Beep(100,50); PORTA=0xFD; k=2; else if(PIND=0x41) Beep(100,50); PORTA=0xFB; k=3; else if(PIND=0x81) Beep(100,50); PORTA=0xF7; k=4; else ; else ;
17、else ; /第二行 delay_nms(5); PORTD=0x02; delay_nms(5); if(PIND&0xF0)!=0x00) delay_nms(10); if(PIND&0xF0)!=0x00) if(PIND=0x12) Beep(100,50); PORTA=0x1F; k=5; else if(PIND=0x22) Beep(100,50); PORTA=0xFD; k=6; else if(PIND=0x42) Beep(100,50); PORTA=0xFB; k=7; else if(PIND=0x82) Beep(100,50); PORTA=0xF7; k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR单片机 mega128 例程大全 AVR 单片机 例程 大全

链接地址:https://www.31ppt.com/p-3153154.html