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

標題: 51單片機共陰數(shù)碼管想在一個數(shù)字上加小數(shù)點,用P0|=0x80, 有些數(shù)字不能正常顯示 [打印本頁]

作者: 清無水    時間: 2019-7-25 20:02
標題: 51單片機共陰數(shù)碼管想在一個數(shù)字上加小數(shù)點,用P0|=0x80, 有些數(shù)字不能正常顯示
數(shù)字069會所有段全亮,其他的數(shù)字可以正常顯示,什么原因啊

作者: xianfajushi    時間: 2019-7-25 20:38
參考例子代碼http://m.raoushi.com/bbs/dpj-157313-1.html
作者: amo73    時間: 2019-7-25 21:53
你這行代碼是先讀取P0,然后把讀出值的最高位修改為1,再寫入P0……不當

應該這樣:P0 = 顯示數(shù)字|0x80
作者: kjjava    時間: 2019-7-25 21:53
你得先把線路圖和程序放出來,不然誰搞得懂你哪里搞錯了
作者: 鵬博士PBs    時間: 2019-7-26 01:00
還是段選和位選的區(qū)別吧
作者: suncat0504    時間: 2019-7-26 01:40
既然是程序控制的,毫無疑問是程序的big而已,你細心分析自己的程序以及流程。當然首先要排除硬件電路設計沒有問題。P0|=0x80;這種語句,通常是取得P0口目前的數(shù)據(jù),是取得輸入數(shù)據(jù),然后B7位置1后重新輸出給P0口,對于動態(tài)掃描方式輸出數(shù)據(jù)給數(shù)碼管而言,我覺得這樣處理不妥,反倒是根據(jù)輸出的內(nèi)容,直接把數(shù)據(jù)輸出給P0口更安全一些。如果你的P0口只接一個數(shù)碼管,輸出數(shù)據(jù)是靜態(tài)方式輸出且一直保持不變的話,P0|=0x80;這樣處理沒有問題。
你沒有提供電路,以上意見僅供參考。
作者: m182892    時間: 2019-7-26 08:27
你這樣就行,P0=顯示數(shù)字|0x80; 或者P0=顯示數(shù)字+0x80;
作者: 清無水    時間: 2019-7-26 10:09
suncat0504 發(fā)表于 2019-7-26 01:40
既然是程序控制的,毫無疑問是程序的big而已,你細心分析自己的程序以及流程。當然首先要排除硬件電路設計 ...

#include "reg52.h"               

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};



void main()
{       
        LSA=0;
        LSB=0;
        LSC=0;
        P0=smgduan[0]|0x80;
        while(1);
}
想做秒表發(fā)現(xiàn)加不了點,然后試了試像這樣一個數(shù)碼管靜態(tài)顯示,也不行啊
作者: 清無水    時間: 2019-7-26 10:12
amo73 發(fā)表于 2019-7-25 21:53
你這行代碼是先讀取P0,然后把讀出值的最高位修改為1,再寫入P0……不當

應該這樣:P0 = 顯示數(shù)字|0x80

#include "reg52.h"               

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};



void main()
{       
        LSA=0;
        LSB=0;
        LSC=0;
        P0=smgduan[1]|0x80;
        while(1);
}
像這樣呢數(shù)字1就好著呢 換成0就不行了
作者: suncat0504    時間: 2019-7-26 22:47
這是我咋你的代碼的基礎上做的修改,因為電路設計的問題,輸出到P0口時做了取反處理?梢哉o@示“0.”到“F.”,已經(jīng)用proteus7.5做了驗證
#include "reg52.h"               

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                       0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsigned char i=0;
                                                                                                                                                               
void delay(void) {
        unsigned int j=0;
        unsigned int k=0;
        for (j=0; j < 300;j++) {
                for (k=0; k < 300;k++) {
                }
        }
}

void main() {        
                LSA=0;
                LSB=0;
                LSC=0;
               
                while(1) {
                        for (i=0; i < 17;i++) {
                                P0=(smgduan[i]|0x80)^0xff;
                                delay();
                               
                        }
                }
}

數(shù)碼管.jpg (476.31 KB, 下載次數(shù): 35)

proteus7.5仿真

proteus7.5仿真

作者: 清無水    時間: 2019-7-27 17:16
suncat0504 發(fā)表于 2019-7-26 22:47
這是我咋你的代碼的基礎上做的修改,因為電路設計的問題,輸出到P0口時做了取反處理?梢哉o@示“0.”到 ...

超謝謝啊
作者: 清無水    時間: 2019-7-27 17:46
本帖最后由 清無水 于 2019-7-27 20:23 編輯
suncat0504 發(fā)表于 2019-7-26 22:47
這是我咋你的代碼的基礎上做的修改,因為電路設計的問題,輸出到P0口時做了取反處理?梢哉o@示“0.”到 ...

找到問題了,是把p3那幾個引腳短路了,不知道咋恢復啊




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1