內容:SPI、 74HC595+shiftOut() 實作:數位擴充 簡報:廖崇義

Slides:



Advertisements
Similar presentations
人機介面 Arduino 簡介 授課教師 開課單位. Arduino 簡介 Arduino 是一塊 Open source 的 Simple i/o 介面板,並 且具有使用類似 java, C 語言的開發環境。 可以快速使用 Arduino 語言 ( 基於 wiring) 與 Flash 或 Processing…
Advertisements

LinkIt ONE開發板的簡介.
TMS320F2812串行外设接口 Serial Peripheral Interface (SPI)
內容:I2C通訊(wire函數) 實作:Arduino <->Arduino by I2C 簡報:廖崇義
加速度計 指導老師 : 洪正瑞 製作人 : 蔡昌佑.
智慧電子應用設計導論(1/3) Sensor-II
(建议使用Office2003以上版本播放,将有更丰富的动画效果)
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
100學年度第2學期 邏輯設計實習TA訓練 機 台 介 紹.
智慧電子應用設計導論(1/3) Sensor-III
第9章 串行扩展技术 (课时:6学时).
第7章 单片机系统的串行扩展 西安思源学院 电子信息工程学院 1.
內容:串列傳輸 實作:Arduino to PC 、 Arduino to Arduino 簡報:廖崇義
特雷門琴 (Theremin) 是 tone() 函數的應用, 它只需要一個蜂鳴器, 一個光敏電阻, 以及一個 10K 電阻就可以進行測試了. 實際電路接線如下 :光敏電阻與 10 K 電阻串聯, 光敏電阻一端接 5V, 與電阻串接處接Arduino 的 A0 腳, 電阻另一端接地. 而蜂鳴器則 +
CH5 數位訊號 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
第八章 数据通信.
    Arduino 1602 LCD 量測電壓顯示 LCD 示波器    林品成 月.
Block diagram BB —逻辑 —音频 —电源管理 HW interface. Block diagram BB —逻辑 —音频 —电源管理 HW interface.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
2-1 接腳說明 2018/11/30 第2章 系統分析.
小專題-霍爾電路之IC研究 組員:施怡儒 S 柯曄新 S 張久藝 S
8-1 功能簡介 8-4 實驗成果 8-2 電路說明 8-5 延伸應用與練習 8-3 程式設計
Arduino.
第十一章 MSP430的SPI模組.
智慧電子應用設計導論(1/3) Display
語法:Variables & Functions 實作:Digital out (Button+LED) 簡報:廖崇義
K60基础课程 02 首都师范大学物理系 王甜.
類比轉數位 IC研究 組員:施怡儒 S 柯曄新 S 張久藝 S
智慧電子應用設計導論(1/3) Wireless
    使用Arduino量測交流(AC)電壓    林品成 月.
    使用Arduino量測直流(DC)電壓    林品成 月.
项目四 基于SPI串行总线接口DA芯片TLC5615的使用
6-1 功能簡介 6-4 實驗成果 6-2 電路說明 6-5 延伸應用與練習 6-3 程式設計
4-15 WDT HT66F50.
第七單元 正反器 (教科書第四章) 數位系統實驗
TA教育訓練 微處理機系統實習.
亚博科技 Arduino视频教程 第8讲 蜂鸣器发声实验.
紅外線心律測定 S 劉鴻毅 S 林易霆 S 吳柏寰 S 林恩廷.
5-6 串列埠模式0輸出埠擴充實習.
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
Bluetooth 技術篇 藍芽技術如何傳輸資料 藍芽傳輸的安全性 第六組 吳哲榮.
語法:結構 實作:Analog in (VR、光敏+七段顯示電壓) 簡報:廖崇義
亚博科技 Arduino视频教程 第12讲 8乘8点阵.
基本IO.
SOCKET( ).
物聯網期末報告 組員: 邱景柏 方嘉慶 陳約翰 洪銘陽
K60入门课程 06 首都师范大学物理系 靳熙芃.
Arduino智慧機器人 觸鬚的觸碰式導航
4.19 Fsys _ SLOW MODE HT66F70A.
4-16 SLEEP0 HT66F70A.
知识点0204 夏普红外测距传感器 主讲人:宁波鄞州职业教育中心学校 陈浙 (Arduino功能模块与应用)
第二章 类型、对象、运算符和表达式.
測試藍芽模組的接收和發送功能 班級:資通三A 學號: 姓名:簡宏恩.
自停式向下計數器 通訊一甲 B 楊穎穆.
Arduino課程 液晶1602 中部自造者基地-雲科大.
第八章 LED矩陣與SPI介面控制 建立自訂函數 認識變數的有效範圍 LED矩陣簡介 認識SPI介面與MAX7219 顯示靜態與動態矩陣圖像
利用HT66F50 SIM模組單元中PCK腳位輸出特性 控制speaker 發聲 SIM 串列界面模組
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
資料表示方法 資料儲存單位.
单片机原理及应用 (C语言版) 第8章 单片机系统扩展
4.11 ADC.
第五章 序列埠通訊 並列與序列通訊簡介 認識序列埠 認識字元資料類型 字串資料類型 從序列埠監控視窗觀察變數 從Arduino接收序列資料
第七章 LED七段顯示器 認識七段顯示器 用陣列儲存七段顯示數字 認識74HC595(序列連接七段顯示器)
微算機(二) -- ADC0804 measurement
LED Pili LED 中州技術學院 電子系 副教授 余文俊.
第10章 串行外设接口SPI SPI:高速同步串行输入/输出端口,传送速率可编程,
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
第2章 Arduino编程.
Lab#9 Serial Port 實驗.
Presentation transcript:

