蓝桥杯单片机比赛底层驱动自测可用.docx

上传人:b****6 文档编号:12410363 上传时间:2023-06-05 格式:DOCX 页数:11 大小:15.86KB
下载 相关 举报
蓝桥杯单片机比赛底层驱动自测可用.docx_第1页
第1页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第2页
第2页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第3页
第3页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第4页
第4页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第5页
第5页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第6页
第6页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第7页
第7页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第8页
第8页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第9页
第9页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第10页
第10页 / 共11页
蓝桥杯单片机比赛底层驱动自测可用.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

蓝桥杯单片机比赛底层驱动自测可用.docx

《蓝桥杯单片机比赛底层驱动自测可用.docx》由会员分享,可在线阅读,更多相关《蓝桥杯单片机比赛底层驱动自测可用.docx(11页珍藏版)》请在冰点文库上搜索。

蓝桥杯单片机比赛底层驱动自测可用.docx

蓝桥杯单片机比赛底层驱动自测可用

蓝桥杯单片机比赛底层驱动(自测可用)

1、温度

ucharread_temp(void)

{

a)uinttemp;

b)ucharlow,high;

c)Init_DS18B20();

d)Write_DS18B20(0xcc);

e)Write_DS18B20(0x44);

f)while(!

DQ);

g)Init_DS18B20();

h)Write_DS18B20(0xcc);

i)Write_DS18B20(0xbe);

j)low=Read_DS18B20();

k)high=Read_DS18B20();

l)temp=high&0x0f;

m)temp<<=8;

n)temp|=low;

o)return(uchar)(temp*0.0625);

}

2、时钟

voidsettime(uchar*p)

{

a)ucharaddr=0x8c,i=7;

b)DS1302_write(0x8e,0x00);//关闭写保护

c)while(i--)

d){

e)DS1302_write(addr,*p);

f)p++;

g)addr-=2;

h)}

i)DS1302_write(0x8e,0x80);

}

voidgettime(uchar*p)

{

j)ucharaddr=0x8d,i=7;

k)while(i--)

l){

m)*p++=DS1302_read(addr);

n)addr-=2;

o)}

}

voidsettime(uchar*p)

{

ucharaddr=0x80,i;

Write_Ds1302(0x8e,0x00);

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

{

Write_Ds1302(addr,*p++);

addr+=2;

}

Write_Ds1302(0x8e,0x80);

}

3、AD

voidadc_init()

{

a)IIC_Start();

b)IIC_SendByte(0x90);

c)IIC_WaitAck();

d)IIC_SendByte(0x05);

e)IIC_WaitAck();

f)IIC_Stop();

}

voidgetadc(unsignedchar*p)

{

g)unsignedchari;

h)IIC_Start();

i)IIC_SendByte(0x91);

j)IIC_WaitAck();

k)for(i=0;i<3;i++)

l){

m)*p++=IIC_RecByte();

n)IIC_Ack

(1);

o)}

p)*p=IIC_RecByte();

q)IIC_Ack(0);

r)IIC_Stop();

}

4、eeprom

voideeprom_write(unsignedcharaddr,unsignedcharp)

{

a)IIC_Start();

b)IIC_SendByte(0xa0);

c)IIC_WaitAck();

d)IIC_SendByte(addr);

e)IIC_WaitAck();

f)IIC_SendByte(p);

g)IIC_WaitAck();

h)IIC_Stop();

i)Delay10ms();

}

unsignedchareeprom_read(unsignedcharaddr)

{

j)unsignedchari;

k)IIC_Start();

l)IIC_SendByte(0xa0);

m)IIC_WaitAck();

n)IIC_SendByte(addr);

o)IIC_WaitAck();

p)

q)IIC_Start();

r)IIC_SendByte(0xa1);

s)IIC_WaitAck();

t)i=IIC_RecByte();

u)IIC_Ack(0);

v)IIC_Stop();

w)returni;

}

5、蜂鸣器

voidBuzzInit()

{

a)P2=((P2&0x1f)|0xa0);

b)P0=0x00;

c)P2&=0x1f;

}

6、显示

voidDisplay()

{

a)staticuchardspom=0;

b)P2=((P2&0x1f)|0xe0);

c)P0=0xff;

d)P2=((P2&0x1f)|0xc0);

e)P0=1<

f)P2=((P2&0x1f)|0xe0);

g)P0=tab[dspbuf[dspom]];

h)P2&=0x1f;

i)if(dspom==7)

j)dspom=0;

k)else

l)dspom++;

}

7、按键(0-9、-、不亮、C、H)

codetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6,0x89};

unsignedcharkey_scan()

{

a)staticucharkeytime=0;

b)uchari;

c)P3|=0x0f;

d)i=P3&0x0f;

e)if(i==0x0f){

f)if(keytime<2){

g)keytime=0;

h)return0;

i)}

j)else{

k)keytime=0;

l)return1;

m)}

n)}

o)else

p){

q)keytime++;

r)if(i==0x0e)

s)keyvalue=7;

t)elseif(i==0x0d)

u)keyvalue=6;

v)elseif(i==0x0b)

w)keyvalue=5;

x)else

y)keyvalue=4;

zz)}

aa)return2;

}

8、按键2

ucharKeyBoard()

{

uchara,hang,lie;

P3|=0x0f;

keyline1=0;

keyline2=0;

keyline3=0;

keyline4=0;

a=P3&0x0f;

if(a==0x0f)

{

if(key_time>2)

{

key_time=0;

return1;

}

else

key_time=0;

}

else

{

key_time++;

switch(a)

{

case0x0e:

hang=4;

break;

case0x0d:

hang=3;

break;

case0x0b:

hang=2;

break;

case0x07:

hang=1;

break;

default:

hang=0;

}

keyline1=1;

keyline2=1;

keyline3=1;

keyline4=1;

P3&=0xf0;

if(!

keyline1)

lie=1;

elseif(!

keyline2)

lie=2;

elseif(!

keyline3)

lie=3;

else

lie=4;

keyvalue=lie*4+hang-1;

return2;

}

return0;

}

9、串口

voidsendstr(unsignedchar*p)

{

ES=0;

while(*p!

='\0')

{

SBUF=*p++;

while(!

TI);

TI=0;

}

ES=1;

}

voiduart_isr()interrupt4

{

unsignedchara;

staticunsignedchari;

RI=0;

rectab[i++]=SBUF;

//if((rectab[0]=='A')&&(rectab[1]=='A')&&(rectab[2]=='A')&&(rectab[3]=='S')&&(rectab[4]=='S')&&(rectab[5]=='S'))

if(strcmp(rectab,"AAASSS")==0)

{

for(a=0;a<6;a++)

{

rectab[a]=0;

}

i=0;

//ES=0;

uartflag=1;

}

}

10、超声波

unsignedintsonic_test()

{

unsignedintp;

for(p=0;p<8;p++){

TX=1;

Delay10us();

TX=0;

Delay10us();

}

while(!

RX);

TR1=1;

while((RX==1)&&(TF1==0));

TR1=0;

if(TF1==1)

{

TF1=0;

return999;

}

else

{

p=TH1;

p<<=8;

p|=TL1;

p*=0.017;

TH1=0;

TL1=0;

}

returnp;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2