找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)+4位數(shù)碼管怎么驅(qū)動合理?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
各位好:4位數(shù)碼管怎么驅(qū)動合理呢?我是按照普中A2開發(fā)板原理圖焊了一個電路,是可以運(yùn)行的。但他是用了2個4位共陰數(shù)碼管,用了74H245八線雙向收發(fā)器接P0口,74HC138接P2.2,P2.3,P2.4,實(shí)現(xiàn)3個IO控制8位數(shù)碼管陽極的功能。

我的問題是,在我的電路中只用了1個4位的數(shù)碼管,也需要加38譯碼器嗎?假如數(shù)碼管的陽極直連單片機(jī)4個IO口可以嗎,還是每路需要加三極管驅(qū)動?若加三極管也可以,那跟38譯碼器的方案相比哪個成本和穩(wěn)定性上更有優(yōu)勢呢(畢竟一個38譯碼器價格也不貴)?再或者我考慮換個別的IC驅(qū)動數(shù)碼管陰極?

我也查了以前的帖子,有很多電路仿真都是單片機(jī)和數(shù)碼管直連的,也有人說沒問題可以驅(qū)動,可我這是實(shí)際項(xiàng)目,跟仿真一樣處理可行嗎?是不是無論怎樣都要用個器件隔離單片機(jī)和數(shù)碼管,以免兩者互相影響?


第一次做項(xiàng)目,太多的問題,請大家不吝賜教。


        

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

使用道具 舉報

沙發(fā)
ID:624769 發(fā)表于 2022-10-2 18:21 來自觸屏版 | 只看該作者
用tm1650吧,兩個io就可以了。限流電阻都省了。
回復(fù)

使用道具 舉報

板凳
ID:332444 發(fā)表于 2022-10-2 20:53 | 只看該作者
硬件基礎(chǔ)差了點(diǎn),正確應(yīng)該查單片機(jī)IO驅(qū)動電流,看描述未觸及問題根本。
回復(fù)

使用道具 舉報

地板
ID:1044091 發(fā)表于 2022-10-2 21:07 | 只看該作者
188610329 發(fā)表于 2022-10-2 18:21
用tm1650吧,兩個io就可以了。限流電阻都省了。

感謝指點(diǎn),我這就去查資料。
我本來想89C52的IO這么多,用不上也得閑著,現(xiàn)在看來可以再找款I(lǐng)O少的MCU了。
回復(fù)

使用道具 舉報

5#
ID:88256 發(fā)表于 2022-10-2 21:23 | 只看該作者
188610329 發(fā)表于 2022-10-2 18:21
用tm1650吧,兩個io就可以了。限流電阻都省了。

是啊,還帶按鍵處理功能,還能調(diào)亮度的
回復(fù)

使用道具 舉報

6#
ID:57657 發(fā)表于 2022-10-2 21:52 | 只看該作者
IO口配置為強(qiáng)推挽即可直接驅(qū)動 (STC89、90除外)
回復(fù)

使用道具 舉報

7#
ID:997011 發(fā)表于 2022-10-3 07:00 | 只看該作者
ningsy 發(fā)表于 2022-10-2 21:07
感謝指點(diǎn),我這就去查資料。
我本來想89C52的IO這么多,用不上也得閑著,現(xiàn)在看來可以再找款I(lǐng)O少的MCU了 ...

最簡單低成本就用公陰4位數(shù)碼管和一只1K排阻就能驅(qū)動,因?yàn)楝F(xiàn)在的數(shù)碼管都是高亮的2,3毫安就很亮了。
回復(fù)

使用道具 舉報

8#
ID:213173 發(fā)表于 2022-10-3 07:56 | 只看該作者
設(shè)計學(xué)習(xí)(開發(fā))板的目的是讓初學(xué)者用有限的資源學(xué)習(xí)掌握更多的外圍硬件操控。但就某一項(xiàng)功能而言,學(xué)習(xí)板上的硬件配置未必是最佳。MCU的IO口輸出能力畢竟有限,直接驅(qū)動數(shù)碼管等其它功耗器件有點(diǎn)不堪重負(fù),74H245、74HC138等外圍IC既可以提高驅(qū)動力,又可以擴(kuò)展應(yīng)用范圍。仿真只要邏輯正確基本都能成功。與實(shí)際電路還是有較大差距。做實(shí)際項(xiàng)目首先要考慮安全、可靠。玩具、民用、工控及醫(yī)療電器的行業(yè)安全標(biāo)準(zhǔn)不同,設(shè)計方案選擇有所區(qū)別。高規(guī)格產(chǎn)品還要考慮冗余、抗擾、容錯。單就怎么合理驅(qū)動4位數(shù)碼管而言,使用專用集成電路TM1650的方案較佳,還能附加16個按鍵。當(dāng)然MCU直接驅(qū)動數(shù)碼管,只要在設(shè)計、選材和軟件上用點(diǎn)心也完全可能。
回復(fù)

