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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

共陽極數碼管 段選位與上 0xf7 后小數點顯示 數字卻不顯示了 是什么原因

  [復制鏈接]
跳轉到指定樓層
樓主
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define MAIN_Fosc                11059200UL

  5. typedef unsigned int INT16U;

  6. sbit DU = P2^6;
  7. sbit WE = P2^7;

  8. uchar code table[]={
  9. //         0                1           2          3                  4                5
  10.         0xc0,  0xf9,  0xa4,  0xb0,  0x99,  0x92,  
  11. //         6                 7                8           9          .                 關顯示
  12.     0x82,  0xf8,  0x80,  0x90,  0x7f,   0xff
  13. };
  14. uchar code T_COM[] = {
  15. //1      2     3       4     5      6
  16. 0x01,  0x02,  0x04,  0x08,  0x10,  0x20
  17. };
  18. void Delay_Ms(INT16U ms)
  19. {
  20.      INT16U i;
  21.          do{
  22.               i = MAIN_Fosc / 96000;
  23.                   while(--i);   //96T per loop
  24.      }while(--ms);
  25. }
  26. void Display(uchar z)
  27. {       
  28. //------------------------------
  29.         DU = 0;                                                       
  30.         P0 = table[z];               
  31.         DU = 1;                                               
  32.         DU = 0;                                                       

  33.         WE = 0;                                               
  34.         P0 = T_COM[0];                                  
  35.         WE = 1;                                               
  36.         WE = 0;                                               
  37.         Delay_Ms(3);
  38. //-------------------------------
  39.         DU = 0;
  40.         P0 = table[z] & 0x7f;  
  41.         DU = 1;
  42.         DU = 0;

  43.         WE = 0;
  44.         P0 = T_COM[1];                          
  45.         WE = 1;
  46.         WE = 0;
  47.         Delay_Ms(3);
  48. //------------------------------
  49.         DU = 0;                                                       
  50.         P0 = table[z];               
  51.         DU = 1;                                               
  52.         DU = 0;                                                       

  53.         WE = 0;                                               
  54.         P0 = T_COM[2];                                  
  55.         WE = 1;                                               
  56.         WE = 0;                                               
  57.         Delay_Ms(3);
  58. //-------------------------------
  59.         DU = 0;
  60.         P0 = table[z] & 0x7f;
  61.         DU = 1;
  62.         DU = 0;

  63.         WE = 0;
  64.         P0 = T_COM[3];                         
  65.         WE = 1;
  66.         WE = 0;
  67.         Delay_Ms(3);
  68. //------------------------------
  69.         DU = 0;                                                       
  70.         P0 = table[z];               
  71.         DU = 1;                                               
  72.         DU = 0;                                                       

  73.         WE = 0;                                               
  74.         P0 = T_COM[4];                                  
  75.         WE = 1;                                               
  76.         WE = 0;                                               
  77.         Delay_Ms(3);
  78. //-------------------------------
  79.         DU = 0;
  80.         P0 = table[z] & 0x7f;
  81.         DU = 1;
  82.         DU = 0;

  83.         WE = 0;
  84.         P0 = T_COM[5];                          
  85.         WE = 1;
  86.         WE = 0;
  87.         Delay_Ms(3);

  88. }
  89. void main()
  90. {
  91.   Display(0);
  92. }
復制代碼


想不太明白  DP最高位為0的時候會亮  如果輸出0 十六進制是 c0 二進制就是 1100 0000 與上 0x7F   0111 1111  變成 0100 0000  沒想到有啥毛病  數碼一直不顯示  
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:96682 發表于 2018-7-29 03:13 | 只看該作者
樓主列出的二進制也不完全對啊
回復

使用道具 舉報

板凳
ID:377512 發表于 2018-7-29 08:45 來自手機 | 只看該作者
wc86110 發表于 2018-7-29 03:13
樓主列出的二進制也不完全對啊

哪里不對
回復

使用道具 舉報

地板
ID:380415 發表于 2018-7-29 10:29 | 只看該作者
在實際中要做消影操作
回復

使用道具 舉報

