日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【51单片机快速入门指南】2.4:74HC595、LED点阵屏及其SPI控制

發布時間:2023/12/9 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【51单片机快速入门指南】2.4:74HC595、LED点阵屏及其SPI控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 硬知識
    • IO 口擴展方式-串轉并
    • 74HC595 芯片介紹
    • 硬件設計
  • 測試源碼
    • HC74595.c
    • HC74595.h
    • main.h
  • 實驗現象
  • SPI控制

普中51-單核-A2
STC89C52
Keil uVision V5.29.0.0
PK51 Prof.Developers Kit Version:9.60.0.0


硬知識

選自《普中51單片機開發攻略_V1.2》

IO 口擴展方式-串轉并

???????使用的芯片是 74HC595。開發板板載 1 個 74HC595 芯片,僅需單片機 3 個 IO 口即可擴展 8 個,如果需要還可以將 2 個 74HC595 級聯擴展出 16 個 IO,這就實現用少數 IO 資源控制多個設備。

74HC595 芯片介紹

???????74HC595 是一個 8 位串行輸入、并行輸出的位移緩存器,其中并行輸出為三 態輸出(即高電平、低電平和高阻抗)。

15 和 1 到 7 腳 QA–QH:并行數據輸出
9 腳 QH 非:串行數據輸出
10 腳 SCLK 非( MR) : 低電平復位引腳
11 腳 SCK( SHCP) : 移位寄存器時鐘輸入
12 腳 RCK( STCP) : 存儲寄存器時鐘輸入
13 腳 G 非( OE) : 輸出有效
14 腳 SER( DS) : 串行數據輸入

???????74HC595 具有 8 位移位寄存器和一個存儲器,三態輸出功能。移位寄存器和存儲器是單獨的時鐘。數據在 SCK 的上升沿輸入,在 RCK 的上升沿進入到存 儲器中。如果兩個時鐘連在一起,則移位寄存器總是比存儲器早一個脈沖。移位寄存器有一個串行輸入(DS),和一個串行輸出(Q7 非),和一個異步的低電 平復位,存儲寄存器有一個并行8 位、具有三態的總線輸出,當 MR 為高電平,OE 為低電平時,數據在 SHCP 上升沿進入移位寄存器,在 STCP 上升沿輸出到并行端口。

硬件設計


???????74HC595 需要用到的控制管腳 SER、RCLK、SRCLK 直接連接到 51 單片機的 P3.4~P3.6 IO 口上,輸出端則是直接連接到 LED 點陣模塊的行端口上,即為 LED 發光二極管的陽極,LED 點陣的列則為發光二極管的陰極。
???????要想控制 LED 點陣,可以將單片機管腳按照 74HC595 芯片的通信時序要求來傳輸數據,這樣即可控制 LED 點陣的數據。根據 LED 發光二極管導通原理,當陽極為高電平,陰極為低電平則點亮,否則熄滅。因此通過單片機 P0 口控制點陣74HC595控制點陣

測試源碼

修改自官方例程
stdint.h見【51單片機快速入門指南】1:基礎知識和工程創建

HC74595.c

#include <REGX52.H> #include "intrins.h" #include "stdint.h"#define Rows P0uint8_t Mat[8][8] = {1,1,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1, };void HC74595_Delay() //10us @11.0592MHz {unsigned char i;i = 2;while (--i); }//定義74HC595控制管腳 sbit SRCLK_74595 = P3^6; //移位寄存器時鐘輸入 sbit RCLK_74595 = P3^5; //存儲寄存器時鐘輸入 sbit SER_74595 = P3^4; //串行數據輸入/******************************************************************************* * 函 數 名 : hc595_write_data(uint8_t dat) * 函數功能 : 向74HC595寫入一個字節的數據 * 輸 入 : dat:數據 * 輸 出 : 無 *******************************************************************************/ void hc595_write_data(uint8_t dat) {uint8_t i=0;for(i=0;i<8;i++)//循環8次即可將一個字節寫入寄存器中{SER_74595=dat>>7;//優先傳輸一個字節中的高位dat<<=1;//將低位移動到高位SRCLK_74595=0;HC74595_Delay();SRCLK_74595=1;HC74595_Delay();//移位寄存器時鐘上升沿將端口數據送入寄存器中 }RCLK_74595=0;HC74595_Delay();RCLK_74595=1;//存儲寄存器時鐘上升沿將前面寫入到寄存器的數據輸出 }void imshow(uint8_t mat[8][8]) {uint8_t i, j, Row_Pix;for(i=0; i<8; ++i){ hc595_write_data(0x00);//消除前面寄存器緩存數據for(j = 0, Row_Pix = 0; j < 8; ++j)Row_Pix |= mat[i][j] << (7-j);Rows = ~Row_Pix;hc595_write_data(0x80>>i);//寫入新的數據HC74595_Delay();} }

HC74595.h

