AVR单片机 mega128 例程大全文档格式.docx
- 文档编号:19702999
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:62
- 大小:29.12KB
AVR单片机 mega128 例程大全文档格式.docx
《AVR单片机 mega128 例程大全文档格式.docx》由会员分享,可在线阅读,更多相关《AVR单片机 mega128 例程大全文档格式.docx(62页珍藏版)》请在冰豆网上搜索。
TCCR1B=0x00;
time=TCNT1H*256+TCNT1L;
if(time<
chao)
{
o=500;
while(o--)
PORTD=0x04;
}
if(time>
PORTD=0x08;
//AD
#include<
iom128v.h>
#defineunintunsignedint
#defineuncharunsignedchar
#pragmadata:
code
consttable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unintmega128_ad()
unintaddata;
DDRF&
=~BIT(0);
PORTF&
ADMUX=0;
ADCSRA=0X80;
ADCSRA|=BIT(ADSC);
while(!
(ADCSRA&
(BIT(ADIF))));
addata=ADCL;
addata=addata+ADCH*256;
returnaddata;
voidshow(count)
unchartemp1,temp2,temp3,temp4;
temp1=count/1000;
temp2=(count%1000)/100;
temp3=(count%100)/10;
temp4=count%10;
HC_595_OUT(table[temp4]);
DDRB|=(1<
<
4);
PORTB|=(1<
delay(10);
PORTB&
=~(1<
HC_595_OUT(table[temp3]);
5);
HC_595_OUT(table[temp2]);
6);
HC_595_OUT(table[temp1]);
7);
voidHC_595_OUT(count)
0);
SPDR=count;
while(!
(SPSR&
(1<
SPIF)));
PORTB|=(1<
voiddelay(z)
unintx,y;
for(x=0;
x<
x++)
for(y=0;
y<
200;
y++);
unintcount,chl;
DDRC|=(1<
PORTC&
=(1<
PORTB=0x0F;
DDRB|=(1<
2)|(1<
1)|(1<
SPCR=(1<
SPE)|(1<
MSTR)|(1<
SPR0)|(1<
SPR1);
count=mega128_ad();
//用参数代替老是出问题,这一点需要再次认知考虑
/*for(i=0;
4;
ad[3-i]=shuzhi%10;
shuzhi=shuzhi/10;
}*/
show(count);
//ADC
//CTC
//该程序并未在示波器上测试,在仿真软件上仿真时只有PB5上有方波信号出现
#defineucharunsignedchar
#defineuintunsignedint
DDRB|=0X60;
TCCR1A=0X50;
TCCR1B=0X09;
OCR1A=0X7CF;
//D口矩阵键盘检测
#include"
config.h"
constunsignedcharSeg7_Data[]={0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};
unchartemp1,temp2,temp3,temp4;
unintdata,z;
voidHC_595_init()
DDRC=0x80;
PORTC=0x00;
PORTB=0x0F;
DDRB=0x07;
SPCR=0x53;
voidSeg7_Led_display(unintdata)
unchartemp1,temp2,temp3,temp4;
temp1=data/1000;
temp2=(data%1000)/100;
temp3=(data%100)/10;
temp4=data%10;
HC_595_OUT(Seg7_Data[temp4]);
delay(20);
HC_595_OUT(Seg7_Data[temp3]);
HC_595_OUT(Seg7_Data[temp2]);
HC_595_OUT(Seg7_Data[temp1]);
voidHC_595_OUT(unchardata)
PORTB=0x06;
SPDR=data;
while(SPSR==0);
PORTB=0x01;
voiddelay(unintz)
uninti,j;
voiddelay_1us(void)//1us延时函数
asm("
nop"
);
voiddelay_nus(unsignedintn)//Nus延时函数
unsignedinti=0;
for(i=0;
n;
delay_1us();
}
voiddelay_1ms(void)//1ms延时函数
unsignedinti;
1140;
i++);
voiddelay_nms(unsignedintn)//Nms延时函数
delay_1ms();
voidBuzz_init(void)
DDRG|=(1<
PORTG&
=~(1<
voidBeep(unsignedintH_time,unsignedintL_time)
PORTG|=(1<
delay_nms(H_time);
delay_nms(L_time);
intkey_press(void)
{intk;
delay_nms(5);
PORTD=0x01;
delay_nms(5);
if((PIND&
0xF0)!
=0x00)
delay_nms(10);
if((PIND&
{
if(PIND==0x11)
Beep(100,50);
PORTA=0x1F;
k=1;
}
elseif(PIND==0x21)
PORTA=0xFD;
k=2;
elseif(PIND==0x41)
PORTA=0xFB;
k=3;
elseif(PIND==0x81)
PORTA=0xF7;
k=4;
}
else{;
}else{;
//第二行
delay_nms(5);
PORTD=0x02;
if(PIND==0x12)
k=5;
elseif(PIND==0x22)
k=6;
elseif(PIND==0x42)
k=7;
elseif(PIND==0x82)
k=8;
//第三行
PORTD=0x04;
if(PIND==0x14)
k=9;
elseif(PIND==0x24)
k=10;
elseif(PIND==0x44)
k=11;
elseif(PIND==0x84)
k=12;
//第四行
PORTD=0x08;
if(PIND==0x18)
elseif(PIND==0x28)
k=14;
elseif(PIND==0x48)
k=15;
elseif(PIND==0x88)
k=16;
else{;
returnk;
voidmain(void)
inti,j,x;
DDRA=0xFF;
PORTA=0xFF;
DDRD=0x0F;
DDRE=0xFF;
PORTE=0xFF;
Buzz_init();
while
(1)
{
x=key_press();
HC_595_init();
Seg7_Led_display(x);
}
//1602液晶
#defineucharunsignedchar
#defineuintunsignedint
#defineRS0
#defineRW1
#defineEN2
ucharwz[]={"
*WEN.JIU.LONG*"
};
uchargd[]={"
GoodLuck!
"
voids_ms(uintms)
for(;
ms>
1;
ms--);
//写指令
voidwritecom(ucharcom)
PORTC&
RS);
//RS=0命令选择
RW);
//RW=0写选择
PORTC|=(1<
EN);
//EN=1使能信号
s_ms(500);
PORTA=com;
//输出指令
//EN=0
//1602初始化
voidLcdInit(void)
{
writecom(0x01);
writecom(0x02);
writecom(0x06);
writecom(0x0c);
writecom(0x38);
//没理解好这里设置的是四位总线,而且设不成5X10的点阵
}
//================================================================
//描述:
在任意位置写任意多个字符
//入口:
’row‘要写的字符所在的行,只能为1或2;
//‘col’要写的字符所在的列,只能为0---15
//‘num’要写字符的个数
//‘pbuffer’要写字符的首地址
//==================================================================
voidWriteChar(ucharrow,ucharcol,uintnum,uchar*pBuffer)
uchari,t,add;
if(row==1)add=0x80+col+0x10;
elseadd=0x80+0x40+col+0x10;
writecom(add);
for(i=num;
i!
=0;
i--)
t=*pBuffer;
PORTA=t;
PORTC|=(1<
s_ms(500);
//必须有个延时
PORTC&
pBuffer++;
inti;
DDRA=0xff;
PORTA=0xff;
DDRC=0xff;
PORTC=0xff;
LcdInit();
WriteChar(1,1,14,wz);
WriteChar(2,3,10,gd);
for(i=0;
16;
writecom(0X18);
s_ms(50000);
//按键加显示的最简写法.txt
uncharSeg7_Led_Buf[4],temp1,temp2,temp3,temp4;
DDRB=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR单片机 mega128 例程大全 AVR 单片机 例程 大全
![提示](https://static.bdocx.com/images/bang_tan.gif)