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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我想問一下如何用delay函數做出一個動態掃描數碼管。郭天祥的板子。我邏輯那錯了?

[復制鏈接]
跳轉到指定樓層
樓主
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar num2;
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,                                                                                                                          
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay (uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
void main()
{        
        num2=wela;   
        wela=0xfe;
        while(1)
        {
                for(num=1;num<7;num++)
                 {
                         wela=1;
                        P0=num2;
                        wela=0;
                        delay(1000);
                        num2=_crol_(num2,1);
                        dula=1;                        
                        P0=table[num];
                        dula=0;
                        if(num2==0xbf)
                        num2=0xfe;
                }
        }               
}

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

使用道具 舉報

沙發
ID:632567 發表于 2019-11-4 14:45 | 只看該作者
編輯沒問題運行后六個管子一起亮一起顯示由一變化到七
回復

使用道具 舉報

板凳
ID:562525 發表于 2019-11-4 18:23 | 只看該作者
main的第一行
        num2=wela;   
        wela=0xfe;

很明顯的時序錯誤,而且wela是sbit  類型,不應該賦0和1以外的值。

應修改為
        num2=0xfe;
回復

使用道具 舉報

地板
ID:89515 發表于 2019-11-4 20:00 來自手機 | 只看該作者
num2沒有初值
回復

使用道具 舉報

5#
ID:89515 發表于 2019-11-4 20:08 來自手機 | 只看該作者
如果是共陰極數碼管,必須用1移位取反
回復

使用道具 舉報

6#
ID:332444 發表于 2019-11-4 22:48 | 只看該作者
那你的問題是蝦米?從你描述可以證明你已經做到了。
回復

使用道具 舉報

7#
ID:213173 發表于 2019-11-4 23:16 | 只看該作者
單片機在想peach 發表于 2019-11-4 14:45
編輯沒問題運行后六個管子一起亮一起顯示由一變化到七

賦值錯誤
       num2=wela;   
       wela=0xfe;
順序錯誤
       wela=1;
       P0=num2;
       wela=0;
       delay(1000);//延時參數不可以超過uchar類型255
       num2=_crol_(num2,1);
       dula=1;                        
       P0=table[num];
       dula=0;
       if(num2==0xbf)
       num2=0xfe;


  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit dula=P2^6;
  6. sbit wela=P2^7;
  7. uchar num2;
  8. uchar num;
  9. uchar code table[]={
  10. 0x3f,0x06,0x5b,0x4f,
  11. 0x66,0x6d,0x7d,0x07,
  12. 0x7f,0x6f,0x77,0x7c,
  13. 0x39,0x5e,0x79,0x71};
  14. void delay (uchar z)
  15. {
  16.         uchar x,y;
  17.         for(x=z;x>0;x--)
  18.                 for(y=110;y>0;y--);
  19. }
  20. void main()
  21. {        
  22.         num2=0xfe;   
  23.         while(1)
  24.         {
  25.                 for(num=1;num<7;num++)
  26.                 {
  27.                         P0=0x00;//消除鬼影
  28.                         dula=1;
  29.                         dula=0;

  30.                         P0=num2;//送位碼
  31.                         wela=1;
  32.                         wela=0;

  33.                         P0=table[num];//送段碼
  34.                         dula=1;
  35.                         dula=0;
  36.                         delay(2);//延時2ms
  37.                         num2=_crol_(num2,1);
  38.                         if(num2==0xbf)
  39.                                 num2=0xfe;
  40.                 }
  41.         }               
  42. }
復制代碼



回復

使用道具 舉報

8#
ID:453974 發表于 2019-11-4 23:47 | 只看該作者
單片機在想peach 發表于 2019-11-4 14:45
編輯沒問題運行后六個管子一起亮一起顯示由一變化到七

你想實現什么結果
回復

使用道具 舉報

9#
ID:453974 發表于 2019-11-4 23:52 | 只看該作者
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar num2;
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,                                                                                                                          
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay (uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
void main()
{        
              wela=0xfe;
        num2=wela;   

        while(1)
        {
                for(num=1;num<7;num++)
                 {
                         wela=1;
                        P0=num2;
                        wela=0;
                        delay(1000);
                        num2=_crol_(num2,1);
                        dula=1;                        
                        P0=table[num];
                        dula=0;
                        if(num2==0xbf)
                        num2=0xfe;
                }
        }               
}
這樣應該就沒問題了
回復

使用道具 舉報

10#
ID:437615 發表于 2019-11-5 08:21 來自手機 | 只看該作者
我來學習一下,我看到這個是共陰的數碼管為什么位碼只用一個就行了
回復

使用道具 舉報

11#
ID:632567 發表于 2019-11-5 19:59 | 只看該作者
wulin 發表于 2019-11-4 23:16
賦值錯誤
       num2=wela;   
       wela=0xfe;

對的解決了
回復

使用道具 舉報

12#
ID:632567 發表于 2019-11-5 19:59 | 只看該作者
_4061N_ 發表于 2019-11-4 18:23
main的第一行
        num2=wela;   
        wela=0xfe;

回復

使用道具 舉報

13#
ID:632567 發表于 2019-11-5 20:01 | 只看該作者
累不死的狗 發表于 2019-11-4 23:52
#include
#include
#define uchar unsigned char

后面修改了一下
這樣就可以達成掃描數碼管了
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar num2;
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,                                                                                                                          
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay (uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
        for(y=100
                ;y>0;y--);
}
void main()
{      
                dula=0;
                wela=0;
        num2=0xfe;   
        while(1)
        {
                for(num=1;num<7;num++)
                 {
                        wela=1;
                        P0=num2;
                        wela=0;
                                                num2=_crol_(num2,1);
                        delay(10);              
                        dula=1;                        
                        P0=table[num];
                        dula=0;
                                                delay(10);
                        if(num2==0xbf)
                        num2=0xfe;
                                                wela=1;
                                                dula=1;
                                                P0=0x00;
                                                delay(5);
                                                wela=0;
                                                dula=0;         
                }
        }               
}
回復

使用道具 舉報

14#
ID:632567 發表于 2019-11-5 20:02 | 只看該作者
_4061N_ 發表于 2019-11-4 18:23
main的第一行
        num2=wela;   
        wela=0xfe;

對的然后再消影
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91在线看视频 | 福利网址| 龙珠z国语版在线观看 | 欧美一区二区三区大片 | 欧洲亚洲精品久久久久 | 亚洲一区二区免费视频 | 欧美成人精品欧美一级 | 天天躁日日躁狠狠很躁 | 日韩成人免费在线视频 | 午夜欧美| 91天堂网| 国产午夜精品一区二区三区四区 | 欧美男人天堂 | 久久国产日韩欧美 | 视频一区二区三区四区五区 | 日本免费视频在线观看 | 日韩视频―中文字幕 | 一区二区三区四区av | 亚洲国产成人精品女人久久久 | 在线国产一区 | 国产91亚洲精品 | 国产精品夜间视频香蕉 | 欧美精品久久久久久久久久 | 亚洲精品v日韩精品 | 成人三区四区 | 欧美激情国产日韩精品一区18 | 国产一级视频在线 | 日韩精品激情 | 欧美久久久网站 | 在线欧美小视频 | 成人在线免费电影 | 特级黄一级播放 | 国产亚洲一区二区在线观看 | 亚洲一区二区三区免费 | 色视频成人在线观看免 | 免费看黄色国产 | 亚洲午夜久久久 | 日韩在线不卡 | 丝袜美腿一区二区三区 | 免费视频一区二区 | 久久久www成人免费无遮挡大片 |