使用道具 舉報

9#
ID:1044091 發(fā)表于 2022-10-3 10:24 | 只看該作者
xianfajushi 發(fā)表于 2022-10-2 20:53
硬件基礎(chǔ)差了點(diǎn),正確應(yīng)該查單片機(jī)IO驅(qū)動電流,看描述未觸及問題根本。

有道理,還沒怎么想過驅(qū)動電流這個問題。
回復(fù)

使用道具 舉報

10#
ID:1044091 發(fā)表于 2022-10-3 10:26 | 只看該作者
npn 發(fā)表于 2022-10-2 21:52
IO口配置為強(qiáng)推挽即可直接驅(qū)動 (STC89、90除外)

總是看到“強(qiáng)推挽”這種用法,一直沒弄明白具體怎么用,原來是我的STC89C52不支持啊
回復(fù)

使用道具 舉報

11#
ID:1044091 發(fā)表于 2022-10-3 11:02 | 只看該作者
lwq1947 發(fā)表于 2022-10-3 07:00
最簡單低成本就用公陰4位數(shù)碼管和一只1K排阻就能驅(qū)動,因?yàn)楝F(xiàn)在的數(shù)碼管都是高亮的2,3毫安就很亮了。

這個應(yīng)該要整體考慮程序、單片機(jī)、數(shù)碼管的選型匹配吧!我這方面的功力還不夠,客戶端的環(huán)境和用戶習(xí)慣千差萬別,如果一旦客戶抱怨(我能想到的:比如亮度不夠,抗干擾不行等等)就很麻煩了。
回復(fù)

使用道具 舉報

12#
ID:1044091 發(fā)表于 2022-10-3 11:10 | 只看該作者
wulin 發(fā)表于 2022-10-3 07:56
設(shè)計學(xué)習(xí)(開發(fā))板的目的是讓初學(xué)者用有限的資源學(xué)習(xí)掌握更多的外圍硬件操控。但就某一項(xiàng)功能而言,學(xué)習(xí)板 ...

綜合您和以上老師的建議,我決定采用TM1650的方案驅(qū)動。還有一種AIP650應(yīng)該是同一種IC,我在論壇里已經(jīng)找到了這兩種IC的驅(qū)動代碼和原理圖,下一步準(zhǔn)備買元件來測試了。
非常感謝!






回復(fù)

使用道具 舉報

13#
ID:88256 發(fā)表于 2022-10-3 12:39 | 只看該作者
ningsy 發(fā)表于 2022-10-3 11:10
綜合您和以上老師的建議,我決定采用TM1650的方案驅(qū)動。還有一種AIP650應(yīng)該是同一種IC,我在論壇里已經(jīng)找 ...

TM1650用的地方很多,很可能你拆一個電磁爐的控制板就是用的TM1650
回復(fù)

使用道具 舉報

