找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為什么這個單片機(jī)電路沒有排阻沒有驅(qū)動依然可以運行求專業(yè)詳細(xì)解答

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:872264 發(fā)表于 2021-1-3 12:31 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
  1. #include<Reg52.h>
  2. int SELECT[8]={0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE};         //位選數(shù)組
  3. int LED[17]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71,0X40};
  4. //LED數(shù)碼管字形碼集合數(shù)組
  5. int SELECT1[2][4]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};//篩選異或結(jié)果集合數(shù)組
  6. int DISPLAY[8]={0X40,0X40,0X40,0X40,0X40,0X40,0X40,0X40};//初始化顯示數(shù)組
  7. int flag;

  8. void delay(int ms)
  9. {
  10.         int i,j;
  11.         for(i=ms;i>0;i--)
  12.                 for(j=110;j>0;j--);      
  13. }
  14. //延時函數(shù) (1ms)

  15. void display(int wei,int L[])//wei為位選數(shù)目
  16. {         
  17.         int k;
  18.         for(k=0;k<wei;k++){
  19.                 P0=SELECT[wei-1-k];
  20.                 P2=L[k];
  21.                 delay(1);
  22.                 P2=0X00;//消隱
  23.         }
  24. }//顯示函數(shù)——P0位選,P2段選

  25. int button(int pp,int new)//p1為0X0F(篩選行)或0XF0(篩選列)
  26. {        int a,p,q,m;//new為當(dāng)前P1端口按鍵狀態(tài),a為異或結(jié)果,p、q為循環(huán)計數(shù)變量,m為所在行、列
  27.         if(new==pp)
  28.                 {flag=0;return flag;}        //未有按鍵按下標(biāo)志
  29.         else{
  30.                 delay(1);
  31.                 if(new!=pp)
  32.                 {      
  33.                         a=new^pp;
  34.                         for(p=0;p<2;p++)
  35.                                 for(q=0;q<4;q++)
  36.                                         if(SELECT1[p][q]==a) m=q+1;        //遍歷異或結(jié)果集合數(shù)組后找到所在行、列
  37.                         }
  38.                 return m;
  39.                 }//篩選出行或列
  40. }//判斷按鍵所在行列位置,P1為按鍵接口端

  41. void main()
  42. {        int x,y,sum,n,temp;//x為行,y為列,sum為鍵值
  43.         while(1){
  44.         P1=0X0F;temp=P1;
  45.         x=button(0X0F,temp);
  46.         P1=0XF0;temp=P1;//用于判斷是否是新的按鍵值
  47.         y=button(0XF0,temp);
  48.         if(y==0)
  49.                 display(8,DISPLAY);
  50.         else{
  51.                 flag++;
  52.                 sum=4*(x-1)+(y-1);
  53.                 if(flag==1)
  54.                         for(n=0;n<7;n++)
  55.                                 DISPLAY[n]=DISPLAY[n+1];
  56.                         DISPLAY[7]=LED[sum];//更改顯示數(shù)組
  57.                 display(8,DISPLAY) ;
  58.         }
  59.         }
  60. }
  61. {  uchar sound;
  62.   for(sound=50;sound>0;sound--)
  63.   {
  64.    speaker=0;
  65.    delay(1);
  66.    speaker=1;
  67.    delay(1);
  68.   }}                                                                        
復(fù)制代碼

最佳答案

查看完整內(nèi)容

沒用過這個單片機(jī),如果它的IO口可以設(shè)置強推挽輸出,你看一下相應(yīng)的PDF,再配置一下相關(guān)的寄存器就可以了
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:377210 發(fā)表于 2021-1-3 12:31 | 只看該作者
kanadexiw 發(fā)表于 2021-1-3 22:00
at89c51也可以設(shè)置強推挽輸出嗎?具體如何設(shè)置呢求大佬解答

沒用過這個單片機(jī),如果它的IO口可以設(shè)置強推挽輸出,你看一下相應(yīng)的PDF,再配置一下相關(guān)的寄存器就可以了
回復(fù)

使用道具 舉報

板凳
ID:692599 發(fā)表于 2021-1-3 19:39 | 只看該作者
單片機(jī)IO口設(shè)置成強推挽輸出就可以了
回復(fù)

使用道具 舉報

地板
ID:377210 發(fā)表于 2021-1-3 19:49 | 只看該作者
I/O設(shè)置成強推挽輸出和動態(tài)掃描顯示
回復(fù)

使用道具 舉報

5#
ID:390416 發(fā)表于 2021-1-3 19:55 | 只看該作者
在這種仿真軟件里面 什么都是可以的。真正到了實物,你就慢慢折騰吧。反正不按規(guī)則做,問題一大把
回復(fù)

使用道具 舉報

6#
ID:96682 發(fā)表于 2021-1-3 20:04 來自手機(jī) | 只看該作者
這得看程序及所使用的硬件能否滿足耍
回復(fù)

使用道具 舉報

7#
ID:96682 發(fā)表于 2021-1-3 20:13 來自手機(jī) | 只看該作者
要求,如用的單片機(jī)驅(qū)動能力、數(shù)碼管要盡可能選擇高亮的
回復(fù)

使用道具 舉報

