1. 程式人生 > >51微控制器:IO口擴充套件晶片用法(74HC165,74HC595)

51微控制器:IO口擴充套件晶片用法(74HC165,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 );
    }     
}

相關推薦

51微控制器IO擴充套件晶片用法(74HC165,74HC595)

IO口擴充套件晶片,主要是解決微控制器IO口太少。 74HC165:資料從並轉串 74HC595:資料從串轉並 兩種晶片,都是通過時序電路,加上移位功能,進行資料傳輸 74HC165:資料從並轉串。以下例項,實現8個獨立按鍵,控制數碼管的8段 #include <reg52.h

51單片機IO擴展芯片用法(74HC165,74HC595)

效果 urn bit put AD NPU com 數據 輸入 IO口擴展芯片,主要是解決單片機IO口太少。 74HC165:數據從並轉串 74HC595:數據從串轉並 兩種芯片,都是通過時序電路,加上移位功能,進行數據傳輸 74HC165:數據從並轉串。以下

(學習筆記)手把手教你學51微控制器點亮你的LED

 2.1 微控制器內部資源 三大資源: Flash:程式儲存空間 RAM:資料儲存空間 SFR:特殊功能暫存器 2.2微控制器最小系統 三要素:電源、晶振、復位電路 2.3LED小燈 限流:5~20mA(限流電阻阻值計算) 自身壓降2V 2.4程式程式碼編寫

KST-51微控制器c語言程式設計實現數碼管動態顯示秒錶的倒計時

/*60S倒計時*/ /*個位每1S變一次,從0~9*/ /*十位,個位為0的下一秒十位發生變化*/ #include<reg52.h> sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit ADDR3

(學習筆記)手把手教你學51微控制器中斷與數碼管動態顯示

一、c語言的陣列 1.1陣列的基本概念 陣列是具有相同資料型別的有序資料的組合,一般來講陣列定義後滿足以下三個條件: (1)具有相同的資料型別 (2)具有相同的名字 (3)在儲存器中是被連續存放的 1.2陣列的宣告 資料型別 陣列名【陣列長度】; (1)同一個

(學習筆記)手把手教你學51微控制器變數進階與點陣LED

一、變數的作用域 作用域:變數的有效範圍。分為:區域性變數和全域性變數。 1.1區域性變數 在函式內部宣告的變數,只在本函式內部可以使用。 1.2全域性變數 在函式外宣告的變數就是全域性變數。 二、變數的儲存類別 變數的儲存類別分為自動、靜態、暫存器和外部四種。

51微控制器每次按S1鍵,流水燈移位演示

原理圖 //原始碼 #include <reg52.h> #include <intrins.h> //包含移位函式 #define uint unsigned

PIC微控制器IO對映問題

我們可以在手冊上看到管腳分佈表: 和管腳對映有關的是:RP0~RP31(雙向對映,既能夠做輸出對映也能夠作為輸入對映),共32個管腳                                         RPI32~RPI43(只能夠作為輸入對映,不能夠作為輸出

51微控制器實時時鐘 PCF8563時鐘晶片

實現實時時鐘,電源拔插時間不重置(內建電池供電維持時間變化)。功能有檢視日期,檢視星期,檢視鬧鐘和分別的調整時間,調整日期,調整鬧鐘,調整星期。且預設情況下不可以調整,當按下可調控鍵之後才可以調整、再次按可調控鍵關閉變為不可調整狀態。還有整點報時功能(有個小瑕疵就是鬧鐘正好是

Zigbee網路架構+ZigBee的體系結構+理解zigbee節點的實現的案例+“51微控制器” 和 “zigbee” 、 “cc2530晶片” 之間的關係+晶片cc2530

ZigBee技術具有強大的組網能力,可以形成星型、樹型和網狀網,可以根據實際專案需要來選擇合適的網路結構; 以下拓撲結構的節點,均是指支援zigbee協議的並以其通訊技術手段,實現節點處所需要功能的產品(例如,完整的電路板,參考後面)。 星形拓撲是最簡單的一種拓撲形

51微控制器獨立按鍵與矩陣按鍵控制數碼管

一,獨立按鍵注意一下幾點 >按下的時候,電壓被拉低,所以IO口要傳低電平( 0x0 ) >按下的時候要消除抖動 ( 延時10ms ),在判斷,是否還是低電平,再做業務處理 下面這段程式,就是通過一個獨立按鍵連線到p1口,控制靜態數碼管的 一段 進行亮和滅的切換。 #include &l

51微控制器8位數碼管動態顯示,從12345678開始,每次按S1鍵加1

原始碼 #include <reg52.h> #include <stdlib.h> #define uint unsigned long #define uchar unsigned char sbit

基於proteus的51微控制器模擬例項十、51微控制器的P0的工作原理

微控制器系統功能實現的最基本和最主要方式是:檢測I/O埠輸入的各種資料、控制I/O埠輸出各種資料。 微控制器系統的工作過程通常是:外部電路的執行情況通過I/O埠輸入到微控制器,微控制器程式讀取輸入的資料並進行分析後,根據不同情況控制I/O埠輸出不同的資料,從而實現控制相關

使用微控制器普通IO模擬串列埠的三種方法

隨著微控制器的使用日益頻繁,用其作前置機進行採集和通訊也常見於各種應用,一般是利用前置 機採集各種終端資料後進行處理、儲存,再主動或被動上報給管理站。這種情況下下,採集會需 要一個串列埠,上報又需要另一個串列埠,這就要求微控制器具有雙串列埠的功能,但我們知道一般的51 系列只提供一個串列埠,那麼另一

微控制器擴充套件IO

微控制器如何擴充套件IO口? 首先我們先講講為什麼要擴充套件IO口。在我們使用51微控制器的時候,有時候會出現IO口不夠用的情況。比如鍵盤!這個時候IO口的資源就十分有限了。 按鍵是我們常用的器件,做

51微控制器---IO (準雙向和雙向的區別)

P0口:雙向8位三態I/O口P1口:準雙向8位I/O口P2口:準雙向8位I/O口P3口:準雙向8位I/O口這裡特別要主要準雙向與雙向三態I/O的區別:P1口,P2口,P3口是3個8位準雙向的I/O口,各口線在片內均有固定的上拉電阻,當這三個準雙向I/O口作輸入口使用時,要想該口先寫1,另外準雙向I/O口無高阻

C語言控制51微控制器 sbit 與 sfr 的用法(keil擴充套件指令 )

1. SBIT Assembler Statement (keil 中 help 的說明) Arguments sbit sfr_symbol = bit-address; Description The sbit statement def

51微控制器的時鐘及匯流排時序和匯流排擴充套件

說到51微控制器的時鐘首先想到51時怎麼工作的呢?微型控制器要想工作必須要有一個“動力”,對於51微控制器來說,這個“動力”就是時鐘源。一般應用上會外接一個12MHz的晶振作為時鐘源。     一般第一種接法用的比較多。選擇內部震盪方式時晶振旁邊有兩個小電容。這

C#檔案IO操作 FileStream的用法 及 StreamReader 和 StreamWriter的用法

1. FileStream 用法程式碼 static void Main(string[] args) { //memory : 記憶體 //Binary : 二進位制 String path = @"F:\ly\tes

深入解讀微控制器IO模擬IIC程式設計

在微控制器的開發過程中,經常會使用IIC介面連線外部感測器獲得相應的資料。一旦我們的IIC介面數目較多而微控制器固有的IIC介面不夠的情況,這時一個微控制器普通IO口模擬IIC的做法可以解決我們的尷尬。這篇部落格詳細的介紹STM32F103的IO口模擬IIC的詳細做法。