PIC MSSP_SPI_74HC595

2021-01-08 電子產品世界

我覺得74HC595相當於是一個你看得見的寄存器,數據的輸入只能是串行的8位輸入,輸出可以選擇串行輸出,也可以選擇並行輸出。

如果把兩個74HC595連在一起,就會有解碼器和掃描的結合的作用,誇張一點,如果時間允許,可以3接口擴展為16接口,雖然輸入數據不同時,但是可以讓輸出數據同時。

#include //調用頭文件,可以去PICC18軟體下去查找PIC18FXX2.H

__CONFIG(1,XT) ; //晶振為外部4M

__CONFIG(2,WDTDIS) ; //看門狗關閉

__CONFIG(4,LVPDIS) ; //禁止低電壓編程

#define rck RC2

#define sck RC3

#define si RC5

#define uchar unsigned char

#define uint unsigned int

#define nop NOP()

void delayms(uint x)

{

uint i,j;

for(i=0;i<=110;i++)

for(j=0;j<=x;j++);

}

char shuma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

char led[18]={

0B10000000,

0B01000000,

0B00100000,

0B00010000,

0B00001000,

0B00000100,

0B00000010,

0B00000001,

0B00000000,

0B00000001,

0B00000010,

0B00000100,

0B00001000,

0B00010000,

0B00100000,

0B01000000,

0B10000000,

0B00000000

};

void write595(uchar dat1,uchar dat2)

{

rck=0; //rck為並行輸出的控制時鐘,當有上升沿的時候並行輸出移位寄存器中的數

SSPBUF=dat1; //往移位寄存器裡存數據

while(SSPIF==0) //往移位寄存器裡存數據需要時間

{ ;}

SSPIF=0; //當移位寄存器裡的8位數都存滿的時候,會發生中斷請求

SSPBUF=dat2;

while(SSPIF==0)

{ ;}

SSPIF=0;

nop;

rck=1;

}

void main()

{

uchar i=0,j=0;

ADCON1=0x06;

TRISC=0xd3;

PIR1=0x00; //PIR1寄存器裡有關於SSP1IF的寄存器,即移位寄存器存滿的中斷標誌位軟體清零

SSPSTAT=0xc0;

SSPCON1=0x20;

while(1)

{

write595(led[j],shuma[i]); //用兩個參數是因為我的開發板上把兩個74HC595連在了一起,第一個74HC595的SO是第二個的SI,第一個595可以最快輸出存入的數,但是第二個595的數據必須是從第一個595中移出來的數

delayms(800);

i++;

if(i>9)

i=0;

j++;

if(j>17)

j=0;

}

}