內容:SPI、 74HC595+shiftOut() 實作:數位擴充 簡報:廖崇義 Arduino week6 內容:SPI、 74HC595+shiftOut() 實作:數位擴充 簡報:廖崇義

設計實例(3D LED矩陣) https://www.youtube.com/watch?v=VzX_hWK N5ak https://www.youtube.com/watch?v=PZVizaSa aK8&hd=1 https://www.youtube.com/watch?v=4zjXr6Q npcw

SPI通訊簡介 功能 序列周邊界面(Serial Peripheral Interface)簡稱SPI,是 一種同步序列資料傳輸的協定,用來作為微處理器與周邊裝 置在短距離內快速的的通訊, 亦可作為兩個微處理器間的 通訊。

訊號腳位 Master In Slave Out (MISO) (SDI)從屬端線路 傳送資料給主控端(Master) Master Out Slave In (MOSI) (SDO)主控端線路 傳送資料給附屬端(Slave) Serial Clock (SCK)同步資料的時脈線路,通常由主控端產生 SS (Slave Select pin)附屬端腳位選擇 ,由主控端指定分配,啟動或關閉 附屬端裝置,以避免因雜訊干擾造成傳輸錯誤。

原理 7 6 5 4 3 2 1 SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR2 控制暫存器(SPCR)為不同的微處理器的功能性作控制設定的編碼。通常在控制暫存器 的一位元(bit)就會影響一種設定,像是速度或是極性。 資料暫存器(SPDR)僅僅作為暫時存放位元組,舉例而言,SPI資料暫存器(SPDR)會暫 時儲存即將透過MOSI線傳出的位原組和已經由MISO傳進來的位元組。 狀態暫存器(SPSR)用來改變基於不同微處理器條件的狀態。例如,當SPI有值傳進來或 傳出時,SPI狀態暫存器(SPSR)的第7個位元會設為1。 Ex.SPI控制暫存器(SPCR)有8個位元,每個位元都控制SPI的某種特殊設定: 7 6 5 4 3 2 1 SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR2

時序圖

函數 SPI.begin():啟用SPI SPI.end() :關閉SPI SPI.setBitOrder(order) :設定先傳輸高位還是低位元 order:LSBFIRST(最低位在前)或MSBFIRST(最高位在前) SPI.setClockDivider() :設定分頻值預設設置是 SPI.setClockDivider(SPI_CLOCK_DIV4) 設定值有2,4,8,16,32,64或128 SPI.setDataMode(mode) : mode : SPI_MODE0(上升沿採樣,下降沿置位,SCK閒置時為0), SPI_MODE1(上升沿置位,下降沿採樣,SCK閒置時為0), SPI_MODE2(下降沿採樣,上升沿置位,SCK閒置時為1), SPI_MODE3(下降沿置位,上升沿採樣,SCK閒置時為1)。 SPI.transfer(val) : val:向SPI匯流排發送的資料值 val= SPI.transfer() , val為從SPI匯流排上接收的資料值

SPI程式撰寫要點 串列資料傳輸時,是先傳輸高位(MSB)還是先傳 輸低位(LSB),這是由 SPI.setBitOrder()函數來 控制的。 資料時鐘SCK在空閒時,是高電位還是低電位? 採樣時,是在時鐘脈衝的上升沿還是下降沿?這是 由 SPI.setDataMode() 函數來控制的 SPI是在怎樣速度下運行的,即SCK提供多大的時鐘 脈衝使SPI運行?這是由 SPI.setClockDivider() 函 數來控制的。

74HC595 腳位編號 名稱 說明 1-7, 15 Q0 ~ Q7 輸出腳位 8 GND 接地 9 Q7’ 序列輸出 (Serial Out) 10 MR Master Reset, 清除所有資料, 低電位有效 (Active low) 11 SH_CP SHift register clock pin (Clock Pin) 12 ST_CP STorage register clock pin (Latch Pin) 13 OE Output Enable, 允許輸出,低電位有效 (Active low) 14 DS 序列資料輸入 (Serial data input) 16 Vcc 供應電壓

74HC595電路圖

shiftOut() shiftOut(dataPin, clockPin, bitOrder, value) dataPin:序列資料輸出至74HC5952的DS clockPin:時脈輸出至74HC5952的SH_CP bitOrder :由高位先輸出或是低位先輸出 value:欲輸出資料值

程式碼 //Pin connected to ST_CP of 74HC595 int latchPin = 8; //Pin connected to SH_CP of 74HC595 int clockPin = 12; ////Pin connected to DS of 74HC595 int dataPin = 11; void setup() { //set pins to output because they are addressed in the main loop pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { //count up routine for (int j = 0; j < 256; j++) { //ground latchPin and hold low for as long as you are transmitting digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, j); //return the latch pin high to signal chip that it no longer needs to listen for information digitalWrite(latchPin, HIGH); delay(1000); 程式碼

74HC595+7段顯示器(顯示0~9程式碼) 6 5 4 3 2 1 15 顯示號碼 a 7 b c d e f 9 g 10 8 74HC595pin 6 5 4 3 2 1 15 顯示號碼 a 7 b c d e f 9 g 10 8

//Pin connected to ST_CP of 74HC595 int latchPin = 8; //Pin connected to SH_CP of 74HC595 int clockPin = 12; ////Pin connected to DS of 74HC595 int dataPin = 11; byte seven_disp[10] = { B01111110,B00110000,B01101101,B01111001,B00110011, B01011011,B01011111,B01110000,B01111111,B01110011 }; void setup() { //set pins to output because they are addressed in the main loop pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { for(int k=0;k<10;k++) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST,seven_disp[k]); digitalWrite(latchPin, HIGH); delay(500);

習題一 設計一跑馬燈由右至左一顆燈來回跑 電路同上題 語法參考 http://arduino.cc/en/Reference/Bitshift