欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2808|回復: 6
收起左側

一個單片機收發脈沖問題

[復制鏈接]
ID:825883 發表于 2020-10-30 08:36 | 顯示全部樓層 |閱讀模式
51單片機,P1.0發出幾個毫秒級脈沖信號,用計數器方式,P3.4接收并讓數碼管顯示個數,為什么不正確?書上實例是兩個51單片機協同工作,我只有一個開發板。
#include<reg51.h>//P1.0
sbit x=P2^0;
sbit z=P1^0;
void delay(void)
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<200;n++)
;
}
void main(void)
{       
unsigned char a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char i;
TMOD=6;
TL0=0;
TH0=0;
x=0;
P0=a[0];
z=0;
TR0=1;
delay();
for(i=0;i<5;i++)
{
delay();
        z=!z;
        P0=a[TL0];
delay();}
while (1)
;}

回復

使用道具 舉報

ID:825883 發表于 2020-10-30 08:37 | 顯示全部樓層
本帖最后由 33943417 于 2020-10-30 15:21 編輯

一個開發板用導線連接脈沖輸出端P1.0和輸入端P3.4。P3.4端開機即是高電平,是否需要初始化為低電平?試過也不行。
還是因為一個單片機或同一個電源的原因?
另:數碼管是共陽。
回復

使用道具 舉報

ID:234075 發表于 2020-10-30 10:08 | 顯示全部樓層
使用的共陽極數碼管?初始化時應該x=1吧
回復

使用道具 舉報

ID:626055 發表于 2020-10-30 11:57 | 顯示全部樓層
感覺你的PWM與顯示函數的位置有問題!
while(1);里面什么也沒有,PWM與顯示只是在main初始化的時候運行一次,之后就沒它們的事情了。
要么把這倆個放在while(1)里面,這個時間不準,要么就再啟用一個定時器中斷,把PWM放在里面,這樣時間準確一些。。至于顯示函數即可以放在while里面,也可以放在定時器中斷中條件處理。
回復

使用道具 舉報

ID:451718 發表于 2020-10-30 14:31 | 顯示全部樓層
問題1:定時器使用不當。TMOD = 6;這個8位自動重裝載模式,8位模式能夠到毫秒級別嗎? 你的晶振要用1M的恐怕都不行吧。

問題2:程序結構不通。哪些動作或者操作是需要重復? 哪些是一次賦值就可以的。 這些問題搞明白了,才能知道while(1)里面該放什么。

問題3:編程是個嚴謹的問題,特別對于初學,程序的格式一定要清晰,該空格的地方,就要空格;該放到第二行的,就不要一行寫完。雖然對編譯沒有影響,但是,養成一個好的習慣,是一個成功的開始。 看你的代碼,感覺在讀一篇沒有標點符號的文章。
回復

使用道具 舉報

ID:825883 發表于 2020-10-30 15:23 | 顯示全部樓層
zhb2004xp 發表于 2020-10-30 10:08
使用的共陽極數碼管?初始化時應該x=1吧

共陽數碼管,P2.0是控制數碼管接通的。x=0是正確的。
回復

使用道具 舉報

ID:213173 發表于 2020-10-31 11:02 | 顯示全部樓層
一個單片機發送脈沖,通過T0外部計數完全沒有問題,是樓主程序有問題。 無標題.jpg

  1. #include<reg51.h>
  2. sbit x=P2^0;
  3. sbit z=P1^0;
  4. void delay(unsigned int z)
  5. {
  6.         unsigned int m,n;
  7.         for(m=z;m>0;m--)
  8.                 for(n=110;n>0;n--);
  9. }
  10. void main(void)
  11. {        
  12.         unsigned char a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  13.         unsigned char i,j;
  14.         x=1;
  15.         z=0;
  16.         TMOD=0x06;
  17.         TL0=0x00;
  18.         TH0=0x00;
  19.         TR0=1;
  20.         while(1)
  21.         {
  22.                 for(i=0;i<(j*2);i++)
  23.                 {
  24.                         z=~z;
  25.                         delay(1);
  26.                 }
  27.                 P0=a[TL0];
  28.                 TL0=0x00;
  29.                 delay(1000);
  30.                 j++;
  31.                 if(j>9)
  32.                 j=0;
  33.         }
  34. }
復制代碼



回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表