相關焦點

  • 74HC595 的實際應用與編程
    推薦閱讀 bascom avr tiny45驅動74hc595 如題,代碼如下:$regfile = "attiny45.dat"                                   '指定單片機型號$crystal = 8000000
  • 74HC595驅動LED的電路設計方案
    數據從SDA 口送入74HC595 , 在每個SCLK的上升沿, SDA 口上的數據移入寄存器, 在SCLK的第9個上升沿, 數據開始從QS 移出。如果把第一個74HC595 的QS 和第二個74HC595 的SDA 相接, 數據即移入第二個74HC595 中, 照此一個一個接下去, 可接任意多個。數據全部送完後, 給SLCK 一個上升沿, 寄存器中的數據即置入鎖存器。
  • STm32驅動74HC595引腳圖時序圖工作原理
    74HC595和74hc164一樣是在單片機系統中常用的晶片之一他的作用就是把串行的信號轉為並行的信號,常用在各種數碼管以及點陣屏的驅動晶片, 使用74HC595可以節約單片機mcu的io口資源,用3個io就可以控制8個數碼管的引腳,他還具有一定的驅動能力,可以免掉三極體等放大電路,所以這塊晶片是驅動數碼管的神器.應用非常廣泛,點這裡可以下載完整的74HC595
  • 74HC595在單片機上的應用及程序
    74HC595具有8位串入並出的三態門電路。的數據手冊程序編制:埠定義 設置:sbit DATA=P1^5;sbit SHIFT=P1^6;sbit STORAGE=P1^7;1、寫595Void write_595(uchar x)//功能:將無符號8位數x,寫入到595的shife register{Uchar
  • 74HC595控制8位數碼管 51單片機
    1、實驗目的利用單片機的IO口模擬SPI總線時序邏輯,通過74HC595控制24個LED,學會74HC595串行控制的使用方法。      2、實驗內容    編寫一段程序,使24個LED先全亮,然後以一秒為間隔從左至右的一列接一列的熄滅。
  • stm32使用三片74HC595級聯程序代碼
    /************************************************************************ Function: Read_74HC595 Description
  • 單雙色恆流ICN2595與恆壓74HC595對比報告
    幾年前,單雙色LED顯示屏採用恆流驅動晶片,後來為了降低成本,74HC595成為主流。但是74HC595在性能等方面表現不盡如人意。如今,隨著恆流晶片在LED全彩領域的大量使用,成本逐步下降,甚至方案成本已低於74HC595。
  • 單片機驅動數碼管設計詳解(74HC595實現)
    數碼管顯示設計本設計使用了一個4位的數碼管,為共陽型,為了節省單片機的IO口,使用了兩片74HC595作為數碼管的驅動晶片,共佔用3個IO口。2. 74HC595簡介74HC595是8位的移位寄存器,串入並出,並具有鎖存功能,被廣泛的用於數碼管、點陣的驅動電路中。
  • 51單片機C編程(十五 74HC595控制四位數碼管)
    =P1^0;//串行數據輸入sbit SCLK_595=P1^1;//移位時鐘脈衝sbit RCK_595=P1^2;//輸出鎖存器控制脈衝sbit P20=P2^0;sbit P21=P2^1;sbit
  • 74hc4052中文資料匯總(74hc4052引腳圖及功能_工作原理及應用電路)
    打開APP 74hc4052中文資料匯總(74hc4052引腳圖及功能_工作原理及應用電路) 發表於 2018-04-04 15:53:14
  • 74hc573使用方法(74hc573引腳圖及功能_工作原理_封裝尺寸及應用...
    打開APP 74hc573使用方法(74hc573引腳圖及功能_工作原理_封裝尺寸及應用電路) 發表於 2017-12-08 17:10:03
  • HC-06藍牙模塊刷Rn42固件 記錄
    還有一種方法是購買廉價的hc-06或hc-05,刷rn42固件支持藍牙hid。外觀展示某寶購買的藍牙hc-06模塊,應該是寨品而不是原裝貨,一些元件和網絡上的不一樣。將修改過的usbspi.dll文件複製到BlueSuite文件夾中,替換原版dll文件。
  • 74hc245引腳圖及功能介(功能真值表及邏輯框圖)
    打開APP 74hc245引腳圖及功能介(功能真值表及邏輯框圖) 發表於 2018-01-27 10:17:49
  • #51單片機#8位數碼管(74HC595晶片)的使用方法
    數碼管基本屬性:1.採用2片595驅動數碼管,需要單片機3路IO口,根據數碼管動態掃描原理進行顯示;2.寬工作電壓3.3V到5V;3.PCB板尺寸:71mm*22mm
  • 「正點原子Linux連載」第六十二章Linux SPI驅動實驗
    如果使用spi_bitbang_start註冊spi_master的話就要使用spi_bitbang_stop來註銷掉spi_master。I.MX6U SPI主機驅動會維護一個spi_imx_data類型的變量spi_imx,並且使用spi_imx_setupxfer函數來設置spi_imx的tx和rx函數。
  • 框架-SPI四種模式+通用設備驅動實現
    * spi = &spiDriverElem[id]; // 位置1 if(spi->CPHA){ spiOut(spi->sckGpiox, spi->sckPin, spi->CPOL); } for(i=0; i<8; i++) { // 位置2 spiOut(spi->sckGpiox, spi->sckPin, (spi