14#
ID:16255 發(fā)表于 2022-10-3 15:18 | 只看該作者
TM1650驅(qū)動,使用51單片機(jī)。
  1. /*--------------------------------------------------------------------------
  2. TM1650.H
  3. 四位數(shù)碼管驅(qū)動 TM1650 讀寫程序
  4. --------------------------------------------------------------------------*/
  5. #ifndef __TM1650_H__
  6. #define __TM1650_H__

  7. sbit CLK = P3^7;
  8. sbit DIO = P3^6;

  9. void Set1650(uchar add,uchar dat);
  10. uchar Scan_Key(void);

  11. uchar BL = 1;          //亮度等級
  12. uchar CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9顯示代碼
  13.                                 // 0    1    2    3    4    5    6    7    8    9

  14. void Init1650(){
  15.         Set1650(0x48,(BL*16+0x01));//設(shè)定亮度,開顯示八段顯示方式,后一個字節(jié)中高位用于亮度,低位用于七段或八段顯示方式和開關(guān)顯
  16.                                                                 //如:0x71為七級亮度,八段顯示方式,開顯示;0x79為為七級亮度,七段顯示方式,開顯示
  17. }

  18. void Delay_us(uint i){ //us延時
  19.         for(;i>0;i--){
  20.                 _nop_();
  21.                 _nop_();
  22.                 _nop_();
  23.                 _nop_();
  24.                 _nop_();
  25.         }
  26. }

  27. void Start1650(void){//開始信號
  28.         CLK = 1;
  29.         DIO = 1;
  30.         Delay_us(5);
  31.         DIO = 0;
  32. }

  33. void Ask1650(void){ //ACK信號
  34.         uchar timeout = 1;
  35.         CLK = 1;
  36.         Delay_us(5);
  37.         CLK = 0;
  38.         while((DIO)&&(timeout<=100)){
  39.                 timeout++;
  40.         }
  41.         Delay_us(5);
  42.         CLK = 0;
  43. }

  44. void Stop1650(void){ //停止信號
  45.         CLK = 1;
  46.         DIO = 0;
  47.         Delay_us(5);
  48.         DIO = 1;
  49. }

  50. void WrByte1650(uchar oneByte){//寫一個字節(jié)高位在前,低位在后
  51.         uchar i;
  52.         CLK = 0;
  53.         Delay_us(1);
  54.         for(i=0;i<8;i++){
  55.                 oneByte = oneByte<<1;
  56.                 DIO = CY;
  57.                 CLK = 0;
  58.                 Delay_us(5);
  59.                 CLK = 1;
  60.                 Delay_us(5);
  61.                 CLK = 0;
  62.         }
  63. }

  64. uchar Scan_Key(void){  // 按鍵掃描
  65.         uchar i;
  66.         uchar rekey;
  67.         Start1650();
  68.         WrByte1650(0x49);//讀按鍵命令
  69.         Ask1650();
  70.         //DIO = 1;
  71.         for(i=0;i<8;i++){
  72.                 CLK = 1;
  73.                 rekey = rekey<<1;
  74.                 if(DIO){
  75.                 rekey++;
  76.                 }
  77.                 Delay_us(5);
  78.                 CLK = 0;
  79.         }
  80.         Ask1650();
  81.         Stop1650();
  82.         return(rekey);
  83. }

  84. void Set1650(uchar add,uchar dat){ //數(shù)碼管顯示
  85.                                                                 //寫顯存必須從高地址開始寫
  86.         Start1650();
  87.         WrByte1650(add); //第一個顯存地址
  88.         Ask1650();
  89.         WrByte1650(dat);
  90.         Ask1650();
  91.         Stop1650();
  92. }

  93. #endif
復(fù)制代碼
注意:TM1650不是IIC器件!!不能接在IIC線路上
回復(fù)

使用道具 舉報

15#
ID:272119 發(fā)表于 2022-10-3 20:37 | 只看該作者
ningsy 發(fā)表于 2022-10-2 21:07
感謝指點(diǎn),我這就去查資料。
我本來想89C52的IO這么多,用不上也得閑著,現(xiàn)在看來可以再找款I(lǐng)O少的MCU了 ...

看MCU還要什么功能,用多少PIN,基本都是STC15或者STC8系列,89系列已經(jīng)很老很少用在產(chǎn)品上了.關(guān)于顯示驅(qū)動我也偏向于用TM1650專業(yè)芯片,我用TM1650還幾年沒有給我惹過禍,升級固件和換硬件都不用管那一塊,根本不用考慮顯示時基和刷新率.
回復(fù)

使用道具 舉報

16#
ID:1046594 發(fā)表于 2022-10-4 10:28 | 只看該作者
使用1650 IIC通信
回復(fù)

使用道具 舉報

17#
ID:1044091 發(fā)表于 2022-10-4 11:17 | 只看該作者
mengsiu 發(fā)表于 2022-10-3 15:18
TM1650驅(qū)動,使用51單片機(jī)。
注意:TM1650不是IIC器件!!不能接在IIC線路上。

非常感謝您的驅(qū)動代碼!器件到了試一下
回復(fù)

使用道具 舉報

18#
ID:1044091 發(fā)表于 2022-10-4 11:40 | 只看該作者
qq603599910 發(fā)表于 2022-10-3 20:37
看MCU還要什么功能,用多少PIN,基本都是STC15或者STC8系列,89系列已經(jīng)很老很少用在產(chǎn)品上了.關(guān)于顯示驅(qū)動 ...

