找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1532|回复: 3
打印 上一主题 下一主题
收起左侧

51单片机水质监测系统程序 不管是在清水中,还是在浊水中变化都一样

[复制链接]
跳转到指定楼层
楼主
40黑币
我采用TSW-30浊度传感器,利用51单片机做了一个水质监测系统,AD用的是PCF8591,用LCD1602显示,但是显示过程中总是显示0(最小值),3000(最大值),然后是一些数字在变化,例如,1180,3000,1135,3000,1101,3000,不管是在清水中,还是在浊水中变化都一样,且模拟输入电压在不同的浊度水中变化明显,以下是程序资料,求诸位大神帮帮我
  1. /********************(C) COPRIGHT 2019 Crownto electronic **************************
  2. * 文件名  :main.c
  3. * 描述    :        
  4. * 硬件连接:
  5. * PCF8591:VCC -> 5V; GND -> GND; SCL -> P1.6;SDA -> P1.7;
  6. *         OUT1~OUT8 -> P3口
  7. * LCD1602:RS -> P2.5; RW -> P2.6; E -> P2.7;
  8. *         D0~D7 -> P0口
  9. * 浊度传感器模块: VCC -> 5V; GND -> GND; AO -> AIN0;
  10. *
  11. * 功能描述:测量浊度值液晶显示;
  12.              串口接收测量所得的浊度值(波特率9600);
  13. *           可连接上位机显示浊度值;
  14. **********************************************************************************/

  15. #include <reg52.h>
  16. #include <include.h>
  17. typedef unsigned char uchar;
  18. typedef unsigned char uint;

  19. /**************外部变量定义************************/
  20. int num=0;
  21. /**************变量定义***************************/
  22. //double PH=0.0;
  23. //unsigned char disbuff[5]={0};
  24. double ADC_Voltage=0.0;
  25. float TU=0.0;
  26. float TU_value=0.0;
  27. float TU_calibration=0.0;
  28. unsigned char disbuff[13]={0};
  29. float temp_data=25.0;
  30. float K_Value=3047.19;


  31. /*
  32. * 函数名:Get_Voltage_Value
  33. * 描述  :获取ADC0809的转换电压值
  34. *         
  35. * 输入  :无
  36. * 输出  :无
  37. * 说明  :
  38. *                                                AIN0(0X40):热敏电阻
  39. *                                                AIN1(0X41):悬空
  40. *                                          AIN2(0X42):滑动变阻器
  41. *                                          AIN3(0X43):光敏电阻
  42. */
  43. void Get_Voltage_Value()
  44. {
  45.                         ISendByte(PCF8591,0x40);
  46.       num=IRcvByte(PCF8591);  //ADC0 模数转换1      PH电极
  47. //                  TU =num * 5.0/ 255;  //转换为电压值
  48. }
  49. /*
  50. * 函数名:Character_Conversion
  51. * 描述  :延时函数
  52. *         
  53. * 输入  :unsigned char n:延时量
  54. * 输出  :无
  55. * 说明  :
  56. */
  57. void TU_Value_Conversion()
  58. {        
  59.                 Get_Voltage_Value();
  60.                 TU=(num*5.0)/256;
  61.                 TU_calibration=-0.0192*(temp_data-25)+TU;  
  62.           TU_value=-865.68*TU_calibration + K_Value;
  63.         
  64.                 if(TU_value<=0){TU_value=0;}
  65.                 if(TU_value>=3000){TU_value=3000;}

  66.                
  67.                 /*显示酸碱度*/
  68.                 disbuff[0]=(int)(TU_value)/1000+'0';
  69.                 disbuff[1]=(int)(TU_value)%1000/100+'0';        
  70.                 disbuff[2]=(int)(TU_value)%100/10+'0';
  71.                 disbuff[3]=(int)(TU_value)%10+'0';
  72.                
  73.                
  74.                 DisplaySingleChar(0x03,0,disbuff[0]);
  75.                 DisplaySingleChar(0x04,0,disbuff[1]);
  76.                 DisplaySingleChar(0x05,0,disbuff[2]);
  77.                 DisplaySingleChar(0x06,0,disbuff[3]);        
  78. }
  79. void StartUART( void )
  80. {                                                          //波特率9600
  81.      SCON = 0x50;
  82.      TMOD = 0x20;
  83.      TH1 = 0xFD;
  84.      TL1 = 0xFD;
  85.      PCON = 0x00;
  86.      TR1 = 1;
  87. }
  88. //**********通过串口将接收到数据发送给PC端**************
  89. void R_S_Byte(uchar R_Byte)
  90. {        
  91.          SBUF = R_Byte;  
  92.      while( TI == 0 );                                //查询法
  93.            TI = 0;   
  94. }
  95. /*
  96. * 函数名:main
  97. * 描述  :主函数
  98. * 输入  :无
  99. * 输出  :无
  100. */
  101. void main(void)
  102. {
  103.         int i;
  104.         LCDInit();
  105.         StartUART();
  106.         
  107.   DisplayString(0x0,0,"  Welcome  TU  ");
  108.         DisplayString(0x0,1,"Detection system");
  109.         delay_1s();
  110.         WriteCmd(LCD_CLS);
  111.         
  112.         DisplayString(0x0,0,"TU=");
  113.         DisplaySingleChar(0x08,0,'p');
  114.         DisplaySingleChar(0x09,0,'p');
  115.         DisplaySingleChar(0x0A,0,'m');
  116.         
  117.         
  118.         while(1)
  119.         {               
  120.                                 TU_Value_Conversion();
  121. //                                display_value();
  122.                         for(i=0;i<5;i++)
  123.                                 {
  124.                                         R_S_Byte(disbuff[i]);
  125.                                 }        
  126. //                                R_S_Byte('\r');//发送回车换行符
  127. //                                R_S_Byte('\n');
  128.                                 delay_1s();
  129.   }        
  130. }

  131. /******************** (C) COPYRIGHT 2015 Silicone shell electronic studio **************************
  132. * 文件名  :Lcd1602.c
  133. * 描述    : 1602液晶显示屏库函数        
  134. * 硬件连接: EN:P2.5
  135. *                                                RW:P2.6
  136. *                                          RS:P2.7
  137. *                                          D0~D7:P0口
  138. *
  139. * 实验平台:SHELL1.0开发板
  140. *
  141. * 作者    :Silicone shell electronic studio
  142. * 淘宝    :[url=http://shop111698447.taobao.com/shop/view_shop.htm?spm=a1z0e.1.10010.5.GCUiZL]http://shop111698447.taobao.com/ ... 0e.1.10010.5.GCUiZL[/url]
  143. **********************************************************************************/
  144. #include "lcd.h"
  145. #include <intrins.h>
  146. #include <reg52.h>

  147. /*********************LCD1602端口定义***************************/
  148. sbit LCD_E                           =P2^7;                                        //执行使能端
  149. sbit LCD_RW                          =P2^5;                                   //读写控制端
  150. sbit LCD_RS                          =P2^6;                                        //数据命令选择端

  151. /*
  152. * 函数名:delay_1s
  153. * 描述  :延时函数1s
  154. *         
  155. * 输入  :unsigned int time:延时量
  156. * 输出  :无
  157. * 说明  :液晶显示用延时函数
  158. */
  159. void delay_1s()          //延时1s
  160. {
  161.         unsigned char i, j, k;

  162.         _nop_();
  163.         i = 8;
  164.         j = 1;
  165.         k = 243;
  166.         do
  167.         {
  168.                 do
  169.                 {
  170.                         while (--k);
  171.                 } while (--j);
  172.         } while (--i);
  173. }               
  174. /*
  175. * 函数名:Delay
  176. * 描述  :延时函数
  177. *         
  178. * 输入  :unsigned int time:延时量
  179. * 输出  :无
  180. * 说明  :
  181. */
  182. void Delay(unsigned int time)
  183. {
  184.     unsigned int timeCounter = 0;
  185.         for (timeCounter = time;timeCounter > 0 ;timeCounter --)
  186.                 DelayUs(255);
  187. }
  188. /*
  189. * 函数名:DelayUs
  190. * 描述  :延时函数(微秒)
  191. *         
  192. * 输入  :unsigned int time:延时量
  193. * 输出  :无
  194. * 说明  :
  195. */
  196. void DelayUs(unsigned int time)
  197. {
  198.         unsigned int timeCounter = 0;
  199.         for (timeCounter = 0;timeCounter < time;timeCounter ++)
  200.                 _nop_();
  201. }

  202. /****************************************************************************************\
  203. **                                                                   LCD驱动模块                                                                **
  204. \****************************************************************************************/

  205. /*
  206. * 函数名:LCDInit
  207. * 描述  :液晶初始化函数
  208. *         
  209. * 输入  :无
  210. * 输出  :无
  211. * 说明  :
  212. */
  213. void LCDInit(void)
  214. {
  215.     //三次显示模式设置
  216.         LCD_Data=0;
  217.         LCD_E=Disable;
  218.         Delay(5);
  219.         WriteCmd(LCD_Init);
  220.         Delay(5);
  221.         WriteCmd(LCD_Init);
  222.         Delay(5);
  223.         WriteCmd(LCD_Init);

  224.         WriteCmd(LCD_Init);                                                           //初始化
  225.         WriteCmd(LCD_CloseCtr);                                                        //关显示
  226.         WriteCmd(LCD_CLS);                                                                //清屏幕
  227.         WriteCmd(LCD_EnterSet);                                                        //光标移动设置
  228.         WriteCmd(LCD_DispCtr);                                                        //显示开以及光标设置
  229.         
  230. }

  231. /*---------------------------------  LCD模式设置函数--------------------------------------*\
  232.         
  233.         SetWriteCmd()                                  设置LCD为写命令模式
  234.         SetReadCmd()                                       设置LCD为读命令模式
  235.         SetWriteData()                                设置LCD为写数据模式
  236.         
  237. \*----------------------------------------------------------------------------------------*/
  238. /*
  239. * 函数名:SetWriteCmd
  240. * 描述  :设置LCD为写命令模式
  241. *         
  242. * 输入  :无
  243. * 输出  :无
  244. * 说明  :
  245. */
  246. void SetWriteCmd(void)
  247. {
  248.         LCD_RW=Write;
  249.         LCD_RS=Cmd;
  250. }
  251. /*
  252. * 函数名:SetReadCmd
  253. * 描述  :设置LCD为读命令模式
  254. *         
  255. * 输入  :无
  256. * 输出  :无
  257. * 说明  :
  258. */
  259. void SetReadCmd(void)
  260. {
  261.         LCD_RW=Read;
  262.         LCD_RS=Cmd;
  263. }
  264. /*
  265. * 函数名:SetWriteData
  266. * 描述  :设置LCD为写数据模式
  267. *         
  268. * 输入  :无
  269. * 输出  :无
  270. * 说明  :
  271. */
  272. void SetWriteData(void)
  273. {
  274.         LCD_RW=Write;
  275.         LCD_RS=Data;
  276. }

  277. /*---------------------------------  LCD功能执行函数--------------------------------------*\
  278.         
  279.         WriteCmd()                                        写命令
  280.         WriteData()                                        写数据
  281.         ExecuteCmd()                                        执行命令
  282.         SetXY()                                                显示定位
  283.         DisplaySingleChar()                        显示单个字符
  284.         DisplayString()                                显示一串字符
  285.         IsBusy()                                                忙标志检测
  286. \*----------------------------------------------------------------------------------------*/
  287. /*
  288. * 函数名:WriteCmd
  289. * 描述  :写命令
  290. *         
  291. * 输入  :无
  292. * 输出  :无
  293. * 说明  :
  294. */
  295. void WriteCmd(char cmd)
  296. {
  297.         while(IsBusy());
  298.         LCD_Data=cmd;        
  299.         SetWriteCmd();
  300.         ExecuteCmd();
  301. }
  302. /*
  303. * 函数名:WriteData
  304. * 描述  :写数据
  305. *         
  306. * 输入  :无
  307. * 输出  :无
  308. * 说明  :
  309. */
  310. void WriteData(char ddata)
  311. {
  312.         while(IsBusy());
  313.         LCD_Data=ddata;
  314.         SetWriteData();        
  315.         ExecuteCmd();
  316. }
  317. /*
  318. * 函数名:ExecuteCmd
  319. * 描述  :执行命令
  320. *         
  321. * 输入  :无
  322. * 输出  :无
  323. * 说明  :
  324. */
  325. void ExecuteCmd(void)
  326. {
  327.         LCD_E=Enable;
  328.         LCD_E=Disable;
  329. }
  330. /*
  331. * 函数名:SetXY
  332. * 描述  :显示定位
  333. *         
  334. * 输入  :无
  335. * 输出  :无
  336. * 说明  :
  337. */
  338. void SetXY(char x,char y)
  339. {
  340.         if (y)
  341.         x|=0x40;
  342.         x|=0x80;
  343.         Delay(5);
  344.         WriteCmd(x);

  345. }
  346. /*
  347. * 函数名:DisplaySingleChar
  348. * 描述  :显示单个字符
  349. *         
  350. * 输入  :无
  351. * 输出  :无
  352. * 说明  :
  353. */
  354. void DisplaySingleChar(char x,char y,char cchar)
  355. {
  356.         SetXY(x,y);
  357.         WriteData(cchar);        
  358. }
  359. /*
  360. * 函数名:DisplayString
  361. * 描述  :显示字符串
  362. *         
  363. * 输入  :无
  364. * 输出  :无
  365. * 说明  :
  366. */
  367. void DisplayString(char x,char y,char *str)
  368. {
  369.         while(*str)
  370.         {
  371.                 Delay(5);
  372.                 DisplaySingleChar(x++,y,*str);
  373.                 str++;
  374.         }
  375. }
  376. /*
  377. * 函数名:IsBusy
  378. * 描述  :忙标志检测
  379. *         
  380. * 输入  :无
  381. * 输出  :无
  382. * 说明  :
  383. */
  384. bit IsBusy(void)
  385. {
  386.         LCD_Data=0xFF;
  387.         SetReadCmd();
  388.         ExecuteCmd();
  389. //        return (bit)(P0 & 0x80);        
  390.                 return (bit)(LCD_Data & 0x80);        
  391. }

  392. #ifndef __INCLUDE_H
  393. #define        __INCLUDE_H

  394. //#define uchar  unsigned char
  395. //#define uint unsigned int
  396. #include <stdio.h>
  397. #include "math.h"
  398. #include "I2C.h"
  399. #include "PCF8591.h"
  400. #include "lcd.h"


  401. #endif /* __INCLUDE_H */

  402. extern bit ack;
  403. //起动总线函数
  404. extern void Start_I2c();
  405. //结束总线函数  
  406. extern void Stop_I2c();
  407. //应答子函数
  408. extern void Ack_I2c(bit a);
  409. //字节数据发送函数
  410. extern void  SendByte(unsigned char  c);
  411. //有子地址发送多字节数据函数               
  412. extern bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no) ;
  413. //无子地址发送多字节数据函数   
  414. extern bit ISendStrExt(unsigned char sla,unsigned char *s,unsigned char no);
  415. //无子地址读字节数据函数               
  416. extern unsigned char RcvByte();

  417. #include "PCF8591.h"
  418. #include "I2C.h"

  419. /*******************************************************************
  420. DAC 变换, 转化函数               
  421. *******************************************************************/
  422. bit DACconversion(unsigned char sla,unsigned char c,  unsigned char Val)
  423. {
  424.    Start_I2c();              //启动总线
  425.    SendByte(sla);            //发送器件地址
  426.    if(ack==0)return(0);
  427.    SendByte(c);              //发送控制字节
  428.    if(ack==0)return(0);
  429.    SendByte(Val);            //发送DAC的数值  
  430.    if(ack==0)return(0);
  431.    Stop_I2c();               //结束总线
  432.    return(1);
  433. }

  434. /*******************************************************************
  435. ADC发送字节[命令]数据函数               
  436. *******************************************************************/
  437. bit ISendByte(unsigned char sla,unsigned char c)
  438. {
  439.    Start_I2c();              //启动总线
  440.    SendByte(sla);            //发送器件地址
  441.    if(ack==0)return(0);
  442.    SendByte(c);              //发送数据
  443.    if(ack==0)return(0);
  444.    Stop_I2c();               //结束总线
  445.    return(1);
  446. }

  447. /*******************************************************************
  448. ADC读字节数据函数               
  449. *******************************************************************/
  450. unsigned char IRcvByte(unsigned char sla)
  451. {  unsigned char c;

  452.    Start_I2c();          //启动总线
  453.    SendByte(sla+1);      //发送器件地址
  454.    if(ack==0)return(0);
  455.    c=RcvByte();          //读取数据0

  456.    Ack_I2c(1);           //发送非就答位
  457.    Stop_I2c();           //结束总线
  458.    return(c);
  459. }

  460. #ifndef _PCF8591_H_
  461. #define _PCF8591_H_

  462. #define  PCF8591 0x90    //PCF8591 地址

  463. bit DACconversion(unsigned char sla,unsigned char c,  unsigned char Val);
  464. bit ISendByte(unsigned char sla,unsigned char c);
  465. unsigned char IRcvByte(unsigned char sla);

  466. #endif        


  467. /*************************此部分为I2C总线的驱动程序*************************************/

  468. #include <reg52.h>
  469. #include <intrins.h>
  470. #include <I2C.H>

  471. #define  NOP()   _nop_()   /* 定义空指令 */
  472. #define  _Nop()  _nop_()   /*定义空指令*/


  473. sbit     SCL=P2^1;       //I2C  时钟
  474. sbit     SDA=P2^0;       //I2C  数据
  475. bit ack;                 /*应答标志位*/
  476. /*******************************************************************
  477.                      起动总线函数               
  478. 函数原型: void  Start_I2c();  
  479. 功能:     启动I2C总线,即发送I2C起始条件.  
  480. ********************************************************************/
  481. void Start_I2c()
  482. {
  483.   SDA=1;         /*发送起始条件的数据信号*/
  484.   _Nop();
  485.   SCL=1;
  486.   _Nop();        /*起始条件建立时间大于4.7us,延时*/
  487.   _Nop();
  488.   _Nop();
  489.   _Nop();
  490.   _Nop();   
  491.   SDA=0;         /*发送起始信号*/
  492.   _Nop();        /* 起始条件锁定时间大于4μs*/
  493.   _Nop();
  494.   _Nop();
  495.   _Nop();
  496.   _Nop();      
  497.   SCL=0;       /*钳住I2C总线,准备发送或接收数据 */
  498.   _Nop();
  499.   _Nop();
  500. }

  501. /*******************************************************************
  502.                       结束总线函数               
  503. 函数原型: void  Stop_I2c();  
  504. 功能:     结束I2C总线,即发送I2C结束条件.  
  505. ********************************************************************/
  506. void Stop_I2c()
  507. {
  508.   SDA=0;      /*发送结束条件的数据信号*/
  509.   _Nop();       /*发送结束条件的时钟信号*/
  510.   SCL=1;      /*结束条件建立时间大于4μs*/
  511.   _Nop();
  512.   _Nop();
  513.   _Nop();
  514.   _Nop();
  515.   _Nop();
  516.   SDA=1;      /*发送I2C总线结束信号*/
  517.   _Nop();
  518.   _Nop();
  519.   _Nop();
  520.   _Nop();
  521. }

  522. /*******************************************************************
  523.                  字节数据发送函数               
  524. 函数原型: void  SendByte(UCHAR c);
  525. 功能:     将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
  526.           此状态位进行操作.(不应答或非应答都使ack=0)     
  527.            发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
  528. ********************************************************************/
  529. void  SendByte(unsigned char  c)
  530. {
  531. unsigned char  BitCnt;

  532. for(BitCnt=0;BitCnt<8;BitCnt++)  /*要传送的数据长度为8位*/
  533.     {
  534.      if((c<<BitCnt)&0x80)SDA=1;   /*判断发送位*/
  535.        else  SDA=0;               
  536.      _Nop();
  537.      SCL=1;               /*置时钟线为高,通知被控器开始接收数据位*/
  538.       _Nop();
  539.       _Nop();             /*保证时钟高电平周期大于4μs*/
  540.       _Nop();
  541.       _Nop();
  542.       _Nop();         
  543.      SCL=0;
  544.     }

  545.     _Nop();
  546.     _Nop();
  547.     SDA=1;                /*8位发送完后释放数据线,准备接收应答位*/
  548.     _Nop();
  549.     _Nop();   
  550.     SCL=1;
  551.     _Nop();
  552.     _Nop();
  553.     _Nop();
  554.     if(SDA==1)ack=0;     
  555.        else ack=1;        /*判断是否接收到应答信号*/
  556.     SCL=0;
  557.     _Nop();
  558.     _Nop();
  559. }

  560. /*******************************************************************
  561.                  字节数据接收函数               
  562. 函数原型: UCHAR  RcvByte();
  563. 功能:        用来接收从器件传来的数据,并判断总线错误(不发应答信号),
  564.           发完后请用应答函数应答从机。  
  565. ********************************************************************/   
  566. unsigned char   RcvByte()
  567. {
  568.   unsigned char  retc;
  569.   unsigned char  BitCnt;

  570.   retc=0;
  571.   SDA=1;                     /*置数据线为输入方式*/
  572.   for(BitCnt=0;BitCnt<8;BitCnt++)
  573.       {
  574.         _Nop();           
  575.         SCL=0;                  /*置时钟线为低,准备接收数据位*/
  576.         _Nop();
  577.         _Nop();                 /*时钟低电平周期大于4.7μs*/
  578.         _Nop();
  579.         _Nop();
  580.         _Nop();
  581.         SCL=1;                  /*置时钟线为高使数据线上数据有效*/
  582.         _Nop();
  583.         _Nop();
  584.         retc=retc<<1;
  585.         if(SDA==1)retc=retc+1;  /*读数据位,接收的数据位放入retc中 */
  586.         _Nop();
  587.         _Nop();
  588.       }
  589.   SCL=0;   
  590.   _Nop();
  591.   _Nop();
  592.   return(retc);
  593. }

  594. /********************************************************************
  595.                      应答子函数
  596. 函数原型:  void Ack_I2c(bit a);
  597. 功能:      主控器进行应答信号(可以是应答或非应答信号,由位参数a决定)
  598. ********************************************************************/
  599. void Ack_I2c(bit a)
  600. {

  601.   if(a==0)SDA=0;              /*在此发出应答或非应答信号 */
  602.   else SDA=1;
  603.   _Nop();
  604.   _Nop();
  605.   _Nop();      
  606.   SCL=1;
  607.   _Nop();
  608.   _Nop();                    /*时钟低电平周期大于4μs*/
  609.   _Nop();
  610.   _Nop();
  611.   _Nop();  
  612.   SCL=0;                     /*清时钟线,钳住I2C总线以便继续接收*/
  613.   _Nop();
  614.   _Nop();   
  615. }


  616. #ifndef _LCD_H
  617. #define _LCD_H

  618. /********************************************************************************\
  619. **                                                 宏定义区                                                                        **
  620. \********************************************************************************/
  621. /*-------------------------------  LCD模块 ------------------------------------*/
  622. #define Busy                        0x80                                        //忙信号
  623. #define LCD_Data           P0              //数据口定义
  624. #define Write                                0x00                                        //低电平写入
  625. #define Read                                0x01                                        //高电平读出
  626. #define Data                                0x01                                        //高电平选择数据
  627. #define Cmd                                    0x00                                        //低电平选择命令

  628. #define Enable                            0x00                                        //跃变到低电平时执行命令
  629. #define Disable                            0x01   
  630. #define True                                0x01
  631. #define False                                0x00
  632. #define LCD_Init                        0x38                                        //初始化模式                                                        
  633. #define LCD_DispCtr                    0x0C                                        //开显示及光标设置
  634. #define LCD_CloseCtr                0x08                                        //关显示
  635. #define LCD_CLS                        0x01                                        //清屏幕
  636. #define LCD_EnterSet                   0x06                                        //显示光标

  637. /********************************************************************************\
  638. **                                                 函数声明                                                                        **
  639. \********************************************************************************/
  640. extern void LCDInit(void);                                                                //LCD初始化
  641. void SetWriteCmd(void);                                                                //设置写命令模式
  642. void SetReadCmd(void);                                                                //设置读命令模式
  643. void SetWriteData(void);                                                        //设置写数据模式
  644. extern void WriteCmd(char cmd);                                                        //写命令
  645. void WriteData(char ddata);                                                        //写数据
  646. void ExecuteCmd(void);                                                                //执行命令
  647. void SetXY(char x,char y);                                                        //定位显示地址
  648. extern void DisplaySingleChar(char x,char y,char cchar);                //显示单个字符
  649. extern void DisplayString(char x,char y,char *str);                         //显示一段字符串
  650. void Delay(unsigned int time);                                                //延时主程序
  651. void DelayUs(unsigned int time);                                                //延时子程序
  652. bit  IsBusy(void);                                                                        //判断忙标志函数
  653. extern void delay_1s();        
  654. #endif
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:648281 发表于 2020-3-28 20:59 | 只看该作者
你好!
1、第一种可能,你的硬件接法或硬件有问题
2、第二种可能,你的程序不对,不能去取数据
回复

使用道具 举报

板凳
ID:637063 发表于 2020-3-29 11:39 | 只看该作者
51hei**1140 发表于 2020-3-28 20:59
你好!
1、第一种可能,你的硬件接法或硬件有问题
2、第二种可能,你的程序不对,不能去取数据

有没有具体的做法
回复

使用道具 举报

地板
ID:123289 发表于 2020-3-29 13:18 | 只看该作者
多看看手册。上面说的与你的程序或设想有何不同。多读几遍!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表