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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3526|回復: 10
打印 上一主題 下一主題
收起左側

問題在圖片里,就是單片機串口通信的發送問題

[復制鏈接]
跳轉到指定樓層
樓主
串口問題

  1. //#include<reg51.h>
  2. #include<reg52.h>
  3. #include<intrins.h>
  4. #include<stdio.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int

  7. sbit  rs=P2^0;  
  8. sbit  rd=P2^1;
  9. sbit  lcden=P2^2;
  10. bit Flag = 0;
  11. uchar Counter = 0,Hdata = 0,Ldata = 0,Pulse = 0;
  12. uchar code asc[]="0123456789";
  13. /***********************延時子程序********************/
  14. void delay(uint xms)
  15. {
  16.         uint x;
  17.         while(xms--) for(x=0;x<120;x++);
  18. }


  19. //-----------------------------------------------------------------
  20. // 忙等待
  21. //-----------------------------------------------------------------
  22. void Busy_Wait()
  23. {
  24.         uchar LCD_Status;                                                //液晶狀態字節變量
  25.         do
  26.         {
  27.          P0=0xff;
  28.          lcden=0;rs=0;rd=1;
  29.          lcden=1;LCD_Status=P0;
  30.          lcden=0;
  31.         } while (LCD_Status & 0x80);                        //液晶忙繼續循環
  32. }

  33. void write_com(uchar com)
  34. {
  35.   Busy_Wait();
  36.   rs=0;
  37.   rd=0;
  38.   lcden=0;
  39.   P0=com;
  40.   delay(3);
  41.   lcden=1;
  42.   delay(3);
  43.   lcden=0;  
  44. }

  45. void write_date(uchar date)
  46. {
  47.   Busy_Wait();
  48.   rs=1;
  49.   rd=0;
  50.   lcden=0;
  51.   P0=date;
  52.   delay(3);
  53.   lcden=1;
  54.   delay(3);
  55.   lcden=0;  
  56. }  

  57. void Display_String(uchar *p,uchar com)
  58. {  uchar i;
  59.    write_com(com);
  60.    for(i=0;i<14;i++)
  61.    {
  62.    write_date(p[i]);
  63.   }
  64. }


  65. void XS(        unsigned long R)
  66. {
  67.         write_com(0xc0);
  68.                         write_date(0x20);
  69.                 write_date(0x20);
  70.                 write_date(0x20);
  71.          write_date(0x20);
  72.          write_date(asc[R/100000]);
  73.                 write_date(asc[R%100000/10000]);
  74.                 write_date(asc[R%10000/1000]);
  75.                 write_date(asc[R%1000/100]);
  76.                 write_date(asc[R%100/10]);
  77.                 write_date(asc[R%10]);
  78.                 //write_date(0x20);

  79. }

  80. void init_lcd()
  81. {
  82.   lcden=0;
  83.   write_com(0x38);
  84.   write_com(0x0c);//開顯示光標
  85.   write_com(0x06);
  86.   write_com(0x01);//clear
  87.   write_com(0x80);
  88.   Display_String("  test result:",0x80);
  89.   //Display_String("  ID:1800800302  ",0xc0);
  90. }


  91. void init_time()
  92. {
  93.         TMOD=0x51;
  94.         TH0=0x40;
  95.         TL0=0x00;
  96.         TH1=0x00;
  97.         TL1=0x00;
  98.         ET0=1;
  99.         ET1=1;
  100.         EA=1;
  101.         ET2=1;
  102.         ES=1;
  103.         PT1=1;
  104.         TR0=1;
  105.         TR1=1;
  106. }
  107. void init_time2()
  108. {
  109.         SCON=0x50;//0101 0000;波特率9600bps
  110.         TL2=0xE8;
  111.         TH2=0xFF;
  112.         TH2=RCAP2H;
  113.         TL2=RCAP2L;
  114.         T2CON=0x34;
  115. }

  116. void Time0() interrupt 1
  117. {
  118. TL0 = 0x00;
  119. TH0 = 0x40;
  120. Counter++;
  121. if (Counter == 20)
  122.         {
  123. P1= 0XFE;
  124. TR0 = 0;
  125. TR1 = 0;
  126. Counter = 0;
  127. Flag = 1;
  128.         }
  129. }

  130. void Time1() interrupt 2
  131. {
  132. Pulse++;
  133. }
  134. void main()
  135. {
  136.         uint i;
  137.         uint j=0;
  138.         uchar dat[10];
  139.         unsigned long frequency;
  140.                 unsigned long R;
  141.         float t;
  142.         float R2;
  143.         float R1;
  144.         P3 = 0xFF;
  145.         init_time();
  146.         init_lcd();
  147. while(1)
  148. {
  149.         if (Flag)
  150.         {
  151.                 P1=0XFF;
  152.                 Hdata = TH1;
  153.                 Ldata = TL1;
  154.                 frequency = ((Pulse*65535)+(Hdata*256)+Ldata);
  155.                 t=1/(float)frequency;
  156.                 R2=t/0.69*1000000;
  157.                 R1=(R2-1000)/2;
  158.                 R=(        unsigned long )R1;
  159.                 //串口開始
  160.                 for(i=0;i<10;i++)
  161.                 dat[i]=R;
  162.                 i=0;
  163.                 init_time2();
  164.                 while(j<10)
  165.                 {
  166.                 SBUF=dat[i];
  167.                 while(TI)
  168.                 TI=0;
  169.                 j++;
  170.                 }
  171.                 j=0;
  172.                 //串口
  173.                 Flag = 0;
  174.                 Pulse = 0;
  175.                 TH1 = 0x00;
  176.                 TL1 = 0x00;
  177.                 TH0 = 0x40;//4c
  178.                 TL0 = 0x00;
  179.                 TR1 = 1;
  180.                 TR0 = 1;
  181.         //        write_com(0x01);//clear
  182.                         delay(5);
  183.         }
  184.                 XS(R);
  185.         delay(5);
  186.        
  187.         }
  188. }