您說的有道理,我用的89C52內(nèi)存8K已經(jīng)快滿了!還有很多功能沒有加。這幾天在重新選MCU,想一步到位換成STC32G12K128 DIP40,價格便宜量又足。

再請教一下:我這是個蠕動泵控制器,原理也不復(fù)雜,準(zhǔn)備做基礎(chǔ)版(數(shù)碼管顯示),高級版(12864及TFT顯示),其實(shí)功能一樣的,就是操作體驗(yàn)不同,顏值不一樣。想做成向下兼容的,用同一塊板子同一款U同時留出數(shù)碼管和顯示屏接口,燒寫不同的軟件,能否可行?

還有我感覺基礎(chǔ)版用STC32G12K128+數(shù)碼管,U的性能可能過剩了,有啥影響么?
回復(fù)

使用道具 舉報

19#
ID:272119 發(fā)表于 2022-10-6 08:28 | 只看該作者
ningsy 發(fā)表于 2022-10-4 11:40
您說的有道理,我用的89C52內(nèi)存8K已經(jīng)快滿了!還有很多功能沒有加。這幾天在重新選MCU,想一步到位換成ST ...

完全可行啊,燒錄口后期當(dāng)通訊口用,隨時想升級就升級. STC32了解過還沒有買回來體驗(yàn),后期好的話共享下體驗(yàn),謝謝!
回復(fù)

使用道具 舉報

20#
ID:624769 發(fā)表于 2022-10-6 15:58 | 只看該作者
ningsy 發(fā)表于 2022-10-2 21:07
感謝指點(diǎn),我這就去查資料。
我本來想89C52的IO這么多,用不上也得閑著,現(xiàn)在看來可以再找款I(lǐng)O少的MCU了 ...

確實(shí),IO空著不用也是浪費(fèi), 但是,提議 TM1650 是基于,你打算用 HC24+ HC138 的前提下,建議你用 TM1650  更經(jīng)濟(jì),以及更方便。 如果要 IO 直接驅(qū)動, 自然是可以的,但是動態(tài)掃描這個工作,負(fù)擔(dān)會加在 MCU上,同時,還牽涉到 限流電阻等等的額外電路。這就要考慮“必要性”的問題了。畢竟成本來講 TM1650 實(shí)在是太便宜了……,便宜到,我覺得 限流電阻太貴了。

最后,看你打算用 STC32,  雖然STC32本身不錯,但是,基于你 單片機(jī)基礎(chǔ)還薄弱,不建議 步子一下子邁那么大, 先STC8 系列 過渡一下,可能會更好。
以上,純屬個人建議。
回復(fù)

使用道具 舉報

21#
ID:1044091 發(fā)表于 2022-10-6 23:03 | 只看該作者
188610329 發(fā)表于 2022-10-6 15:58
確實(shí),IO空著不用也是浪費(fèi), 但是,提議 TM1650 是基于,你打算用 HC24+ HC138 的前提下,建議你用 TM165 ...

感謝大佬指導(dǎo)!我已經(jīng)準(zhǔn)備使用TM1650了,只是這兩天商家放假,發(fā)貨很慢,還沒收到。

至于STC32,我今天實(shí)在忍不住下單買了一個,心想早晚要用上的吧(以后接12864或TFT屏)。如果看到您的建議,我可能會同時入一個STC8,不過沒關(guān)系,我再買一次就是了。
回復(fù)

使用道具 舉報

22#
ID:685684 發(fā)表于 2022-10-7 10:02 | 只看該作者
TM1650確實(shí)好用,又便宜又省引腳。IIC驅(qū)動到處都有例程能用,自己刷新還不用占用程序時間
回復(fù)

使用道具 舉報

23#
ID:401564 發(fā)表于 2022-10-8 10:10 | 只看該作者
如果條件允許,最好是IO直接控制,有強(qiáng)推挽模式的就串聯(lián),沒有這個模式的就上拉
在實(shí)際項(xiàng)目中,是完全可以用IO直接驅(qū)動的
245和138都是多余的
這是最優(yōu)先選擇的方案,首先是程序簡單,對于不是很精通編程的人來說,代碼簡單易懂比很多東西都重要
最怕就是出了問題,你找半天都不知道是你自己的代碼有問題還是別人的驅(qū)動代碼有問題
但TM1650之類的外圍你是肯定要學(xué)會使用的,畢竟,TM1650的優(yōu)點(diǎn)就擺在那,當(dāng)你的PCB是主控和顯示是分離的,它的好處就顯現(xiàn)了,IO直接驅(qū)動要12根線.....
回復(fù)

