久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5673|回復(fù): 19
打印 上一主題 下一主題
收起左側(cè)

哪位大神看一下程序 怎么不能編譯

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:242160 發(fā)表于 2017-12-6 09:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<REG52.H>
  2. #include<math.h>
  3. #include<stdio.h>
  4. #include<intrins.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. sbit DQ=P2^2 ;
  8. sbit RS=P3^5;
  9. sbit RW=P3^6 ;
  10. sbit EN=P3^4 ;
  11. sbit R=P2^ 7 ;
  12. sbit T=P2^6 ;
  13. unsigned int  time=0;
  14. unsigned long S=0;
  15. bit   flag =0;
  16. unsigned char disbuff[4] ={ 0,0,0,0,};
  17. unsigned char code str1[]={"range   temp"}
  18. float RxBuf,disdata[5] ;
  19. uint tvalue;//溫度值
  20. uchar tflag;//溫度正負(fù)標(biāo)志

  21. unsigned   char   code    ASCII [15]=
  22. {'0','1','2','3','4','5','6','7','8','9','.','-','M'};     
  23. uchar   Tx,Ax;

  24. /*********1cd1602 程序*********/
  25. Void delay lms(unsigned int ms)//延時1毫秒(不夠精確的)

  26. {
  27.         unsigned int i,j;
  28.         for(i=0;i > ms;i++);
  29.         for(j=0;j > 100;j++);
  30. }
  31. void wr_com(unsi gned char com)//寫指令//
  32. {
  33. delaylms(1) ;
  34. RS=0;
  35. RW=0;
  36. EN=0;
  37. P0=com;
  38. delay1ms(1) ;
  39. EN=1;
  40. delay1ms(1);
  41. EN=0;
  42. }

  43. void lcd_init 0//初始化設(shè)置//
  44. {
  45. //BLK=0 ;

  46. delay1ms(15) ;
  47. wr_com(0x38) ;
  48. delaylms(5)
  49. wr_com(0x08) ;delay1ms(5) ;
  50. wr_com(0x01) ;delaylms(5) ;
  51. wr_com(0x06) ;delay1ms(5) ;
  52. wr_com(0x0c) ;delay1ms(5) ;
  53. }
  54. void display(unsigned char *p)//顯示//
  55. {
  56. while(*p!='\0')
  57. {
  58. wr_dat (*p);
  59. p++;
  60. //delaylms(1) ;
  61. }
  62. }
  63. init_play()//初始化顯示
  64. {
  65. lcd_initO ;
  66. wr_com(0x80)
  67. display(strl) ;
  68. }
  69. /***************************ds18b20程序**************/
  70. void delay_18B20(unsigned int i)//延時1微秒

  71. {
  72.         while(i--);
  73. }
  74. viod ds18b20rst()/*dx18b20復(fù)位*/
  75. {
  76.         unsigned char x=0;
  77.         DQ = 1;
  78.         delay_18B20(4);
  79.         DQ=0;
  80.         delay_18B20(100);
  81.         DQ=1;
  82.         delay_18B20(40);
  83. }

  84. uchar ds1820rd()/*讀數(shù)據(jù)*/
  85. {
  86.         unsigned char i=0;
  87.         unsigned char dat 中0:
  88.         for (i=8;i>0;i--)
  89. {
  90.         DQ = 0; //給脈沖信號
  91.         dat>>=1;
  92.         DQ = 1; //給脈沖信號
  93.         if(DQ)
  94.         dat |=0x80;
  95.         delay_18B20(10) ;
  96. }

  97.         return(dat);
  98. }

  99. void ds1820wr(uchar wdata)/*寫數(shù)據(jù)*/
  100. {
  101.         unsigned char i=0;
  102.         for (i=8; i>0;i--)
  103. {
  104.         DQ = 0;
  105.         DQ = wdata&0x01;
  106.         delay_18B20(10) ;
  107.         DQ = 1;
  108.         wdata>>=1;
  109. }
  110. }
  111. read_temp ()/*讀取溫度值并轉(zhuǎn)換*/
  112. {
  113.         uchar a,b;
  114.         ds1820rst () ;
  115.         ds1820wr(0xcc) ;//*跳過讀序列號*/

  116.         ds1820wr(0x44) ;//*啟動溫度轉(zhuǎn)換*/
  117.         ds1820rst () ;
  118.         ds1820wr (0xcc) ;//*跳過讀序列號*/
  119.         ds1820wr (0xbe) ;//*讀取溫度*/
  120.         a=ds1820rd();
  121.         b=ds1820rd();
  122.         tvalue=b ;
  123.         tvalue<<=8;
  124.         tvalue=tvalue|a;
  125.         if(tvalue<0xOfff)
  126.         tflag=0;
  127.         else
  128.         {
  129.                 tvalue=~tvalue+1;
  130.                 tflag=1;
  131.         }
  132.         tvalue=tvalue*(0.625) ;//溫度值擴大10 倍,精確到1位小?
  133.         tvalue=tvalue-15;
  134.         return(tvalue);
  135. }
  136. /***************************水****水*水水米*水***********/

  137. void show()//溫度值顯示
  138. {
  139.         uchar flagdat;
  140.         time=TH0*256+TLO;
  141.         THO=0;
  142.         TL0=0;
  143.         S=(time*1.7)/100;
  144.         disdata[0]=tvalue/1000+0x30; //百位數(shù)
  145.         disdata[1]=tvalue%1000/100+0x30;// 十位數(shù)
  146.         disdata[2]=tvalue%100/10+0x30;//個位數(shù)
  147.         disdata[3]=tvalue%10+0x30;//小數(shù)位
  148.         disdata [4 ]=0x00 ;
  149.         if(tflag==0)
  150.         flagdat=0x20;//正溫度不顯示符號
  151.         else
  152.         flagdat=0x2d;//負(fù)溫度顯示負(fù)號:-
  153. if(disdata[0]==0x30)
  154. {
  155.         disdata[0]=0x20;//如果百位為0,不顯示
  156.         if(disdata[1]=0x30)
  157.         {
  158.         disdata[11=0x20;//如果百位為0,十位為0 也不顯示
  159.         }
  160. }

  161. disbuff[0]=S%1000/100;
  162. disbuff[1]=S%1000%100/10;
  163. disbuff[2]=S%1000%100%10;
  164. disbuff[3]=S%10000%1000 %100;
  165. wr_com (0xcO) ;
  166. wr_dat (ASCII [disbuff[O]]) ;//顯示百位
  167. wr_com(Oxc1) ;
  168. wr_dat(ASCII [10]) ;
  169. wr_com(0 x c2) ;
  170. wr_dat (ASCII[disbuff[1]]) ;
  171. wr_com(0xc3)
  172. wr_dat(ASCII [disbuff[2]]) ;
  173. wr_com(0xc4) ;
  174. wr_dat(ASCII[12]) :
  175. wr_com (0xc8)
  176. wr_dat(flagdat) ;//顯示符號?
  177. wr_com (0xc9) ;
  178. wr_dat disdata[0]) ;//顯示百位
  179. wr_com (Oxca) :
  180. wr_dat(disdata[1]) ;//顯示十位
  181. wr_com(0xcb) ;
  182. wr_dat (disdata[2]) ;//顯示個位
  183. wr_com (0xcc) ;
  184. wr_dat (0x2e) ;//顯示小數(shù)點
  185. wr_com (Oxcd) ;
  186. wr_dat(disdata[3]) ;//顯示小數(shù)位

  187. void StartModule()//啟動模塊
  188. {
  189. T=1;      //啟動一次模塊
  190. _nop_();
  191. _nop_();
  192. _nop_();
  193. _nop_();
  194. _nop_();
  195. _nop_();
  196. _nop_();
  197. _nop_();
  198. _nop_();
  199. _nop_();
  200. _nop_();
  201. _nop_();
  202. _nop_();
  203. _nop_();
  204. _nop_();
  205. _nop_();
  206. _nop_();
  207. _nop_();
  208. _nop_();
  209. _nop_();
  210. _nop_();
  211. _nop_();
  212. _nop_();
  213. _nop_();
  214. _nop_();

  215. T=0;
  216. }
  217. void UART_Init (void) //串口初始化
  218. {
  219.         PCON = 0x00;
  220.         SCON = 0x50; //串口工作方式為1,允許接收.
  221.         TMOD = 0x21; // T1定時方式2 C
  222.         THI = 0xfd;//波特率9600bps @ fosc = 11.0592MHz
  223.         TLI = Oxfd;//啟動T1
  224.         THO =0;
  225.         TLO =0;
  226.         ES = 1;//開串中斷.


  227.         ETO =1;
  228.         TR1=1;//開總中斷。

  229.         EA = 1;
  230. }
  231. void Send (uchar dat)
  232. {
  233.         SBUF = dat; //待發(fā)送的數(shù)據(jù)寫心緩沖區(qū)
  234.         while(!TI); //等待發(fā)送完成
  235.         TI = 0; //清等發(fā)送標(biāo)志位
  236. }
  237.         /************* 主程序********************/



  238. void main()
  239. {
  240.         UART_Init();
  241.         init_play() ;//初始化顯示
  242.         while(l)
  243.         {
  244.                 read_tempO);//讀取溫度

  245.         StartModule();
  246.         while(R) ;//當(dāng)RX 為零時等待
  247.         TRO=1;//開啟計數(shù)
  248.         while(R) ;//當(dāng)RX 為1計數(shù)并等待
  249.       
  250.         TRO=0;//關(guān)閉計數(shù)
  251.         show() ;//顯示

  252.         delaylms(80) ;//80M
  253. if(Tx==1)
  254. {
  255. Send('t');
  256. Send('e');
  257. Send('m');
  258. Send('p');
  259. Send('=');
  260. Send(disdata[1]) ;
  261. Send(disdata[2]) ;
  262. Send(C.N);
  263. Send(disdata[3]) ;
  264. Tx=0;
  265. Send ('');
  266. }
  267. if(Ax==1)
  268. {

  269. Send('r');
  270. Send('a');
  271. Send('n');
  272. Send('g');
  273. Send('e');
  274. Send('=');
  275. Send(ASCII[disbuff[0]]) ;
  276. Send('.');
  277. Send(ASCII[disbuff[1]]) ;
  278. Send(ASCII[disbuff[2]]) ;
  279. Send('');
  280. Ax=0
  281.           }
  282.          }
  283.         }
  284. void Uart_INT(void)interrupt 4 //串口中斷兩數(shù)
  285. {
  286.         uchar Rev = 0:
  287.         if(RI) //查詢接收標(biāo)志位(有數(shù)據(jù)發(fā)送過來時置為1)
  288.         {
  289.            RI = 0;
  290.            Rcv =SBUF;
  291.            RxBuf=Rcv ;
  292.            if(RxBuf=='8' ){ TxF1;}
  293.            if(RxBuf==' 0' ){Ax=1; }
  294.         }
  295. }


  296. #include<REG52.H>
  297. #include<math.h>
  298. #include<stdio.h>
  299. #include<intrins.h>
  300. #define uchar unsigned char
  301. #define uint unsigned int
  302. sbit DQ=P2^2 ;
  303. sbit RS=P3^5;
  304. sbit RW=P3^6 ;
  305. sbit EN=P3^4 ;
  306. sbit R=P2^ 7 ;
  307. sbit T=P2^6 ;
  308. unsigned int  time=0;
  309. unsigned long S=0;
  310. bit   flag =0;
  311. unsigned char disbuff[4] ={ 0,0,0,0,};
  312. unsigned char code str1[]={"range   temp"}
  313. float RxBuf,disdata[5] ;
  314. uint tvalue;//溫度值
  315. uchar tflag;//溫度正負(fù)標(biāo)志

  316. unsigned   char   code    ASCII [15]=
  317. {'0','1','2','3','4','5','6','7','8','9','.','-','M'};     
  318. uchar   Tx,Ax;

  319. /*********1cd1602 程序*********/
  320. Void delay lms(unsigned int ms)//延時1毫秒(不夠精確的)

  321. {
  322.         unsigned int i,j;
  323.         for(i=0;i > ms;i++);
  324.         for(j=0;j > 100;j++);
  325. }
  326. void wr_com(unsi gned char com)//寫指令//
  327. {
  328. delaylms(1) ;
  329. RS=0;
  330. RW=0;
  331. EN=0;
  332. P0=com;
  333. delay1ms(1) ;
  334. EN=1;
  335. delay1ms(1);
  336. EN=0;
  337. }

  338. void lcd_init 0//初始化設(shè)置//
  339. {
  340. //BLK=0 ;

  341. delay1ms(15) ;
  342. wr_com(0x38) ;
  343. delaylms(5)
  344. wr_com(0x08) ;delay1ms(5) ;
  345. wr_com(0x01) ;delaylms(5) ;
  346. wr_com(0x06) ;delay1ms(5) ;
  347. wr_com(0x0c) ;delay1ms(5) ;
  348. }
  349. void display(unsigned char *p)//顯示//
  350. {
  351. while(*p!='\0')
  352. {
  353. wr_dat (*p);
  354. p++;
  355. //delaylms(1) ;
  356. }
  357. }
  358. init_play()//初始化顯示
  359. {
  360. lcd_initO ;
  361. wr_com(0x80)
  362. display(strl) ;
  363. }
  364. /***************************ds18b20程序**************/
  365. void delay_18B20(unsigned int i)//延時1微秒

  366. {
  367.         while(i--);
  368. }
  369. viod ds18b20rst()/*dx18b20復(fù)位*/
  370. {
  371.         unsigned char x=0;
  372.         DQ = 1;
  373.         delay_18B20(4);
  374.         DQ=0;
  375.         delay_18B20(100);
  376.         DQ=1;
  377.         delay_18B20(40);
  378. }

  379. uchar ds1820rd()/*讀數(shù)據(jù)*/
  380. {
  381.         unsigned char i=0;
  382.         unsigned char dat 中0:
  383.         for (i=8;i>0;i--)
  384. {
  385.         DQ = 0; //給脈沖信號
  386.         dat>>=1;
  387.         DQ = 1; //給脈沖信號
  388.         if(DQ)
  389.         dat |=0x80;
  390.         delay_18B20(10) ;
  391. }

  392.         return(dat);
  393. }

  394. void ds1820wr(uchar wdata)/*寫數(shù)據(jù)*/
  395. {
  396.         unsigned char i=0;
  397.         for (i=8; i>0;i--)
  398. {
  399.         DQ = 0;
  400.         DQ = wdata&0x01;
  401.         delay_18B20(10) ;
  402.         DQ = 1;
  403.         wdata>>=1;
  404. }
  405. }
  406. read_temp ()/*讀取溫度值并轉(zhuǎn)換*/
  407. {
  408.         uchar a,b;
  409.         ds1820rst () ;
  410.         ds1820wr(0xcc) ;//*跳過讀序列號*/

  411.         ds1820wr(0x44) ;//*啟動溫度轉(zhuǎn)換*/
  412.         ds1820rst () ;
  413.         ds1820wr (0xcc) ;//*跳過讀序列號*/
  414.         ds1820wr (0xbe) ;//*讀取溫度*/
  415.         a=ds1820rd();
  416.         b=ds1820rd();
  417.         tvalue=b ;
  418.         tvalue<<=8;
  419.         tvalue=tvalue|a;
  420.         if(tvalue<0xOfff)
  421.         tflag=0;
  422.         else
  423.         {
  424.                 tvalue=~tvalue+1;
  425.                 tflag=1;
  426.         }
  427.         tvalue=tvalue*(0.625) ;//溫度值擴大10 倍,精確到1位小?
  428.         tvalue=tvalue-15;
  429.         return(tvalue);
  430. }
  431. /***************************水****水*水水米*水***********/

  432. void show()//溫度值顯示
  433. {
  434.         uchar flagdat;
  435.         time=TH0*256+TLO;
  436.         THO=0;
  437.         TL0=0;
  438.         S=(time*1.7)/100;
  439.         disdata[0]=tvalue/1000+0x30; //百位數(shù)
  440.         disdata[1]=tvalue%1000/100+0x30;// 十位數(shù)
  441.         disdata[2]=tvalue%100/10+0x30;//個位數(shù)
  442.         disdata[3]=tvalue%10+0x30;//小數(shù)位
  443.         disdata [4 ]=0x00 ;
  444.         if(tflag==0)
  445.         flagdat=0x20;//正溫度不顯示符號
  446.         else
  447.         flagdat=0x2d;//負(fù)溫度顯示負(fù)號:-
  448. if(disdata[0]==0x30)
  449. {
  450.         disdata[0]=0x20;//如果百位為0,不顯示
  451.         if(disdata[1]=0x30)
  452.         {
  453.         disdata[11=0x20;//如果百位為0,十位為0 也不顯示
  454.         }
  455. }

  456. disbuff[0]=S%1000/100;
  457. disbuff[1]=S%1000%100/10;
  458. disbuff[2]=S%1000%100%10;
  459. disbuff[3]=S%10000%1000 %100;
  460. wr_com (0xcO) ;
  461. wr_dat (ASCII [disbuff[O]]) ;//顯示百位
  462. wr_com(Oxc1) ;
  463. wr_dat(ASCII [10]) ;
  464. wr_com(0 x c2) ;
  465. wr_dat (ASCII[disbuff[1]]) ;
  466. wr_com(0xc3)
  467. wr_dat(ASCII [disbuff[2]]) ;
  468. wr_com(0xc4) ;
  469. wr_dat(ASCII[12]) :
  470. wr_com (0xc8)
  471. wr_dat(flagdat) ;//顯示符號?
  472. wr_com (0xc9) ;
  473. wr_dat disdata[0]) ;//顯示百位
  474. wr_com (Oxca) :
  475. wr_dat(disdata[1]) ;//顯示十位
  476. wr_com(0xcb) ;
  477. wr_dat (disdata[2]) ;//顯示個位
  478. wr_com (0xcc) ;
  479. wr_dat (0x2e) ;//顯示小數(shù)點
  480. wr_com (Oxcd) ;
  481. wr_dat(disdata[3]) ;//顯示小數(shù)位

  482. void StartModule()//啟動模塊
  483. {
  484. T=1;      //啟動一次模塊
  485. _nop_();
  486. _nop_();
  487. _nop_();
  488. _nop_();
  489. _nop_();
  490. _nop_();
  491. _nop_();
  492. _nop_();
  493. _nop_();
  494. _nop_();
  495. _nop_();
  496. _nop_();
  497. _nop_();
  498. _nop_();
  499. _nop_();
  500. _nop_();
  501. _nop_();
  502. _nop_();
  503. _nop_();
  504. _nop_();
  505. _nop_();
  506. _nop_();
  507. _nop_();
  508. _nop_();
  509. _nop_();

  510. T=0;
  511. }
  512. void UART_Init (void) //串口初始化
  513. {
  514.         PCON = 0x00;
  515.         SCON = 0x50; //串口工作方式為1,允許接收.
  516.         TMOD = 0x21; // T1定時方式2 C
  517.         THI = 0xfd;//波特率9600bps @ fosc = 11.0592MHz
  518.         TLI = Oxfd;//啟動T1
  519.         THO =0;
  520.         TLO =0;
  521.         ES = 1;//開串中斷.


  522.         ETO =1;
  523.         TR1=1;//開總中斷。

  524.         EA = 1;
  525. }
  526. void Send (uchar dat)
  527. {
  528.         SBUF = dat; //待發(fā)送的數(shù)據(jù)寫心緩沖區(qū)
  529.         while(!TI); //等待發(fā)送完成
  530.         TI = 0; //清等發(fā)送標(biāo)志位
  531. }
  532.         /************* 主程序********************/



  533. void main()
  534. {
  535.         UART_Init();
  536.         init_play() ;//初始化顯示
  537.         while(l)
  538.         {
  539.                 read_tempO);//讀取溫度

  540.         StartModule();
  541.         while(R) ;//當(dāng)RX 為零時等待
  542.         TRO=1;//開啟計數(shù)
  543.         while(R) ;//當(dāng)RX 為1計數(shù)并等待
  544.       
  545.         TRO=0;//關(guān)閉計數(shù)
  546.         show() ;//顯示

  547.         delaylms(80) ;//80M
  548. if(Tx==1)
  549. {
  550. Send('t');
  551. Send('e');
  552. Send('m');
  553. Send('p');
  554. Send('=');
  555. Send(disdata[1]) ;
  556. Send(disdata[2]) ;
  557. Send(C.N);
  558. Send(disdata[3]) ;
  559. Tx=0;
  560. Send ('');
  561. }
  562. if(Ax==1)
  563. {

  564. Send('r');
  565. Send('a');
  566. Send('n');
  567. Send('g');
  568. Send('e');
  569. Send('=');
  570. Send(ASCII[disbuff[0]]) ;
  571. Send('.');
  572. Send(ASCII[disbuff[1]]) ;
  573. Send(ASCII[disbuff[2]]) ;
  574. Send('');
  575. Ax=0
  576.           }
  577.          }
  578.         }
  579. void Uart_INT(void)interrupt 4 //串口中斷兩數(shù)
  580. {
  581.         uchar Rev = 0:
  582.         if(RI) //查詢接收標(biāo)志位(有數(shù)據(jù)發(fā)送過來時置為1)
  583.         {
  584.            RI = 0;
  585.            Rcv =SBUF;
  586.            RxBuf=Rcv ;
  587.            if(RxBuf=='8' ){ TxF1;}
  588.            if(RxBuf==' 0' ){Ax=1; }
  589.         }
  590. }




