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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

74hc164級聯驅動數碼管位選問題

[復制鏈接]
跳轉到指定樓層
樓主
最近跟數碼管杠上了,在垃圾堆找到了一個變頻器面板發現設計很有意思  就用3個io完成了四位數碼管顯示,四個LED顯示,還有6個按鍵輸出。感覺挺有意思,畫下了電路圖,用15f104w接上接口,現在能做到把數碼管一位顯示,不知道位選怎么搞,求思路。代碼如下
#include<STC15.H>  //包含單片機寄存器的頭文件

#include<intrins.h>


#define uint unsigned int
#define uchar unsigned char   
//74ls164IO口定義
sbit CLK=P3^2;
sbit DAT=P3^3;

uchar code tab[]={ 0xBB,0x28,0x73, 0x79, 0xE8, 0xD9, 0xDB,0x38,0xFB, 0xF9,};

void dispbyte(uchar byte)
{   
         uchar num,i;
         num=tab[byte];//取出段碼
    for(i=0;i<8;i++)   //循環八次送至led數碼管
    {
             CLK=0;               
                        if(num&0x01)  DAT=1;//判斷最高位,并取出最高位
                        else          DAT=0;//
                   CLK=1;        //上升沿有效
        num>>=1;     //左移一位(每次移動一位,共8次)
    }
}

void delay(uint ms)
{
        uchar i;
        for(;ms!=0;ms--)
                for(i=0;i<250;i++)
                {
                        _nop_();
                        _nop_();
                        _nop_();
                        _nop_();
                }
}

main()
{
    unsigned char h;
        while(1)
        {
      for(h=0;h<11;h++)
      {
                        dispbyte(h);
                        delay(1000);

      }
                h=0;
    }
}



1.png (137.67 KB, 下載次數: 97)

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

使用道具 舉報

沙發
ID:332444 發表于 2021-5-25 13:28 | 只看該作者
送段值后送位值了?
回復

使用道具 舉報

板凳
ID:902592 發表于 2021-5-25 13:56 | 只看該作者
這種數碼管一般是共陰或共陽的,控制共陰或共陽就可以實現位選


回復

使用道具 舉報

地板
ID:101869 發表于 2021-5-25 15:15 來自觸屏版 | 只看該作者
就是位選不知道怎么整  
回復

使用道具 舉報

5#
ID:844772 發表于 2021-5-25 15:44 | 只看該作者
位選也是通過另一塊164來選的啊,函數都一樣,編碼和管腳要再定義,每次只要選中一個而已,你這是共陰的管子,別編錯了,就按動態掃描的方式顯示。其實51上好多IO,干脆找四個直接位選算了。
回復

使用道具 舉報

6#
ID:824490 發表于 2021-5-25 17:51 | 只看該作者
我見過用一片4017做按鍵的,單線驅動,用在車載通訊機的手咪上。
回復

使用道具 舉報

7#
ID:101869 發表于 2021-5-29 21:11 來自觸屏版 | 只看該作者
目前能顯示了  就是消影做不出來
回復

使用道具 舉報

8#
ID:902592 發表于 2021-5-30 18:24 | 只看該作者
消影一般delay 200ms 就可以了
回復

使用道具 舉報

9#
ID:101869 發表于 2021-5-31 18:46 | 只看該作者
顯示好了代碼如下求高手幫助下按鍵怎么整  怎樣讀鍵值
#include<STC15.H>  //包含單片機寄存器的頭文件

#include<intrins.h>


#define uint unsigned int
#define uchar unsigned char   
//74ls164IO口定義
sbit CLK=P3^2;
sbit DAT=P3^3;
sbit key=P3^4;
bit  key_1=0,key_2=0;
uint num,llxs,temp, Cnt_ms;
uchar code tab[]={ 0xBB,  0x28,  0x73, 0x79, 0xE8,  0xD9,  0xDB, 0x38,  0xFB,  0xF9,0xef,0x7f,0xdf,0xef,0Xbf,0xff,0X00, };
  uchar G,S,bai,Q;