#ifndef HC74595_H_ #define HC74595_H_#include "stdint.h"extern uint8_t Mat[8][8];void hc595_write_data(uint8_t dat); void imshow(uint8_t mat[8][8]);#endif

main.h

#include <REGX52.H> #include "intrins.h" #include "stdint.h" #include "HC74595.h"void main(void) { while(1){imshow(Mat);} }

實驗現象

如圖,成功將Mat中的二值圖像打印在8x8的點陣屏上

SPI控制

SPI控制代碼見【51單片機快速入門指南】5:軟件SPI
SPI使用模式2

#include <STC89C5xRC.H> #include "intrins.h" #include "stdint.h" #include "./Soft_SPI/Soft_SPI.h"#define Rows P0//定義74HC595控制管腳 sbit RCLK_74595_CS = P3^5; //存儲寄存器時鐘輸入uint8_t Mat[8][8] = {1,1,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1, };void HC74595_Delay() {}/******************************************************************************* * 函 數 名 : hc595_write_data(uint8_t dat) * 函數功能 : 向74HC595寫入一個字節的數據 * 輸 入 : dat:數據 * 輸 出 : 無 *******************************************************************************/ void hc595_write_data(uint8_t dat) {RCLK_74595_CS=0;SOFT_SPI_RW_MODE2(dat);RCLK_74595_CS=1;//存儲寄存器時鐘上升沿將前面寫入到寄存器的數據輸出 }void imshow(uint8_t mat[8][8]) {uint8_t i, j, Row_Pix;for(i=0; i<8; ++i){ hc595_write_data(0x00);//消除前面寄存器緩存數據for(j = 0, Row_Pix = 0; j < 8; ++j)Row_Pix |= mat[i][j] << (7-j);Rows = ~Row_Pix;hc595_write_data(0x80>>i);//寫入新的數據HC74595_Delay();} }

總結

以上是生活随笔為你收集整理的【51单片机快速入门指南】2.4:74HC595、LED点阵屏及其SPI控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色欧美在线观看 | 噜啪啪 | 开心六月婷婷 | 日韩一区二区在线视频 | 欧美性久久久 | 国产精品九一 | 99re9| 好吊操精品视频 | 中国精品毛片 | 韩日精品在线观看 | 黄色网www | 久久久18 | 黄色小说网站在线观看 | 国产亚洲精品码 | 亚洲黄色免费电影 | 波多野结衣办公室双飞 | 欧美日韩成人精品 | 欧美二级片 | av中文字幕观看 | 色老汉av一区二区三区 | 黄色片日韩 | 在线看片日韩 | 美女毛片 | 一曲二曲三曲在线观看中文字幕动漫 | 探花国产精品一区二区 | 偷拍亚洲视频 | 国产片在线 | 韩国三级做爰视频 | 免费一级淫片 | 亚洲av无码国产精品永久一区 | 国产一级淫片a | 99热在线看 | 国产精品三区在线观看 | 中文字幕伊人 | 国产又粗又长又黄 | 无码国产精品一区二区免费式直播 | 国产激情av一区二区三区 | 精品乱码久久久久久中文字幕 | 午夜剧场黄色 | 国产蜜臀av一区二区 | 999国产在线| 成人在线网站 | 亚洲欧美中文字幕 | 日本做爰高潮又黄又爽 | 韩国特级毛片 | 精品黑人一区二区三区久久 | 亲子乱aⅴ一区二区三区 | 欧美黄色免费网站 | 亚州av综合色区无码一区 | 特黄做受又粗又大又硬老头 | 久操青青| 精品国产高清在线观看 | 久久爰| 国产精品自拍第一页 | 人碰人操 | 国产成人精品在线 | 精品免费国产一区二区三区四区 | 老头糟蹋新婚少妇系列小说 | 日本免费不卡 | 免费视频久久久 | 毛片内射久久久一区 | 99re免费视频 | 丁香久久婷婷 | 中文字幕11页中文字幕11页 | 黄色一级毛片 | 女性向av免费网站 | 50部乳奶水在线播放 | 亚州av网站| 黄色片网战 | 日本不卡一区二区三区在线观看 | av在线综合网 | 色爱视频 | 内地毛片 | 亚洲av电影天堂男人的天堂 | 日本深夜福利 | 国偷自产视频一区二区久 | 亚洲精品一区久久久久久 | 中日韩在线观看 | 日韩精品一区二区三区视频 | 久久爱成人 | 久久综合一本 | av小说在线观看 | 99精品在线 | 欧美久久免费 | 日本亚洲视频 | 国产成人免费在线 | 一区二区视频观看 | 91理论片午午伦夜理片久久 | 色先锋影院 | 精品人妻午夜一区二区三区四区 | 豆花视频在线播放 | 欧美乱妇一区二区三区 | 欧美区一区 | 欧美性猛交乱大交xxxx | 亚洲精品第一页 | 一区免费观看 | 女人叉开腿让男人桶 | 久久国产精品免费视频 | 人妖交videohd另类 |