51單片機:IO口擴展晶元用法(74HC165,74HC595)

来源:https://www.cnblogs.com/ghostwu/archive/2018/06/07/9153204.html
-Advertisement-
Play Games

IO口擴展晶元,主要是解決單片機IO口太少。 74HC165:數據從並轉串 74HC595:數據從串轉並 兩種晶元,都是通過時序電路,加上移位功能,進行數據傳輸 74HC165:數據從並轉串。以下實例,實現8個獨立按鍵,控制數位管的8段 74HC595:數據從串轉並,以下程式,實現流水燈效果 ...


IO口擴展晶元,主要是解決單片機IO口太少。

74HC165:數據從並轉串

74HC595:數據從串轉並

兩種晶元,都是通過時序電路,加上移位功能,進行數據傳輸

 

74HC165:數據從並轉串。以下實例,實現8個獨立按鍵,控制數位管的8段

 

#include <reg52.h>
#include <intrins.h>

typedef unsigned char u8;
typedef unsigned int u16;

void delay( u16 i ){
    while( i-- );
}

#define GPIO_DIG    P0

sbit IN_SG = P1^6;
sbit IN_DATA = P1^7;
sbit IN_CLK = P3^6;

u8 read_74HC165(){
    u8 indata;
    u8 i;
    IN_SG = 0; //先置入數據
    _nop_(); //等待一個機器周期
    IN_SG = 1; //晶元切入 移位功能
    _nop_();
    
    indata = 0;
    for( i = 0; i < 8; i++ ){ //在時序電路作用下,移動8次,得到一個位元組數據
        indata = indata << 1;
        IN_CLK = 0;
        _nop_();
        
        indata |= IN_DATA;
        IN_CLK = 1;    
    }
    return indata;
}

void main (){
    u8 hc165_data;
    GPIO_DIG = 0x0;
    while( 1 ) {
        hc165_data = read_74HC165();
        if( hc165_data != 0xFF ) {
            GPIO_DIG = ~hc165_data;
        }
    }   
}

74HC595:數據從串轉並,以下程式,實現流水燈效果

#include <reg52.h>
#include <intrins.h>

typedef unsigned char u8;
typedef unsigned int u16;

void delay( u16 i ){
    while( i-- );
}

#define GPIO_DIG    P0

sbit SRCLK = P3^6; //移位寄存器時鐘
sbit STORE_RCLK = P3^5; //存儲寄存器時鐘
sbit SER = P3^4; //串口輸入數據

void hc595_send_data( u8 input_data ) {
    u8 i;
    SRCLK = 1;
    STORE_RCLK = 1;
    for( i = 0 ; i < 8; i++ ){
        SER = input_data >> 7; //從最高位開始傳送
        input_data <<= 1; //把次高位移到最高位

        SRCLK = 0; //時序脈衝
        _nop_();
        _nop_();
        SRCLK = 1;
    }
    STORE_RCLK = 0; //時序脈衝
    _nop_();
    _nop_();
    STORE_RCLK = 1; //把寄存器的數據 送到輸出口
}

void main (){
    u8 led_num;
    led_num = 0x01; //先讓D11點亮
    while( 1 ) {
        hc595_send_data( led_num );
        led_num = _crol_( led_num, 1 );
        delay( 50000 );
        delay( 50000 );
    }     
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Scenario: 創建了一個WinForm的小程式,希望將它顯示在任務欄,所以在工具欄中的“公共控制項”里,拖入NotifyIcon控制項—notifyIcon1,這個是程式運行任務欄右側通知區域圖標顯示控制項,為控制項notifyIcon的屬性Icon添加一個icon圖標,或從代碼中加入。 Issue: ...
  • 在一些耗時的操作過程中,在長時間運行時可能會導致用戶界面 (UI) 處於停止響應狀態,用戶在這操作期間無法進行其他的操作,為了不使UI層處於停止響應狀態,我們傾向推薦用戶使用BackgroundWorker來進行處理,這個後臺的線程處理,可以很好的實現常規操作的同時,還可以及時通知UI,包括當前處理... ...
  • Select與Select Many 之前在項目中查詢資料庫中的數據,都是通過sql語句來查詢的,但是隨著時代的發展,微軟在.Net Framework 4.5版中推出的一個主要的特性——LINQ。 LINQ是Language Integrate Query的縮寫,意為語言集成查詢。其中有兩種查詢方 ...
  • Restful幾乎已算是API設計的標準,通過HTTP Method區分新增(Create)、查詢(Read)、修改(Update)和刪除(Delete),簡稱CRUD四種數據存取方式,簡約又直接的風格,讓人用的愛不釋手。本篇將介紹如何通過ASP.NET Core實踐REST-Like API。 為 ...
  • .net 這幾年國內確實不好過。 很多都選擇轉行。不過.net Core跨平臺 開源之後 。社區的生態在慢慢建立。往好的趨勢發展。 對於堅守在.NET戰線的開發者來說 是個挺不錯的消息。 特別是微軟收購75億美金GitHub。.net 生態 社區圈子。肯定會有所上升。 發展趨勢越來越好。(當然 這隻 ...
  • 一、序言 在Office Word中,支持在Word文檔中插入類型非常豐富的形狀,包括線條、矩形、基本形狀(諸如圓形、多邊形、星形、括弧、笑臉等等圖形)、箭頭形狀、公式形狀、流程圖、旗幟圖形、標註圖形等等,我們在編程過程中,想要在Word中繪製不同類型的圖形,可以通過類庫來操作。控制項Spire.Do ...
  • 平時使用 LINQ 進行一些簡單的條件拼接查詢一般都會這樣操作: 這裡有三個條件,是前端傳入的搜索條件,然後我們來編寫一個查詢語句: 因為我們前端傳入的條件不是固定的,所以有可能會出現有的條件沒有傳入的情況,如果是 SQL 的動態拼接 SQL 就可以了,而 Linq 你肯定是沒法動態拼接的,只有自己 ...
  • VMware下CentOS7安裝後,還原虛擬網路後,敲ifconfig不顯示區域網ip,沒有出現eth0網卡,不能上網,SSH不能連接,輸入ifconfig後如下圖: 解決方法: 1.編輯網卡的配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 將里 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...