新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)與74HC595的SPI顯示程序

AVR單片機(jī)與74HC595的SPI顯示程序

作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
使用SPI接口控制74HC595 LED顯示

SPI接口的全稱(chēng)是"Serial Peripheral Interface",意為串行外圍接口。SPI接口主要應(yīng)用在EEPROM,F(xiàn)LASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。

本文引用地址:http://m.butianyuan.cn/article/201611/323360.htm

SPI接口是在CPU和外圍低速器件之間進(jìn)行同步串行數(shù)據(jù)傳輸,在主器件的移位脈沖下,數(shù)據(jù)按位傳輸,為全雙工通信,數(shù)據(jù)傳輸速度總體來(lái)說(shuō)比I2C總線要快,速度可達(dá)到幾Mbps。

SPI接口是以主從方式工作的,這種模式通常有一個(gè)主器件和一個(gè)或多個(gè)從器件,其接口包括以下四種信號(hào):

(1)MOSI – 主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入
(2)MISO – 主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出
(3)SCLK – 時(shí)鐘信號(hào),由主器件產(chǎn)生
(4)/SS – 從器件使能信號(hào),由主器件控制

在BASCOM中,提供了軟件實(shí)現(xiàn)的SPI接口的語(yǔ)句,同樣BASCOM也有支持硬件SPI的語(yǔ)句。
下面將使用三個(gè)例子來(lái)說(shuō)明如何在BASCOM中使用SPI接口。

在介紹例子之前,我們先了解一下硬件連接圖,連接如圖1所示。

圖中共使用三片74HC595芯片,分別控制三個(gè)數(shù)碼管,三片74HC595通過(guò)Q7’引腳進(jìn)行級(jí)聯(lián)。第一片74HC595的DS引腳連接到了ATmega88的MOSI引腳,而SH_CP引腳連接到了ATmega88的SCK引腳,ST_CP引腳連接到了ATmega88的PB1引腳。

一、使用硬件SPI接口控制74HC595 ------------------------------------------------------------------------使用芯片:  ATmega88,晶振:      內(nèi)部8MHz晶振email:     support@avrbascom.com軟件版本:  Bascom-AVR 1.11.8.3 Full version------------------------------------------------------------------------$regfile = "m88def.dat"                     芯片為ATmega88 $crystal = 8000000                          8M晶振頻率 $hwstack = 32                               設(shè)置堆棧大小 $swstack = 10$framesize = 40Dim I As ByteDim A(3) As ByteLatch Alias Portb.1Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes ,Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 0定義使用單片機(jī)自帶的硬件SPI,SPI中斷未使能,數(shù)據(jù)發(fā)送時(shí),高位先發(fā)送。設(shè)為SPI主設(shè)備,時(shí)鐘4分頻 Spiinit                 SPI初始化Restore Segtab          獲取要顯示數(shù)據(jù)的內(nèi)容 For I = 1 To 3Read A(i)Next ISpiout A(1) , 3         輸出要顯示的內(nèi)容給74HC595,分別輸出A(1),A(2),A(3)Latch = 1?              使能顯示 Waitus 10Latch = 0 DoLoopEnd*******************************************************************************--------------------------專(zhuān)用字形表------------------------------------------Segtab:Data &H77 , &H14 , &HE6 , &HB6 , &H95 , &HB3 , &HF3 , &H16 , &HF7 , &HB70 1 2 3 4 5 6 7 8 9二、使用軟件SPI接口控制74HC595------------------------------------------------------------------------使用芯片: ATmega88,晶振:     內(nèi)部8MHz晶振 email:    support@avrbascom.com軟件版本: Bascom-AVR 1.11.8.3 Full version------------------------------------------------------------------------ $regfile = "m88def.dat"                  芯片為ATmega88 $crystal = 8000000                       8M晶振頻率 $hwstack = 32                            設(shè)置堆棧大小 $swstack = 10$framesize = 40Const On = 1Const Off = 0Dim I As ByteDim A(3) As ByteLatch Alias Portb.1Config Spi = Soft , Dout = Portb.3 , Ss = None , Clock = Portb.5定義使用軟件SPI,pb3作為數(shù)據(jù)輸出口,pb5作為時(shí)鐘引腳 Spiinit                 SPI初始化Restore Segtab          獲取要顯示數(shù)據(jù)的內(nèi)容 For I = 1 To 3Read A(i)Next ISpiout A(1) ,3輸出要顯示的內(nèi)容給74HC595,分別輸出A(1),A(2),A(3)Latch = Off            使能顯示 Waitus 10Latch = OnDoLoopEnd********************************************************************--------------------------專(zhuān)用字形表------------------------------------------Segtab:Data &H77 , &H14 , &HE6 , &HB6 , &H95 , &HB3 , &HF3 , &H16 , &HF7 , &HB70 1 2 3 4 5 6 7 8 9三、使用軟件SPI接口控制74HC595------------------------------------------------------------------------使用芯片: ATmega88,晶振:     內(nèi)部8MHz晶振 email:    support@avrbascom.com軟件版本: Bascom-AVR 1.11.8.3 Full version------------------------------------------------------------------------ $regfile = "m88def.dat"         芯片為ATmega88 $crystal = 8000000              8M晶振頻率 $hwstack = 32                   設(shè)置堆棧大小 $swstack = 10$framesize = 40Const On = 1Const Off = 0Ledata Alias Portb.3            數(shù)據(jù)輸出口 Ledclk Alias Portb.5            時(shí)鐘輸出口 Latch Alias Portb.1Dim I As ByteDim A(3) As ByteRestore Segtab                   獲取要顯示數(shù)據(jù)的內(nèi)容 For I = 1 To 3Read A(i)Next IFor I = 3 To 1 Step -1Shiftout Ledata , Ledclk , A(i) , 1輸出要顯示的內(nèi)容給74HC595Next ILatch = Off                      使能顯示 Waitus 10Latch = OnDoLoopEnd********************************************************************--------------------------專(zhuān)用字形表------------------------------------------Segtab:Data &H77 , &H14 , &HE6 , &HB6 , &H95 , &HB3 , &HF3 , &H16 , &HF7 , &HB70 1 2 3 4 5 6 7 8 9


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: AVR單片機(jī)74HC595SP

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