您好,欢迎访问三七文档
#includeSTC12C5A.H#includeintrins.h#includestdio.h#defineulongunsignedlong#defineuintunsignedint#defineucharunsignedcharuchardataadc_at_0x30;uchardataadc1_at_0x31;sbitE=P2^7;//1602使能引脚sbitRW=P2^6;//1602读写引脚sbitRS=P2^5;//1602数据/命令选择引脚voidSendByte(unsignedchardat);voidSendStr(unsignedchar*s);voidL1602_string(ucharhang,ucharlie,uchar*p);voidL1602_char(ucharhang,ucharlie,charsign);ucharAD();ucharAD1();voidDelayUs2x(unsignedchart){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数unsignedchart,无返值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/voidDelayMs(unsignedchart){while(t--);{//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}voiddelay(){_nop_();_nop_();}voidDelay(uintdel){uinti,j;for(i=0;idel;i++)for(j=0;j=148;j++){}}/*********************************************************************名称:bitBusy(void)*功能:这个是一个读状态函数,读出函数是否处在忙状态*输入:输入的命令值*输出:无***********************************************************************/voidBusy(void){bitbusy_flag=1;P0=0xff;RS=0;delay();RW=1;delay();E=1;//Delay(1);while(1){busy_flag=(bit)(P0&0x80);if(busy_flag==0){break;}}E=0;}/*********************************************************************名称:wcmd(uchardel)*功能:1602命令函数*输入:输入的命令值*输出:无***********************************************************************/voidwcmd(uchardel){RS=0;delay();RW=0;delay();E=0;delay();P0=del;delay();E=1;delay();E=0;}/********************************************************************名称:wdata(uchardel)*功能:1602写数据函数*输入:需要写入1602的数据*输出:无***********************************************************************/voidwdata(uchardel){delay();RS=1;delay();RW=0;delay();E=0;delay();P0=del;delay();E=1;delay();E=0;}/*********************************************************************名称:L1602_init()*功能:1602初始化,请参考1602的资料*输入:无*输出:无***********************************************************************/voidL1602_init(void){Delay(15);wcmd(0x38);Delay(5);wcmd(0x38);Delay(5);wcmd(0x38);wcmd(0x38);Busy();wcmd(0x08);Busy();wcmd(0x01);Busy();wcmd(0x06);Busy();wcmd(0x0c);}/*********************************************************************名称:L1602_char(ucharhang,ucharlie,charsign)*功能:改变液晶中某位的值,如果要让第一行,第五个字符显示b,调用该函数如下L1602_char(1,5,'b')输入:行,列,需要输入1602的数据*输出:无***********************************************************************/voidL1602_char(ucharhang,ucharlie,charsign){uchara;if(hang==1){a=0x80;}if(hang==2){a=0xc0;}a=a+lie-1;Busy();wcmd(a);Busy();wdata(sign);}/*********************************************************************名称:L1602_string(ucharhang,ucharlie,uchar*p)*功能:改变液晶中某位的值,如果要让第一行,第五个字符开始显示abcdef,调用该函数如下L1602_string(1,5,abcdef;)输入:行,列,需要输入1602的数据*输出:无***********************************************************************/voidL1602_string(ucharhang,ucharlie,uchar*p){uchara;if(hang==1){a=0x80;}if(hang==2){a=0xc0;}a=a+lie-1;while(1){Busy();wcmd(a);Busy();wdata(*p);a++;p++;if((*p=='\0')||(a==0x90)||(a==0xd0)){break;}}}ucharAD(){ulongi;ucharstar;ADC_CONTR|=0x80;for(i=0;i10000;i++);P1ASF=0x01;ADC_CONTR|=0XE1;for(i=0;i10000;i++);while(1){ADC_CONTR|=0x08;star=0;while(star==0)
本文标题:ad转换及显示
链接地址:https://www.777doc.com/doc-2896340 .html