復制代碼


R.rar

58.23 KB, 下載次數: 8

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

使用道具 舉報

沙發
ID:123289 發表于 2021-7-10 08:45 | 只看該作者
本帖最后由 yzwzfyz 于 2021-7-10 09:01 編輯

會不會是被仿對象中沒有T2?
舊式51,T2CON定義在C8H,
現在的STC-51的C8H,定義為P5。
不知道系統會如何編譯T2CON。
回復

使用道具 舉報

板凳
ID:777603 發表于 2021-7-10 11:05 | 只看該作者
yzwzfyz 發表于 2021-7-10 08:45
會不會是被仿對象中沒有T2?
舊式51,T2CON定義在C8H,
現在的STC-51的C8H,定義為P5。

有的
回復

使用道具 舉報

地板
ID:94031 發表于 2021-7-10 15:03 | 只看該作者
uchar dat[10];,unsigned long R;,讓 dat[i]=R;就有問題。
回復

使用道具 舉報

5#
ID:777603 發表于 2021-7-10 15:08 來自觸屏版 | 只看該作者
xuyaqi 發表于 2021-7-10 15:03
uchar dat[10];,unsigned long R;,讓 dat=R;就有問題。

我知道類型不同,但我調試發現是有值的,但是發送不成功,dat有值,但SBUF一直都是0。
回復

使用道具 舉報

6#
ID:777603 發表于 2021-7-10 15:09 來自觸屏版 | 只看該作者
xuyaqi 發表于 2021-7-10 15:03
uchar dat[10];,unsigned long R;,讓 dat=R;就有問題。

我只是想隨便試試能不能發送
回復

使用道具 舉報

7#
ID:777603 發表于 2021-7-10 15:10 來自觸屏版 | 只看該作者
黃冬梅 發表于 2021-7-10 15:08
我知道類型不同,但我調試發現是有值的,但是發送不成功,dat有值,但SBUF一直都是0。

加個好友教教我?孩子調不出來了
回復

使用道具 舉報

8#
ID:94031 發表于 2021-7-10 19:48 | 只看該作者
黃冬梅 發表于 2021-7-10 15:10
加個好友教教我?孩子調不出來了

你是protus仿真,還是有硬件調試,如果protus仿真,我勸你不要搞得怎么復雜,想復雜直接焊硬件調試,protus仿真lcd顯示全用軟件模擬跟實際差得遠,就不要浪費時間了。
回復

使用道具 舉報

9#
ID:777603 發表于 2021-7-11 19:06 | 只看該作者
xuyaqi 發表于 2021-7-10 19:48
你是protus仿真,還是有硬件調試,如果protus仿真,我勸你不要搞得怎么復雜,想復雜直接焊硬件調試,prot ...

我怕把硬件做回來電路板就固定了,到時出問題更加難改
回復

使用道具 舉報

10#
ID:951931 發表于 2021-7-11 22:13 | 只看該作者
第37行你可以看一下
回復

使用道具 舉報

11#
ID:161164 發表于 2021-7-12 00:45 | 只看該作者
R.rar里的Simulate.DSN不知到用什么開
不知你硬件怎么接
純推理
先假設R得到的值是正確的
把174~184行代碼
  1.                 for(i=0;i<10;i++)
  2.                 dat[i]=R;
  3.                 i=0;
  4.                 init_time2();
  5.                 while(j<10)
  6.                 {
  7.                 SBUF=dat[i];
  8.                 while(TI)
  9.                 TI=0;
  10.                 j++;
  11.                 }
復制代碼
改為
  1.     for(i = 0;i <10 ;i++)
  2.     {
  3.         dat[i] = R % 10;
  4.         R = R / 10;
  5.     }
  6.     bit SkipZero = 0;
  7.     for(i = 9;i >=0;i--)
  8.     {
  9.         if(dat[i] != 0 || SkipZero)
  10.         {
  11.             SkipZero = 1;
  12.             SBUF=dat[i];
  13.             while(TI)
  14.             TI=0;
  15.         }
  16.     }
復制代碼
試試看

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄网站色大毛片 | 黄色免费在线观看网站 | 久久精品欧美一区二区三区不卡 | 国产免费观看久久黄av片涩av | 美女福利视频一区 | 2020国产在线 | 亚洲人成在线观看 | 在线观看av不卡 | 国产精品国产成人国产三级 | 久久久人成影片一区二区三区 | 国产精品免费一区二区三区四区 | 亚洲第一在线 | 一区二区精品 | 国产精品久久久久久久午夜片 | 亚洲美女一区 | 中文一级片 | 中文字幕一区在线观看视频 | 亚洲国产成人精品女人久久久 | 欧美jizzhd精品欧美巨大免费 | av一二三区 | 久久一本 | 日本在线视频不卡 | 精品国产乱码一区二区三 | 久久国内精品 | 午夜精品久久久久久久99黑人 | 成人在线一区二区三区 | 欧美黄在线观看 | 国产精品久久 | 欧美综合在线视频 | 一区二区三区 在线 | 日本人做爰大片免费观看一老师 | 国产精品福利视频 | 成人毛片在线视频 | 成人在线不卡 | 欧美亚洲第一区 | 福利影院在线看 | a在线视频观看 | 亚洲一二三区精品 | 色视频成人在线观看免 | 成人性生交大片免费看r链接 | 欧美在线色 |