您的位置 首页 设计

51单片机的电子测速路程防盗报警器规划

51单片机的电子测速里程防盗报警器设计-// 函数描述: char gotkey(void)

// 从4*4小键盘输入数据,返回0~9,及其它数据。

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

//时间迟延函数

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

void delay (void)

{

unsigned char i,j;

for(i=0;i《5;i++)

for(j=0;j《255;j++);

}

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

//检查是否有按键按下

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

char keypad_sCAN()

{

char key,i;

p2=0xF0;

while(p2!=0XF0);

do{

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

{ p2=ksp;

if(p2!=ksp)

{

//标题:4乘4键盘的输入函数

// 函数描绘: char gotkey(void)

// 从4*4小键盘输入数据,回来0~9,及其它数据。

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

//时刻拖延函数

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

void delay (void)

{

unsigned char i,j;

for(i=0;i《5;i++)

for(j=0;j《255;j++);

}

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

//查看是否有按键按下

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

char keypad_sCAN()

{

char key,i;

p2=0xF0;

while(p2!=0XF0);

do{

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

{ p2=ksp;

if(p2!=ksp)

{

delay();

key=p2;

if(key!=ksp)

{

return(key);

}

}

}

}while(1);

}

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

//获得键值

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

char gotkey()

{

char temp,i;

temp=keypad_scan();

for(i=0;i《=15;i++)

{

if(temp==key_code)

return(i);

}

}

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

//93c66驱动程序

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

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

unsigned char read_byte(int address)

{int i, command;

unsigned char temp;

CS=1;

command=(READ|address);

write_command(command);

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

{SK=1;

SK=0;

temp=(temp《《1);

if(DO==1)

temp=(temp|0X01);

}

CS=0;

return(temp);

}

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

void write_enable()

{int command;

CS=1;

command=EWEN;

write_command(command);

CS=0;

}

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

void write_dISAble()

{int command;

CS=1;

command=EWDS

write_command(command);

CS=0;

}

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

void write_byte(int address,unsigned char write_date)

{int i,command;

write_enable();

CS=1;

command=(WRITE|address);

write_command(command);

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

{if(write_date&0X80)}

DI=1;

elae

DI=0;

SK=1;

SK=0;

write_date=(write_data《《1);

}

check_busy();

write_disable();

}

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

void write_command(int command)

{int i;

command=(command《for(i=0;i《12;i++)

{if(command&0X8000)

DI=1;

else

DI=0;

SK=1;

SK=0;

command=(command《《1);

}

}

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

void check_busy(void)

{CS=0;

CS=1;

while(DO==0);

}

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

//标题:ISD4004驱动法程序

//功用:语音选段播映

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

void delay(unsigned int TIme) //推迟n微秒

{

while(TIme!=0)

{

TIme– ;

}

}

void delayms(unsigned int TIme) //推迟n毫秒

{ TMOD=0x01;

for(time;time》0;time–)

{

TH0=0xfc;

TL0=0x18;

TR0=1;

while(TF0!=1)

{;}

TF0=0;

TR0=0;

}

}

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

//ISD4004 spi串行发送子程序,16位数据

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

void spi_send(unsigned char isdx)

{ unsigned char isx_counter;

SS=0; //ss=0,翻开spi通讯端

SCLK=0;

for(isx_counter=0;isx_counter《8;isx_counter++)

//先发低位再发高位,顺次发送。

{ if ((isdx&0x01)==1)

MOSI=1;

else

MOSI=0;

isdx=isdx》》1;

SCLK=1;

delay(2);

SCLK=0;

delay(2);

}

}

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

//发送stop指令

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

void isd_stop(void)

{ delay(10);

spi_send(0x30);

SS=1;

delayms(50);

}

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

//发送上电指令,并推迟50ms

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

void isd_pu(void)

{ delay(10);

SS=0;

spi_send(0x20);

SS=1;

delayms(50);

}

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

//发送掉电指令,并推迟50ms

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

void isd_pd(void)

{ delay(10);

spi_send(0x10);

SS=1;

delayms(50);

}

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

//发送分段语音setplay指令

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

void isd_setplay(unsigned char adl,unsigned char adh)

{

isd_pd();

delayms(1);

spi_send(adl);

delay(2);

spi_send(adh);

delay(2);

spi_send(0xe0);

SS=1;

spi_send(0xf0);

SS=1;

if(ISD_INT==0)

isd_stop();

isd_pd();

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/345417.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部