微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 电子测速里程防盗报警器设计

电子测速里程防盗报警器设计

时间:09-08 来源:互联网 点击:
//************************************************************//标题:4乘4键盘的输入函数//  函数描述:   char gotkey(void)//             从4*4小键盘输入数据,返回0~9,及其它数据.//***********************************************************//时间迟延函数//*********************************************************void delay (void)     {unsigned char i,j;for(i=0;i5;i++)for(j=0;j255;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;i8;i++){SK=1;SK=0;temp=(temp1);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=EWDSwrite_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;i8;i++){if(write_date0X80)}DI=1;elaeDI=0;SK=1;SK=0;write_date=(write_data1);}check_busy();write_disable();}//*************************************************void write_command(int command){int i;command=(commandshiftbit);for(i=0;i12;i++){if(command0X8000)DI=1;elseDI=0;SK=1;SK=0;command=(command1);}}//***********************************************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_counter8;isx_counter++) //先发低位再发高位,依次发送。{ if ((isdx0x01)==1)MOSI=1;elseMOSI=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(); }

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top