使用道具 舉報

24#
ID:1044091 發(fā)表于 2022-10-8 14:09 | 只看該作者
零件已到,成功點(diǎn)亮,效果完美!電路真的是太簡潔了!

不過第一次加載了一個官方例程竟然是黑屏!害的我檢查了近一個鐘頭,最后換了個例程,啥毛病也沒有。下步就是匹配代碼了。

在此感謝各位老師的建議!





回復(fù)

使用道具 舉報

25#
ID:1044091 發(fā)表于 2022-10-8 14:38 來自觸屏版 | 只看該作者
Y_G_G 發(fā)表于 2022-10-8 10:10
如果條件允許,最好是IO直接控制,有強(qiáng)推挽模式的就串聯(lián),沒有這個模式的就上拉
在實(shí)際項(xiàng)目中,是完全可以用IO ...

有道理,1650的代碼實(shí)在有些多,不好理解。
回復(fù)

使用道具 舉報

26#
ID:867081 發(fā)表于 2022-10-8 15:10 | 只看該作者
IO可以直接控制的,但是四位數(shù)碼管驅(qū)動代碼還是比較冗長的,所以更換一下硬件選擇,這樣代碼也可以變得更加簡潔
回復(fù)

使用道具 舉報

27#
ID:624769 發(fā)表于 2022-10-9 11:38 來自觸屏版 | 只看該作者
ningsy 發(fā)表于 2022-10-8 14:38
有道理,1650的代碼實(shí)在有些多,不好理解。

tm1650的代碼其實(shí)很少,你覺得多,因?yàn)槟阌玫?9c52,就好比如果你沒有硬件串口,要軟件模擬串口,你也會覺得代碼繁瑣,其實(shí)說白了,大多網(wǎng)上傳的所謂的“通用庫”大多都是不利用硬件資源的,就好比ds1302,網(wǎng)上你能找到的范例都是用io直接驅(qū)動的,但是,如果用半雙工spi直接驅(qū)動,或者串口直接驅(qū)動,代碼就會簡單很多。tm1650也一樣,硬件驅(qū)動,代碼會少很多。
回復(fù)

使用道具 舉報

28#
ID:1044091 發(fā)表于 2022-10-9 15:32 | 只看該作者
mengsiu 發(fā)表于 2022-10-3 15:18
TM1650驅(qū)動,使用51單片機(jī)。
注意:TM1650不是IIC器件!!不能接在IIC線路上。

已用您的代碼驅(qū)動起來了,顯示完美,非常感謝!

按鍵暫時沒用到,屏蔽了。又在函數(shù)里面加了一個數(shù)碼管地址定義數(shù)組,便于定位地址:

//數(shù)碼管位數(shù)                              1       2        3       4
u8 DIG_BIT_CODE[4]      = {  0x68,0x6a,0x6c,0x6e };




回復(fù)

使用道具 舉報

29#
ID:1044091 發(fā)表于 2022-10-9 15:47 | 只看該作者
188610329 發(fā)表于 2022-10-9 11:38
tm1650的代碼其實(shí)很少,你覺得多,因?yàn)槟阌玫?9c52,就好比如果你沒有硬件串口,要軟件模擬串口,你也會 ...

多謝大佬指導(dǎo)!您說的這些我還沒學(xué)到,有點(diǎn)暈我一定去找資料看一下。感覺這個小項(xiàng)目越做要學(xué)的東西越多啊。我已經(jīng)入了一塊STC8,下一步準(zhǔn)備把代碼搬過去。
回復(fù)

使用道具 舉報

30#
ID:1044091 發(fā)表于 2022-10-24 09:23 | 只看該作者
請教:還是TM1650驅(qū)動的問題。

為什么用STC8H系列(STC8H1K08,STC8H8K64U)驅(qū)動TM1650 I/O口必須要開強(qiáng)推挽模式才亮呢?設(shè)置成準(zhǔn)雙向模式DAT腳電壓拉不起來只有0.6V左右導(dǎo)致黑屏。另外開強(qiáng)推挽模式需要串接電阻么?多大合適?