復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:242160 發(fā)表于 2017-12-6 09:36 | 只看該作者
怎么不能編譯
回復(fù)

使用道具 舉報

板凳
ID:255915 發(fā)表于 2017-12-6 10:39 來自手機 | 只看該作者
需要生成hex文件
回復(fù)

使用道具 舉報

地板
ID:248503 發(fā)表于 2017-12-6 12:12 | 只看該作者
多處缺少分號,全角符號不可以用,l和1混用,o和零混用,缺少一個函數(shù),wrdat,錯誤太多了,樓主應(yīng)該從某本書上抄的,
回復(fù)

使用道具 舉報

5#
ID:231046 發(fā)表于 2017-12-6 14:00 | 只看該作者
應(yīng)該是抄的,要注意程序書寫規(guī)則,該用什么用什么,不能亂,也不能少符號。
回復(fù)

使用道具 舉報

6#
ID:213173 發(fā)表于 2017-12-6 14:08 | 只看該作者

滿滿的抄寫錯誤,如何編譯?
回復(fù)

使用道具 舉報

7#
ID:258226 發(fā)表于 2017-12-6 16:19 | 只看該作者
大部分編譯環(huán)境都有在線編譯功能呀,把代碼敲進(jìn)去的時候明顯的語法錯誤時會被紅線標(biāo)注的,你這樣明顯的錯誤先自己查一遍吧,比如什么函數(shù)名后面的0),應(yīng)該是()吧,而且沒傳遞參數(shù)個人也習(xí)慣寫void而不是空著,改完再把編譯錯誤信息也發(fā)一下
回復(fù)