5#
ID:213173 發表于 2018-7-29 10:37 | 只看該作者
樓主要在顯示程序里每位送段碼前加消隱語句!
        P0 = 0xff;//消隱
        DU = 1;//開段選
        DU = 0;//關段選
        P0 = table[z];//送段碼
        DU = 1;//開段選
        DU = 0;//關段選
       
        WE = 0;//贅句
        P0 = T_COM[0];//送位碼
        WE = 1;//開位選
        WE = 0;//關位選
        Delay_Ms(3);

評分

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

查看全部評分

回復

使用道具 舉報

6#
ID:375003 發表于 2018-7-29 10:50 | 只看該作者
問題在這里,因為這個點不是在每個位上,如果要顯示小數點的時候,先要判斷這個位有沒有小數點

評分

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

查看全部評分

回復

使用道具 舉報

7#
ID:155507 發表于 2018-7-29 12:16 | 只看該作者
要數碼顯示, 你把Delay_Ms(3);  設置成Delay_Ms(9);
回復

使用道具 舉報

8#
ID:377512 發表于 2018-7-29 12:42 來自手機 | 只看該作者
guangshi_wq 發表于 2018-7-29 10:50
問題在這里,因為這個點不是在每個位上,如果要顯示小數點的時候,先要判斷這個位有沒有小數點

共陽極 直接和 0x7f與 最高位為0 數據的最高位也為0 這樣就不需要判斷了
回復

使用道具 舉報

9#
ID:377512 發表于 2018-7-29 13:07 來自手機 | 只看該作者
angmall 發表于 2018-7-29 12:16
要數碼顯示, 你把Delay_Ms(3);  設置成Delay_Ms(9);

設置成9之后數碼管交替顯示 還是不是一起顯示 延時的時間太長了
回復

使用道具 舉報

10#
ID:377512 發表于 2018-7-29 13:10 來自手機 | 只看該作者
去了小數點就可以完全顯示
回復

使用道具 舉報

11#
ID:261288 發表于 2018-7-29 20:40 | 只看該作者
段碼”或“0x7f才能顯示
回復

使用道具 舉報

12#
ID:140489 發表于 2018-7-30 09:34 | 只看該作者
段碼”或“0x7f才能顯示,才是正解,
回復

使用道具 舉報

13#
ID:377512 發表于 2018-7-30 10:43 來自手機 | 只看該作者
lids 發表于 2018-7-30 09:34
段碼”或“0x7f才能顯示,才是正解,

要是或的話 數據有一位是0和1或之后是 1 改變了數據的值 比如 1010 1010按位或0111 1111 變成 1111 1111 或有一個值為1 則為1

評分

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

查看全部評分

回復

使用道具 舉報

14#
ID:213173 發表于 2018-7-30 17:53 | 只看該作者
李博文 發表于 2018-7-30 10:43
要是或的話 數據有一位是0和1或之后是 1 改變了數據的值 比如 1010 1010按位或0111 1111 變成 1111 1111  ...

樓上好多朋友是瞎猜,此程序的共陽數碼管加點當然是 P0 = table[z] & 0x7f; 。由于段碼與位碼共用P0,不加消隱指令肯定會出問題。樓主認為去掉 & 0x7f就顯示正常的說法是不正確的,只是樓主用仿真軟件看不出來,要是實際電路就可以看出問題來了。給你改了一下,你試試。#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define MAIN_Fosc                11059200UL

typedef unsigned int INT16U;

sbit DU = P2^6;
sbit WE = P2^7;