而用STC89C52(I/O口不用設(shè)置)和STC8G系列(STC8H1K08-16/20,STC8H1K17,設(shè)置成準(zhǔn)雙向口模式)就能正常亮屏。


看手冊這兩種U  I/O口配置也沒啥區(qū)別啊,代碼也能通用(除了STC8H 要改下I/O配置),有前輩遇到過這個問題嗎?






回復(fù)

使用道具 舉報

31#
ID:161164 發(fā)表于 2022-10-24 09:48 | 只看該作者
ningsy 發(fā)表于 2022-10-24 09:23
請教:還是TM1650驅(qū)動的問題。

為什么用STC8H系列(STC8H1K08,STC8H8K64U)驅(qū)動TM1650 I/O口必須要開強(qiáng) ...

準(zhǔn)雙向模式的拉電流只有270~150uA
拉不動1650,要加上拉電阻(通常是4.7k)



回復(fù)

使用道具 舉報

32#
ID:1044091 發(fā)表于 2022-10-24 11:21 | 只看該作者
lkc8210 發(fā)表于 2022-10-24 09:48
準(zhǔn)雙向模式的拉電流只有270~150uA
拉不動1650,要加上拉電阻(通常是4.7k)

多謝高手指點(diǎn)!經(jīng)測試完全可行。手頭沒有4.7K電阻,只有10K的。設(shè)為準(zhǔn)雙向口模式,加一個仍舊黑屏,并兩個點(diǎn)亮,電壓2.2V;并三個電壓2.49V。單片機(jī)電流也降了幾個mA。
那為何STC8G1K08 系列準(zhǔn)雙向口模式可以點(diǎn)亮呢?難道是由于制造誤差,處在臨界值上了?
回復(fù)

使用道具 舉報

33#
ID:624769 發(fā)表于 2022-10-24 15:39 | 只看該作者
ningsy 發(fā)表于 2022-10-24 11:21
多謝高手指點(diǎn)!經(jīng)測試完全可行。手頭沒有4.7K電阻,只有10K的。設(shè)為準(zhǔn)雙向口模式,加一個仍舊黑屏,并兩 ...

STC8系列  有個 PnUP 寄存器  可以開啟 內(nèi)部的 4.7K 上拉,你不需要外接上拉電阻, 只要 開漏模式 + 內(nèi)部上拉,就可以驅(qū)動 TM1650,
有些知識,隨著使用的單片機(jī)進(jìn)化,要跟著進(jìn)化。
進(jìn)入STC8 系列時代,如果不是對功耗有特別的需要,盡可能的用   開漏+內(nèi)部上拉 取代  準(zhǔn)雙向模式。
回復(fù)

使用道具 舉報

34#
ID:1044091 發(fā)表于 2022-10-24 23:34 | 只看該作者
188610329 發(fā)表于 2022-10-24 15:39
STC8系列  有個 PnUP 寄存器  可以開啟 內(nèi)部的 4.7K 上拉,你不需要外接上拉電阻, 只要 開漏模式 + 內(nèi)部 ...

大師您好!您說的“開漏模式 + 內(nèi)部上拉”我試了N遍,就是不亮屏是不是我端口配置代碼寫錯了?
TM1650的引腳定義:
sbit CLK = P3^6;
sbit DIO = P3^7;

端口配置:

P3M1 = 0xff;   P3M0 = 0xff;
P3PU =0xc0; //不行

端口配置:

P3M1 = 0x00;   P3M0 = 0x00;
P3PU =0xc0; //也不行

下面一行改成P3PU =0xff; P3PU |=0xc0;//都不行

MCU型號是STC8H1K08,用什么辦法能看下內(nèi)部上拉電阻起沒起作用呢?





回復(fù)

使用道具 舉報

35#
ID:624769 發(fā)表于 2022-10-25 01:36 | 只看該作者
P_SW2 |= 0x80;    //這個最好放在  void main() 的第一句,  開了就不用關(guān)了。
P3PU =0xc0;

回復(fù)

使用道具 舉報

36#
ID:1044091 發(fā)表于 2022-10-25 08:48 | 只看該作者
188610329 發(fā)表于 2022-10-25 01:36
P_SW2 |= 0x80;    //這個最好放在  void main() 的第一句,  開了就不用關(guān)了。
P3PU =0xc0;

感謝大師指點(diǎn)!已經(jīng)完全正常了。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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