使用道具 舉報

8#
ID:223214 發(fā)表于 2017-12-6 17:24 | 只看該作者
你這個有多個頭文件名呀
回復(fù)

使用道具 舉報

9#
ID:258304 發(fā)表于 2017-12-6 19:14 | 只看該作者
有時候重復(fù)定義了也會編譯不了
回復(fù)

使用道具 舉報

10#
ID:149988 發(fā)表于 2017-12-6 19:58 | 只看該作者

RE: 哪位大神看一下程序 怎么不能編譯

Pro_main.C(18): error C141: syntax error near 'float'原因unsigned char code str1[]={"range   temp"}缺少“;”號
Void delay lms(unsigned int ms)中Void的V寫成了大寫V應(yīng)為v
Void delay lms(unsigned int ms)原因Void delay lms(unsigned int ms)中Void 用了大寫V。
Pro_main.C(40): error C202: 'com': undefined identifier原因P0=com;com沒有定義
Pro_main.C(37): error C141: syntax error near 'delaylms'
Pro_main.C(37): error C231: '_delaylms': redefinition
char com缺少“;”號
回復(fù)

使用道具 舉報

11#
ID:111634 發(fā)表于 2017-12-6 20:48 | 只看該作者
抄不全是因為不懂c51!
回復(fù)

