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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3227|回復: 13
收起左側

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

[復制鏈接]
ID:632567 發表于 2019-11-4 14:38 | 顯示全部樓層 |閱讀模式
#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;
                }
        }               
}

回復

使用道具 舉報

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沒有初值
回復

使用道具 舉報

ID:89515 發表于 2019-11-4 20:08 來自觸屏版 | 顯示全部樓層
如果是共陰極數碼管,必須用1移位取反
回復

使用道具 舉報

ID:332444 發表于 2019-11-4 22:48 | 顯示全部樓層
那你的問題是蝦米?從你描述可以證明你已經做到了。
回復

使用道具 舉報

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;
無標題.jpg

  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. }
復制代碼



回復

使用道具 舉報

ID:453974 發表于 2019-11-4 23:47 | 顯示全部樓層
單片機在想peach 發表于 2019-11-4 14:45
編輯沒問題運行后六個管子一起亮一起顯示由一變化到七

你想實現什么結果
回復

使用道具 舉報

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;
                }
        }               
}
這樣應該就沒問題了
回復

使用道具 舉報

ID:437615 發表于 2019-11-5 08:21 來自觸屏版 | 顯示全部樓層
我來學習一下,我看到這個是共陰的數碼管為什么位碼只用一個就行了
回復

使用道具 舉報

ID:632567 發表于 2019-11-5 19:59 | 顯示全部樓層
wulin 發表于 2019-11-4 23:16
賦值錯誤
       num2=wela;   
       wela=0xfe;

對的解決了
回復

使用道具 舉報

ID:632567 發表于 2019-11-5 19:59 | 顯示全部樓層
_4061N_ 發表于 2019-11-4 18:23
main的第一行
        num2=wela;   
        wela=0xfe;

回復

使用道具 舉報

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;         
                }
        }               
}
回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美国产视频 | 99pao成人国产永久免费视频 | 欧美日韩在线观看一区 | 亚洲欧美综合 | 久久久91精品国产一区二区三区 | 婷婷综合 | 国产成人一区二区三区久久久 | 亚洲国产免费 | 久久精品国产久精国产 | 久久午夜剧场 | 欧美日韩精品一区二区天天拍 | 久久国产一区二区三区 | 人人干人人艹 | 99久久久久久| 亚洲一区二区三区免费在线观看 | 另类视频在线 | 能看的av网站 | 在线中文字幕国产 | 亚洲免费在线播放 | 欧洲av一区 | 亚洲一区二区在线视频 | 国产精品一区二区不卡 | 亚洲高清在线观看 | 8x国产精品视频一区二区 | 午夜激情免费视频 | 国产精品美女久久久久久免费 | 日韩高清国产一区在线 | 久久国产精品-国产精品 | 偷拍自拍网 | 久久这里只有 | 天堂免费看片 | 亚洲人成人一区二区在线观看 | 人人操日日干 | 欧美精品综合在线 | 国产精品一区二区在线 | 国产精品入口麻豆www | 国产一区不卡在线观看 | 中文字幕91 | 精品av久久久久电影 | 日韩成人中文字幕 | 视频在线一区二区 |