void dispbyte(uchar byte);
void delay(uint z);
void count();
void delay(uint z)
{
        uint x,y;
        for(x=0;x<z;x++)
                for(y=0;y<100;y++);
}



void dispbyte(uchar byte)
{   
         uchar num2,i;
         num2=tab[byte];//取出段碼
    for(i=0;i<8;i++)   //循環八次送至led數碼管
    {
             CLK=0;               
        if(num2&0x01)  DAT=1;//判斷最高位,并取出最高位
        else          DAT=0;//
   CLK=1;        //上升沿有效
        num2>>=1;     //左移一位(每次移動一位,共8次)
    }
}


void count()                                 //把每一位數字都單獨存到一個變量中
{
        G =   num%10;                        
        S =   num/10%10;
        bai = num/100%10;
        Q =   num/1000%10;
       
}
void Timer0Init(void)                //4毫秒@12.000MHz
{
        AUXR &= 0x7F;                //定時器時鐘12T模式
        TMOD &= 0xF0;                //設置定時器模式
        TL0 = 0x60;                //設置定時初始值
        TH0 = 0xF0;                //設置定時初始值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
}



main()
{  
    Timer0Init();
     EA=1;                                       
     ET0=1;
    num=0;
    Cnt_ms=0;

        while(1)
        {
   
      
         
          count();
        keysm();
      }

   
}



/******定時器0中斷服務程序******/
void timer0() interrupt 1        
{
        
        Cnt_ms++;                              
        llxs++;                              
        if(Cnt_ms>=250)               
        {     Cnt_ms=0;}
        if(llxs>4)                        
        {llxs=0;}
                switch(llxs)
                {
                        case 0:
                        
                            dispbyte(10);
                       
                         dispbyte(G);
                         
                        
                         break;
                       case 1:  
                                    dispbyte(12);
                                 dispbyte(S);
          
                                 break;
                        case 2:
                                dispbyte(11);
  
                                    dispbyte(bai);
                                break;
                        case 3:
                                 dispbyte(14);
   
                                     dispbyte(Q);
                                break;

                }
      
        }

回復

使用道具 舉報

10#
ID:930352 發表于 2021-5-31 23:50 | 只看該作者
非凡科技 發表于 2021-5-31 18:46
顯示好了代碼如下求高手幫助下按鍵怎么整  怎樣讀鍵值
#include  //包含單片機寄存器的頭文件

很多年沒用過164了,現在都用1628,
回復

使用道具 舉報

11#
ID:916454 發表于 2021-6-1 08:47 | 只看該作者
延時短了就顯示成這樣了吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 最新国产精品视频 | 国产精品欧美一区二区三区 | 国产精品久久久亚洲 | 99re6在线 | а_天堂中文最新版地址 | 亚洲精品二区 | 久久久久91 | 国产欧美精品一区二区色综合 | 成人国产精品久久久 | 99久久婷婷国产综合精品 | 亚洲永久免费观看 | 99精品欧美一区二区三区综合在线 | 欧美亚洲高清 | 99精品欧美一区二区三区综合在线 | 黑人巨大精品 | 国产精品揄拍一区二区久久国内亚洲精 | 国产电影一区二区在线观看 | 久久精品欧美一区二区三区不卡 | 成人精品久久久 | 福利久久| 91精品国产91久久久久久最新 | 亚洲精品一区二区在线观看 | 久久久久国产一区二区三区 | 日韩精品一区二区三区中文字幕 | 日本久久网站 | 精品久久久久久亚洲综合网 | 亚洲视频在线一区 | 欧美日日 | www.五月天婷婷.com | 激情黄色在线观看 | 亚洲精品福利视频 | 久久免费国产 | 三级黄片毛片 | 亚洲a视频| 欧美国产日韩成人 | 午夜网站视频 | 日韩av成人 | 国产免费av网 | 久久久久亚洲视频 | 亚洲视频在线观看 | 国产日韩精品久久 |