8#
ID:343102 發(fā)表于 2021-1-3 20:47 | 只看該作者
我用親身經(jīng)歷告訴你,沒有限流排阻很不安全。
我組裝了一個定時開關(guān),采用0.22uF電容降壓+3.3v穩(wěn)壓管為單片機(jī)供電。這種電源的電流不會很大,因為電容兼具限流作用,所以在將單片機(jī)I/O口設(shè)為強推挽輸出后直接驅(qū)動數(shù)碼管。制作好以后能穩(wěn)定點亮數(shù)碼管。用了一段時間后,因為抗干擾能力差,所以在470uF濾波電容的基礎(chǔ)上又并聯(lián)一個0.47F的法拉電容,抗電壓波段能力強了,但是單片機(jī)很快就掛了。分析原因估計是法拉電容增大了放電電流,導(dǎo)致單片機(jī)燒毀。
回復(fù)

使用道具 舉報

9#
ID:872264 發(fā)表于 2021-1-3 22:00 | 只看該作者
zhangxiangliang 發(fā)表于 2021-1-3 19:39
單片機(jī)IO口設(shè)置成強推挽輸出就可以了

at89c51也可以設(shè)置成強推挽輸出嗎?如何設(shè)置求大佬解答
回復(fù)

使用道具 舉報

10#
ID:872264 發(fā)表于 2021-1-3 22:00 | 只看該作者
MOVEORDIE 發(fā)表于 2021-1-3 19:49
I/O設(shè)置成強推挽輸出和動態(tài)掃描顯示

at89c51也可以設(shè)置強推挽輸出嗎?具體如何設(shè)置呢求大佬解答
回復(fù)

使用道具 舉報

11#
ID:872264 發(fā)表于 2021-1-3 22:01 | 只看該作者
風(fēng)158 發(fā)表于 2021-1-3 20:47
我用親身經(jīng)歷告訴你,沒有限流排阻很不安全。
我組裝了一個定時開關(guān),采用0.22uF電容降壓+3.3v穩(wěn)壓管為單 ...

實踐大佬牛啊
回復(fù)

使用道具 舉報

12#
ID:870739 發(fā)表于 2021-1-3 23:15 | 只看該作者
這個真是仿真軟件,仿真軟件和實物還是有差距的,就比如這些一定要有限流電阻,最好在仿真圖上就畫上,不然做出來實物出問題,這個錯誤很難找出來的,浪費很大的時間。
回復(fù)

使用道具 舉報

13#
ID:824490 發(fā)表于 2021-1-4 09:03 | 只看該作者
真按這個仿真圖去做,你就杯具了:
沒有復(fù)位電路、沒有晶振源、輸出沒限流,電源沒濾波
沒有復(fù)位電路、沒有晶振,芯片不能工作
輸出沒限流,LED亮度不均、IO易燒。
電源沒濾波,穩(wěn)定性有問題。
回復(fù)

使用道具 舉報

14#
ID:781556 發(fā)表于 2021-1-4 09:15 | 只看該作者
首先。普通仿真衹是反應(yīng)電路是否工作,並不一定可以驗證是否可以穩(wěn)定的工作。這是兩碼事。
2.合格的電路設(shè)計應(yīng)該兼顧各種可預(yù)見與不可預(yù)見的工況中,可以提供適宜的應(yīng)對,以確保系統(tǒng)的穩(wěn)定運行,
這裏的應(yīng)對措施就包括排阻與驅(qū)動等電路。
誠如一些mcu可以在2.7V-5.5V工作,是否就不需要LDO.顯然是不專業(yè),不嚴(yán)謹(jǐn)?shù)?/td>
回復(fù)

使用道具 舉報

15#
ID:872955 發(fā)表于 2021-1-4 10:23 | 只看該作者
實際電路需要加電阻,否則會引起過流 燒壞單片機(jī) 或者顯示屏
回復(fù)

使用道具 舉報

16#
ID:666063 發(fā)表于 2021-1-4 11:03 | 只看該作者
排阻這是為了更加穩(wěn)定
回復(fù)

使用道具 舉報

17#
ID:235200 發(fā)表于 2021-1-4 13:43 | 只看該作者
因為接的是共陰數(shù)碼管,當(dāng)P0口輸出為低電平時才會使數(shù)碼管亮,對于其它未點亮的數(shù)碼管,雖P0口未輸出為高電平,但仍然不能使數(shù)碼管中的二極管產(chǎn)生電流而發(fā)光,所以也不會亮,致使程序運行時現(xiàn)象正常
回復(fù)

使用道具 舉報

18#
ID:517951 發(fā)表于 2021-1-4 14:47 | 只看該作者
數(shù)碼管還是需要電阻來做限流的, 發(fā)光二極管是非線性元件, 電源電壓增加一點, 電流就增加很多, 輕則影響壽命, 發(fā)光管變色,重則燒器件.
回復(fù)

使用道具 舉報

19#
ID:824490 發(fā)表于 2021-1-4 14:52 | 只看該作者
csmyldl 發(fā)表于 2021-1-4 13:43
因為接的是共陰數(shù)碼管,當(dāng)P0口輸出為低電平時才會使數(shù)碼管亮,對于其它未點亮的數(shù)碼管,雖P0口未輸出為高電 ...

當(dāng)顯示88881111時,沒有限流電阻時,你會發(fā)現(xiàn),8比1暗了好多。
回復(fù)

使用道具 舉報

20#
ID:870595 發(fā)表于 2021-1-4 16:31 | 只看該作者
仿真軟件限制比較小,實際中是必須加的
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表