uchar code table[]={
//         0                1           2          3                  4                5
        0xc0,  0xf9,  0xa4,  0xb0,  0x99,  0x92,  
//         6                 7                8           9          .                 關顯示
    0x82,  0xf8,  0x80,  0x90,  0x7f,   0xff
};
uchar code T_COM[] = {
//1      2     3       4     5      6
0x01,  0x02,  0x04,  0x08,  0x10,  0x20
};
void Delay_Ms(INT16U ms)
{
     INT16U i;
         do{
              i = MAIN_Fosc / 96000;
                  while(--i);   //96T per loop
     }while(--ms);
}
void Display(uchar z)
{        
//------------------------------
        P0 = 0xff;
        DU = 0;
        DU = 1;
        P0 = table[z];               
        DU = 1;                                                
        DU = 0;                                                        

        P0 = T_COM[0];                                   
        WE = 1;                                                
        WE = 0;                                                
        Delay_Ms(3);
//-------------------------------
        P0 = 0xff;
        DU = 0;
        DU = 1;
        P0 = table[z] & 0x7f;  
        DU = 1;
        DU = 0;

        P0 = T_COM[1];                          
        WE = 1;
        WE = 0;
        Delay_Ms(3);
//------------------------------
        P0 = 0xff;
        DU = 0;
        DU = 1;                                                     
        P0 = table[z];               
        DU = 1;                                                
        DU = 0;                                                        

        P0 = T_COM[2];                                   
        WE = 1;                                                
        WE = 0;                                                
        Delay_Ms(3);
//-------------------------------
        P0 = 0xff;
        DU = 0;
        DU = 1;
        P0 = table[z] & 0x7f;
        DU = 1;
        DU = 0;

        P0 = T_COM[3];                        
        WE = 1;
        WE = 0;
        Delay_Ms(3);
//------------------------------
        P0 = 0xff;
        DU = 0;
        DU = 1;                                                        
        P0 = table[z];               
        DU = 1;                                                
        DU = 0;                                                        

        P0 = T_COM[4];                                   
        WE = 1;                                                
        WE = 0;                                                
        Delay_Ms(3);
//-------------------------------
        P0 = 0xff;
        DU = 0;
        DU = 1;
        P0 = table[z] & 0x7f;
        DU = 1;
        DU = 0;

        P0 = T_COM[5];                          
        WE = 1;
        WE = 0;
        Delay_Ms(3);

}
void main()
{
        while(1)       
        {
                Display(0);
        }
}



評分

參與人數 2黑幣 +15 收起 理由
NPC-1024 + 8 回帖助人的獎勵!
李博文 + 7 很給力!

查看全部評分

回復

使用道具 舉報

15#
ID:377512 發表于 2018-7-30 19:46 | 只看該作者
wulin 發表于 2018-7-30 17:53
樓上好多朋友是瞎猜,此程序的共陽數碼管加點當然是 P0 = table[z] & 0x7f; 。由于段碼與位碼共用P0,不 ...

我用八位共陽極的數碼管怎么 只顯示小數點 和后兩位數
回復

使用道具 舉報

16#
ID:213173 發表于 2018-7-31 05:35 | 只看該作者
李博文 發表于 2018-7-30 19:46
我用八位共陽極的數碼管怎么 只顯示小數點 和后兩位數

這與使用八數碼管沒有什么關系,程序是顯示六位,后兩位閑置而已。


回復

使用道具 舉報

17#
ID:377512 發表于 2018-7-31 11:22 來自手機 | 只看該作者
wulin 發表于 2018-7-31 05:35
這與使用八數碼管沒有什么關系,程序是顯示六位,后兩位閑置而已。

一直沒出來這樣的效果
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区视频在线 | 孕妇一级毛片 | 国产有码 | 国产精品成人一区二区三区夜夜夜 | a在线免费观看 | 欧美高清性xxxxhd | 91视频网址 | 日韩在线电影 | 男女羞羞视频在线免费观看 | www久久av| 欧美日韩久久精品 | 黄色一级免费 | 国产精品69av | 久久国产欧美一区二区三区精品 | 成人国产精品色哟哟 | 好好的日在线视频 | 国产精品91网站 | 操一草| 欧美视频精品 | 中文字幕在线播放第一页 | 久草欧美视频 | 欧美日韩一区二区在线观看 | av中文字幕在线观看 | 国产精品福利在线 | h片在线免费看 | 日韩黄色小视频 | 久久国产一区 | 伊人网在线综合 | 久久精品欧美一区二区三区不卡 | 国产在线一区二区三区 | 成人午夜免费在线视频 | 亚洲导航深夜福利涩涩屋 | 狠狠狠色丁香婷婷综合久久五月 | 亚洲欧美日本在线 | 国产日韩精品在线 | 免费亚洲一区二区 | 国产黄色av电影 | 日本精a在线观看 | 国产毛片毛片 | 7777在线视频免费播放 | 日韩精品中文字幕一区二区三区 |