使用道具 舉報

12#
ID:258375 發(fā)表于 2017-12-6 22:41 | 只看該作者
unsigned char code str1[]={"range   temp"}//此處缺少分號unsigned char code str1[]={"range   temp"};
Void delay lms(unsigned int ms)//延時1毫秒(不夠精確的) Void 錯誤  void   delay lms - >delay_1ms

void wr_com(unsi gned char com)//寫指令//  unsigned

void lcd_init 0//初始化設(shè)置//void lcd_init()

void lcd_init()//初始化設(shè)置//
{
//BLK=0 ;

delay_1ms(15) ;
wr_com(0x38) ;
delay_1ms(5)//缺少分號
wr_dat//沒定義
錯誤一大堆






回復(fù)

使用道具 舉報

13#
ID:258478 發(fā)表于 2017-12-7 09:45 | 只看該作者
基礎(chǔ)錯誤太多了,編譯會有錯誤提示,從一天開始修改
回復(fù)

使用道具 舉報

14#
ID:257664 發(fā)表于 2017-12-7 10:14 | 只看該作者
多處缺少分號,全角符號不可以用,l和1混用,o和零混用,缺少一個函數(shù),仔細(xì)檢查
回復(fù)

使用道具 舉報

15#
ID:258520 發(fā)表于 2017-12-7 10:38 | 只看該作者
有錯
回復(fù)

使用道具 舉報

16#
ID:258096 發(fā)表于 2017-12-7 11:24 | 只看該作者
Void delay lms(unsigned int ms);一看就是復(fù)制粘貼出來的程序
回復(fù)

使用道具 舉報

17#
ID:258556 發(fā)表于 2017-12-7 11:38 | 只看該作者
一個一個解決錯誤
回復(fù)

使用道具 舉報

18#
ID:155507 發(fā)表于 2017-12-7 21:47 | 只看該作者
解決了, 能編譯

  1. #include <REG52.H>
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <intrins.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int

  7. sbit DQ=P2^2 ;
  8. sbit RS=P3^5;
  9. sbit RW=P3^6 ;
  10. sbit EN=P3^4 ;
  11. sbit R=P2^ 7 ;
  12. sbit T=P2^6 ;
  13. unsigned int  time=0;
  14. unsigned long S=0;
  15. bit   flag =0;
  16. unsigned char disbuff[4] ={ 0,0,0,0,};
  17. unsigned char code str1[]={"range   temp"};
  18. float RxBuf, disdata[5];
  19. uint tvalue; //溫度值
  20. uchar tflag; //溫度正負(fù)標(biāo)志

  21. unsigned   char   code    ASCII [15]=
  22. {'0','1','2','3','4','5','6','7','8','9','.','-','M'};     
  23. uchar   Tx,Ax;

  24. /*********1cd1602 程序*********/
  25. void delaylms(unsigned int ms)//延時1毫秒(不夠精確的)
  26. {
  27.         unsigned int i,j;
  28.         for(i=0;i > ms;i++)
  29.          for(j=0;j > 100;j++);
  30. }

  31. void wr_com(unsigned char com)//寫指令//
  32. {
  33.         delaylms(1);
  34.         RS=0;
  35.         RW=0;
  36.         EN=0;
  37.         P0=com;
  38.         delaylms(1);
  39.         EN=1;
  40.         delaylms(1);
  41.         EN=0;
  42. }

  43. void wr_dat(unsigned char dat)//寫入數(shù)據(jù)//
  44. {
  45.         delaylms(1);
  46.         RS=1;
  47.         RW=0;
  48.         EN=0;
  49.         P0=dat;
  50.         delaylms(1);
  51.         EN=1;
  52.         delaylms(1);
  53.         EN=0;
  54. }

  55. void lcd_init()//初始化設(shè)置//
  56. {
  57.         //BLK=0 ;

  58.         delaylms(15) ;
  59.         wr_com(0x38) ;
  60.         delaylms(5);
  61.         wr_com(0x08) ;delaylms(5) ;
  62.         wr_com(0x01) ;delaylms(5) ;
  63.         wr_com(0x06) ;delaylms(5) ;
  64.         wr_com(0x0c) ;delaylms(5) ;
  65. }

  66. void display(unsigned char *p)//顯示//
  67. {
  68.         while(*p!='\0')
  69.         {
  70.                 wr_dat(*p);
  71.                 p++;
  72.                 //delaylms(1) ;
  73.         }
  74. }

  75. void init_play()//初始化顯示
  76. {
  77.         lcd_init();
  78.         wr_com(0x80);
  79.         display(str1) ;
  80. }

  81. //***************************ds18b20程序************** /
  82. void delay_18B20(unsigned int i)//延時1微秒
  83. {
  84.         while(i--);
  85. }

  86. void ds1820rst() //*dx18b20復(fù)位* /
  87. {
  88.         unsigned char x=0;
  89.         DQ = 1;
  90.         delay_18B20(4);
  91.         DQ=0;
  92.         delay_18B20(100);
  93.         DQ=1;
  94.         delay_18B20(40);
  95. }

  96. uchar ds1820rd() //*讀數(shù)據(jù)* /
  97. {
  98.         unsigned char i=0;
  99.         unsigned char dat=0;
  100.         for (i=8;i>0;i--)
  101.         {
  102.                 DQ = 0; //給脈沖信號
  103.                 dat>>=1;
  104.                 DQ = 1; //給脈沖信號
  105.                 if(DQ)
  106.                 dat |=0x80;
  107.                 delay_18B20(10) ;
  108.         }

  109.         return(dat);
  110. }

  111. void ds1820wr(uchar wdata)//*寫數(shù)據(jù)* /
  112. {
  113.         unsigned char i=0;
  114.         for (i=8; i>0;i--)
  115.         {
  116.                 DQ = 0;
  117.                 DQ = wdata&0x01;
  118.                 delay_18B20(10) ;
  119.                 DQ = 1;
  120.                 wdata>>=1;
  121.         }
  122. }

  123. unsigned int read_temp() //*讀取溫度值并轉(zhuǎn)換* /
  124. {
  125.         uchar a,b;
  126.         ds1820rst();
  127.         ds1820wr(0xcc) ;//*跳過讀序列號*/

  128.         ds1820wr(0x44) ;//*啟動溫度轉(zhuǎn)換*/
  129.         ds1820rst() ;
  130.         ds1820wr(0xcc) ;//*跳過讀序列號*/
  131.         ds1820wr(0xbe) ;//*讀取溫度*/
  132.         a=ds1820rd();
  133.         b=ds1820rd();
  134.         tvalue=b ;
  135.         tvalue<<=8;
  136.         tvalue=tvalue|a;
  137.         if(tvalue< 0x0fff)
  138.         tflag=0;
  139.         else
  140.         {
  141.                 tvalue=~tvalue+1;
  142.                 tflag=1;
  143.         }
  144.         tvalue=tvalue*(0.625) ;//溫度值擴大10 倍,精確到1位小?
  145.         tvalue=tvalue-15;
  146.         return(tvalue);
  147. }
  148. //***************************水****水*水水米*水*********** /

  149. void show()//溫度值顯示
  150. {
  151.         uchar flagdat;
  152.         time=TH0*256+TL0;
  153.         TH0=0;
  154.         TL0=0;
  155.         S=(time*1.7)/100;
  156.         disdata[0]=tvalue/1000+0x30; //百位數(shù)
  157.         disdata[1]=tvalue%1000/100+0x30;// 十位數(shù)
  158.         disdata[2]=tvalue%100/10+0x30;//個位數(shù)
  159.         disdata[3]=tvalue%10+0x30;//小數(shù)位
  160.         disdata[4]=0x00 ;
  161.         if(tflag==0)
  162.         flagdat=0x20;//正溫度不顯示符號
  163.         else
  164.         flagdat=0x2d;//負(fù)溫度顯示負(fù)號:-
  165.         if(disdata[0]==0x30)
  166.         {
  167.                 disdata[0]=0x20;//如果百位為0,不顯示
  168.                 if(disdata[1]==0x30)
  169.                 {
  170.                         disdata[11]=0x20;//如果百位為0,十位為0 也不顯示
  171.                 }
  172.         }

  173.         disbuff[0]=S%1000/100;
  174.         disbuff[1]=S%1000%100/10;
  175.         disbuff[2]=S%1000%100%10;
  176.         disbuff[3]=S%10000%1000 %100;
  177.         wr_com (0xc0) ;
  178.         wr_dat (ASCII [disbuff[0]]);//顯示百位
  179.         wr_com(0xc1) ;
  180.         wr_dat(ASCII [10]) ;
  181.         wr_com(0xc2) ;
  182.         wr_dat (ASCII[disbuff[1]]);
  183.         wr_com(0xc3);
  184.         wr_dat(ASCII [disbuff[2]]);
  185.         wr_com(0xc4) ;
  186.         wr_dat(ASCII[12]);
  187.         wr_com (0xc8);
  188.         wr_dat(flagdat) ;//顯示符號?
  189.         wr_com (0xc9) ;
  190.         wr_dat (disdata[0]) ;//顯示百位
  191.         wr_com (0xca);
  192.         wr_dat(disdata[1]) ;//顯示十位
  193.         wr_com(0xcb) ;
  194.         wr_dat (disdata[2]) ;//顯示個位
  195.         wr_com (0xcc) ;
  196.         wr_dat (0x2e) ;//顯示小數(shù)點
  197.         wr_com (0xcd) ;
  198.         wr_dat(disdata[3]) ;//顯示小數(shù)位
  199. }

  200. void StartModule()//啟動模塊
  201. {
  202.         T=1;      //啟動一次模塊
  203.         _nop_();
  204.         _nop_();
  205.         _nop_();
  206.         _nop_();
  207.         _nop_();
  208.         _nop_();
  209.         _nop_();
  210.         _nop_();
  211.         _nop_();
  212.         _nop_();
  213.         _nop_();
  214.         _nop_();
  215.         _nop_();
  216.         _nop_();
  217.         _nop_();
  218.         _nop_();
  219.         _nop_();
  220.         _nop_();
  221.         _nop_();
  222.         _nop_();
  223.         _nop_();
  224.         _nop_();
  225.         _nop_();
  226.         _nop_();
  227.         _nop_();

  228.         T=0;
  229. }

  230. void UART_Init(void) //串口初始化
  231. {
  232.         PCON = 0x00;
  233.         SCON = 0x50; //串口工作方式為1,允許接收.
  234.         TMOD = 0x21; // T1定時方式2 C
  235.         TH1 = 0xfd;//波特率9600bps @ fosc = 11.0592MHz
  236.         TL1 = 0xfd;//啟動T1
  237.         TH0 =0;
  238.         TL0 =0;
  239.         ES = 1;//開串中斷.


  240.         ET0 =1;
  241.         TR1=1;//開總中斷。

  242.         EA = 1;
  243. }

  244. void Send(uchar dat)
  245. {
  246.         SBUF = dat; //待發(fā)送的數(shù)據(jù)寫心緩沖區(qū)
  247.         while(!TI); //等待發(fā)送完成
  248.         TI = 0; //清等發(fā)送標(biāo)志位
  249. }


  250. //************* 主程序******************** /



  251. void main()
  252. {
  253.         UART_Init();
  254.         init_play() ;//初始化顯示
  255.         while(1)
  256.         {
  257.                 read_temp();//讀取溫度

  258.                 StartModule();
  259.                 while(R) ;//當(dāng)RX 為零時等待
  260.                 TR0=1;//開啟計數(shù)
  261.                 while(R) ;//當(dāng)RX 為1計數(shù)并等待
  262.                
  263.                 TR0=0;//關(guān)閉計數(shù)
  264.                 show() ;//顯示

  265.                 delaylms(80) ;//80M
  266.                 if(Tx==1)
  267.                 {
  268.                         Send('t');
  269.                         Send('e');
  270.                         Send('m');
  271.                         Send('p');
  272.                         Send('=');
  273.                         Send(disdata[1]) ;
  274.                         Send(disdata[2]) ;
  275.                         Send('C');
  276.                         Send(disdata[3]) ;
  277.                         Tx=0;
  278.                         Send (' ');
  279.                 }
  280.                 if(Ax==1)
  281.                 {

  282.                         Send('r');
  283.                         Send('a');
  284.                         Send('n');
  285.                         Send('g');
  286.                         Send('e');
  287.                         Send('=');
  288.                         Send(ASCII[disbuff[0]]) ;
  289.                         Send('.');
  290.                         Send(ASCII[disbuff[1]]) ;
  291.                         Send(ASCII[disbuff[2]]) ;
  292.                         Send(' ');
  293.                         Ax=0;
  294.                 }
  295.         }
  296. }

  297. void Uart_INT(void)interrupt 4 //串口中斷兩數(shù)
  298. {
  299.         uchar Rcv = 0;
  300.         if(RI) //查詢接收標(biāo)志位(有數(shù)據(jù)發(fā)送過來時置為1)
  301.         {
  302.                 RI = 0;
  303.                 Rcv  = SBUF;
  304.                 RxBuf= Rcv;
  305.                 if(RxBuf=='8' ){ Tx=1;}
  306.                 if(RxBuf=='0' ){ Ax=1; }
  307.         }
  308. }
復(fù)制代碼
回復(fù)

使用道具 舉報

19#
ID:242160 發(fā)表于 2017-12-8 14:14 | 只看該作者

謝謝謝謝   我改了兩天還有錯誤
回復(fù)

使用道具 舉報

20#
ID:242160 發(fā)表于 2017-12-8 14:16 | 只看該作者
不倒翁.WZT 發(fā)表于 2017-12-6 19:58
Pro_main.C(18): error C141: syntax error near 'float'原因unsigned char code str1[]={"range   temp"} ...

謝謝  改好了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日日碰狠狠躁久久躁96avv | 欧美极品一区二区 | 日韩欧美在线一区 | 国产综合久久 | 国产特级毛片aaaaaa喷潮 | 欧美成年视频 | 美女在线一区二区 | 亚洲综合国产精品 | 四虎影院在线观看av | 一区二区在线免费观看视频 | 亚洲国产成人精品在线 | 国产视频精品视频 | 亚洲精品自在在线观看 | 久操亚洲| 亚洲精品一区二区 | 成人美女免费网站视频 | 国产精品精品久久久 | 国产情侣激情 | 91偷拍精品一区二区三区 | 亚洲国产一区二区三区四区 | 中文字幕av网 | 日本啊v在线 | 久久亚洲视频 | 久久高清 | 黄色在线免费观看视频网站 | 亚洲精品www久久久久久广东 | 国产精品a久久久久 | av免费网址| 亚洲一二三区精品 | 久久久久国产精品 | 人人干人人艹 | 精品一区二区av | 久久精品这里精品 | 日本久久久久久久久 | 日韩在线欧美 | 一区二区三区av | 欧美亚洲综合久久 | 国产视频h | 国产天堂| 香蕉久久a毛片 | 国产精品久久久久久久免费观看 |