日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

STM32-(18):SPI與數(shù)碼管(SPI)

發(fā)布者:advancement4最新更新時(shí)間:2019-08-12 來源: eefocus關(guān)鍵字:STM32  SPI  數(shù)碼管 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

SPI串行接口

SPI是由Motorala公司提出的一種同步串行外圍接口。它在速度要求不高、低功耗、需保存少量參數(shù)的智能化傳感系統(tǒng)中得到了廣泛應(yīng)用。
SPI是一個(gè)全雙工的同步串行接口。在數(shù)據(jù)傳輸過程中,總線上只能是一個(gè)主機(jī)和一個(gè)從機(jī)進(jìn)行通信。

1、MISO(Master In Slave Out)
主機(jī)輸入、從機(jī)輸出信號(hào)。
2、MOSI(Master Out Slave In)
主機(jī)輸出、從機(jī)輸入信號(hào)。
3、SCK(Serial Clock)
串行時(shí)鐘信號(hào)。(用來同步使用的)
4、SS(Slave Select)
從機(jī)選擇信號(hào),低電平有效。

SPI系統(tǒng)連接

SPI總線可在軟件的控制下構(gòu)成各種簡(jiǎn)單或復(fù)雜的系統(tǒng)。
在這里插入圖片描述

SPI通信工作原理

SPI的基本結(jié)構(gòu)相當(dāng)于兩個(gè)8位移位寄存器的首位相接,構(gòu)成16位的環(huán)形移位寄存器。從而實(shí)現(xiàn)了主機(jī)與從機(jī)的數(shù)據(jù)交換。
在這里插入圖片描述

SPI框圖

在這里插入圖片描述
分析:
①首先看SCK 管腳,通過波特率發(fā)生器產(chǎn)生時(shí)鐘信號(hào),這個(gè)信號(hào)可以出去給從機(jī)使用,也可以進(jìn)來給自己驅(qū)動(dòng) COMMUNICATION CONTROL(通信控制),其中波特率發(fā)生器由BR0、BR1、BR2控制,由這三個(gè)值來決定波特率的速度,通信控制受MSTR、SSM、SSI控制
,如果通信控制出錯(cuò),比如控制的CRCERR(CRC校驗(yàn)錯(cuò)誤)、MODF(模式)、OVR(數(shù)據(jù)溢出),就會(huì)在SPI_SR的相應(yīng)位置1。通信控制出來的信號(hào)連接著 MASTER CONTROL LOGIC(主控邏輯電路),中控邏輯電路控制著MOSI、MISO這一塊。
②數(shù)據(jù)從MISO進(jìn)來,進(jìn)入SHIFT REGISTER(移位寄存器),移位寄存器數(shù)據(jù)一旦8位接收完整之后,會(huì)自動(dòng)放到 RX BUFFER 中,我們可以通過 RX BUFFER可以讀取數(shù)據(jù)。 當(dāng)我們要發(fā)送內(nèi)容,就是通過總線(地址總線,數(shù)據(jù)總線)將數(shù)據(jù)寫入 TX BUFFER 中去,然后送到移位寄存器 ,數(shù)據(jù)一旦8位接收完整之后,可以通過MOSI將數(shù)據(jù)發(fā)送出去。

SPI通信的幾個(gè)步驟

1.SPI主從模式

在這里插入圖片描述

設(shè)置MSTR(主設(shè)備選擇)和SPE位(使能位)來選擇是否工作在主模式還是從模式下。(這兩個(gè)位都在SPI_CR1寄存器中都可以設(shè)置),作為從機(jī),片選要接地,可以硬件實(shí)現(xiàn)也可以軟件實(shí)現(xiàn),接電源是作主機(jī)

2.時(shí)鐘信號(hào)的相位和極性

SPI接口可由CPOL和CPHA設(shè)定4種不同傳輸格式的時(shí)序。(CPOL和CPHA在SPI_CR1寄存器中)
CPOL決定時(shí)鐘脈沖SCK的有效脈沖方式(正脈沖、負(fù)脈沖)。CPHA決定數(shù)據(jù)線MOSI什么時(shí)候輸出數(shù)據(jù)或采集數(shù)據(jù)。
根據(jù)CPOL和CPHA的組合數(shù)目,一共有4種設(shè)置情況。

在這里插入圖片描述
分析:
CPOL決定了脈沖的方式,第一行(CPOL=0),是正脈沖,第二行(CPOL=1),是負(fù)脈沖(空閑時(shí)高電平,來數(shù)據(jù)下降沿);當(dāng)CPHA=0,數(shù)據(jù)是先出來的,即比上方的SCK的電平變化(時(shí)鐘輸出)要快,大概快半拍,我們稱之為數(shù)據(jù)傳輸相位超前;當(dāng)CPHA=1,SCK的電平變化之后數(shù)據(jù)才會(huì)出來,相位是同步的,當(dāng)在SCK的第二個(gè)上升沿或者下降沿的時(shí)候才開始數(shù)據(jù)采集

4種時(shí)序下的數(shù)據(jù)傳輸,其中“第一位數(shù)據(jù)的輸出”和“其他位數(shù)據(jù)的輸出”欄是表示數(shù)據(jù)在什么時(shí)候更新輸出。還需注意數(shù)據(jù)采樣是上升沿還是下降沿有效。

數(shù)據(jù)與時(shí)鐘的相位關(guān)系如下圖:
在這里插入圖片描述

3.數(shù)據(jù)幀的格式

根據(jù)SPI_CR1寄存器中的LSBFIRST位,輸出數(shù)據(jù)位時(shí)可以MSB在先也可以LSB在先。
根據(jù)SPI_CR1寄存器的DFF位,每個(gè)數(shù)據(jù)幀可以是8位或是16位。所選擇的數(shù)據(jù)幀格式對(duì)發(fā)送和/或接收都有效。

SPI主模式通信

在主模式時(shí),串行時(shí)鐘在SCK腳產(chǎn)生。
配置步驟:

  1. 通過 SPI_CR1寄存器的 BR[2:0]位定義串行時(shí)鐘波特率

  2. 選擇 CPOL和CPHA 位,定義數(shù)據(jù)傳輸和串行時(shí)鐘間的相位關(guān)系

  3. 設(shè)置 DFF 位來定義8或16位數(shù)據(jù)幀格式

  4. 配置 SPI_CR1寄存器的 LSBFIRST 位定義幀格式

  5. 如果 NSS 引腳需要工作在輸入模式,硬件模式中在整個(gè)數(shù)據(jù)幀傳輸期間應(yīng)把 NSS 腳連接到髙電平:在軟件模式中,需設(shè)置 SPI_CR1寄存器的 SSM 和 SSI 位 。 如 果 NSS 引腳工作在輸出模式.則只需設(shè)置 SSOE 位

  6. 必須設(shè)置 MSTR 和 SPE 位(只當(dāng) NSS 腳被連到高電平.這些位才能保持置位)
    在這個(gè)配置中, MOSI 腳是數(shù)據(jù)輸出,而 MISO 腳是數(shù)據(jù)輸入。

數(shù)據(jù)發(fā)送過程

1、 當(dāng)一字節(jié)寫進(jìn)發(fā)送緩沖器時(shí),發(fā)送過程開始。
2、 在發(fā)送第一個(gè)數(shù)據(jù)位時(shí),數(shù)據(jù)字被并行地(通過內(nèi)部總線–TX BUFFER)傳入移位寄存器,而后串行地移出到 MOSI 腳上; MSB 在先還是 LSB 在先,取決于 SPI_CR1寄存器中的 LSBFIRST 位。數(shù)據(jù)從發(fā)送緩沖器傳輸?shù)揭莆患拇嫫?TXE 標(biāo)志將被置位,如果設(shè)置 SPI_CR1寄存器中的 TXEIE 位,將產(chǎn)生中斷。
3、 在試圖寫發(fā)送緩沖器之前,需確認(rèn) TXE 標(biāo)志應(yīng)該是1

數(shù)據(jù)接收過程

當(dāng)數(shù)據(jù)傳輸完成時(shí):
1、 移位寄存器里的數(shù)據(jù)傳送到接收緩沖器(8位–>RX BUFFER),并且 RXNE 標(biāo)志被置位(硬件接受滿自動(dòng)置位1)。如果 SPI_CR2寄存器中的 RXEIE 位被設(shè)置,則產(chǎn)生中斷。
2、 讀 SPI_ DR 寄存器時(shí), SPI 設(shè)備返回接收到的數(shù)據(jù)字。讀 SPI_DR 寄存器將清除RXNE 位(也是硬件自動(dòng)清零)。

數(shù)碼管顯示 123.4

main.c

/* Includes ------------------------------------------------------------------*/

#include "stm32f10x_lib.h"   //包含了所有的頭文件 它是唯一一個(gè)用戶需要包括在自己應(yīng)用中的文件,起到應(yīng)用和庫之間界面的作用。

#include "../Module_Function/Module.h"

#include


TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

TIM_OCInitTypeDef  TIM_OCInitStructure;

ErrorStatus  HSEStartUpStatus;


void Delay_Ms(u16 time);

void RCC_Configuration(void);

void GPIO_Configuration(void);


/* Private functions ---------------------------------------------------------*/ 

/*******************************************************************************

* Function Name  : main

* Description    : Main program.

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/

int main(void)

{

// u16 i=0,j;

#ifdef DEBUG

  debug();

#endif


  RCC_Configuration();//使能外設(shè)時(shí)鐘

SEG_Init();


//========實(shí)現(xiàn)數(shù)碼管顯示==========

  while (1)

  {

/*for(i=0;i<9999;i++)

{

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

SEG_Display(i,0);

} */   

SEG_Display(1234,3);

  }

}


/*******************************************************************************

* Function Name  : Delay_Ms

* Description    : delay 1 ms.

* Input          : time (ms)

* Output         : None

* Return         : None

*******************************************************************************/

void Delay_Ms(u16 time)  //延時(shí)函數(shù)

u16 i,j;

for(i=0;i  for(j=1000;j>0;j--);

}


/*******************************************************************************

* Function Name  : RCC_Configuration

* Description    : Configures the different system clocks.

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/

void RCC_Configuration(void) 

{

//==========================使用外部RC晶振========================================

  RCC_DeInit(); //初始化為缺省狀態(tài)

  RCC_HSEConfig(RCC_HSE_ON);  //高速時(shí)鐘使能

  while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);  //等待高速時(shí)鐘使能就緒


    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //Enable Prefetch Buffer 

    FLASH_SetLatency(FLASH_Latency_2);   // Flash 2 wait state 

    RCC_HCLKConfig(RCC_SYSCLK_Div1); // HCLK = SYSCLK 

    RCC_PCLK2Config(RCC_HCLK_Div1); // PCLK2 = HCLK 

    RCC_PCLK1Config(RCC_HCLK_Div2);   // PCLK1 = HCLK/2 

    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // PLLCLK = 8MHz * 9 = 72 MHz  

    RCC_PLLCmd(ENABLE);   // Enable PLL 

    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // Wait till PLL is ready 


    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);   // Select PLL as system clock source 

    while(RCC_GetSYSCLKSource() != 0x08); // Wait till PLL is used as system clock source 

}



Seg_Module.c

/****************************************************************************

* 版權(quán): 源享教育(www.yxarm.net)

* 文件: Seg_Module.c

* 版本: 1.0

* 說明: MP3播放器當(dāng)前播放歌曲序號(hào),播放第1首時(shí)4位數(shù)碼管顯示0001,依次排列

* 作者: 劉斌

* 時(shí)間: 2011.6.21

* 說明: 數(shù)碼管段顯由HC595控制,位顯由IO口SEG_A1/SEG_A2/SEG_A3/SEG_A4控制。

* HC595使用SPI通信方式,Cortex M3的SPI使用步驟如下:

* 1、使能APB2外設(shè)SPI1時(shí)鐘:RCC_APB2PeriphClockCmd();

* 2、將外設(shè)SPI寄存器重設(shè)為缺省值:SPI_I2S_DeInit();

* 3、初始化外設(shè)SPI寄存器:SPI_Init();

* 4、使能APB2外設(shè)SPI:SPI_Cmd();

* 5、調(diào)用SPI數(shù)據(jù)發(fā)送函數(shù):SPI_I2S_SendData();

------------------------------修改記錄--------------------------------------

* 修改功能:

* 修改時(shí)間:

* 修改作者:

* 遺留問題:

****************************************************************************/

#include "stm32f10x_lib.h"   //包含了所有的頭文件 它是唯一一個(gè)用戶需要包括在自己應(yīng)用中的文件,起到應(yīng)用和庫之間界面的作用。


#define HC595_nCS GPIO_Pin_0 //HC595_nCS = PA0

#define HC595_RCK GPIO_Pin_1 //HC595_RCK = PA1


#define SEG_A1 GPIO_Pin_8 //SEG_A1 = PC8

#define SEG_A2 GPIO_Pin_15 //SEG_A2 = PB15

#define SEG_A3 GPIO_Pin_9 //SEG_A3 = PC9

#define SEG_A4 GPIO_Pin_8 //SEG_A4 = PE8


u8 const NumberTube_TAB[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//數(shù)碼管0~9

/*******************************************************************************

* Function Name  : SEG_Init

* Description    : SEG數(shù)碼管引腳,SPI1引腳初始化

* Input          : None

* Return         : None

*******************************************************************************/

void SEG_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure; // 聲明一個(gè)IO口結(jié)構(gòu)體變量

SPI_InitTypeDef SPI1_InitStructure; //聲明一個(gè)SPI結(jié)構(gòu)體變量


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); // 使能APB2外設(shè)GPIOA時(shí)鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); // 使能APB2外設(shè)GPIOB時(shí)鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE); // 使能APB2外設(shè)GPIOC時(shí)鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE , ENABLE); // 使能APB2外設(shè)GPIOE時(shí)鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 , ENABLE); // 使能APB2外設(shè)SPI1時(shí)鐘

    //==========PA口IO結(jié)構(gòu)體初始化============

  GPIO_InitStructure.GPIO_Pin = HC595_nCS|HC595_RCK; //選擇PA.0,PA.1

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管腳頻率為50MHZ

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //模式為推挽輸出

  GPIO_Init(GPIOA, &GPIO_InitStructure);    //初始化GPIOA寄存器

//==========PB口IO結(jié)構(gòu)體初始化============

  GPIO_InitStructure.GPIO_Pin = SEG_A2; //選擇PB.15

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管腳頻率為50MHZ

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //模式為推挽輸出

  GPIO_Init(GPIOB, &GPIO_InitStructure);    //初始化GPIOB寄存器

//==========PC口IO結(jié)構(gòu)體初始化============

  GPIO_InitStructure.GPIO_Pin = SEG_A1|SEG_A3; //選擇PC.8,PC.9

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管腳頻率為50MHZ

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //模式為推挽輸出

  GPIO_Init(GPIOC, &GPIO_InitStructure);    //初始化GPIOC寄存器

//==========PE口IO結(jié)構(gòu)體初始化============

  GPIO_InitStructure.GPIO_Pin = SEG_A4; //選擇PE.8

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管腳頻率為50MHZ

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //模式為推挽輸出

  GPIO_Init(GPIOE, &GPIO_InitStructure);    //初始化GPIOE寄存器


//==========SPI1復(fù)用功能初始化============

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //選擇PA.4,PA.5, PA.6,PA.7

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管腳頻率為50MHZ

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //模式為復(fù)用推挽輸出 (SPI1)

  GPIO_Init(GPIOA, &GPIO_InitStructure);    //初始化GPIOA寄存器


//==========設(shè)置SPI1工作模式==============

SPI1_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //SPI設(shè)置為雙線雙向全雙工

SPI1_InitStructure.SPI_Mode = SPI_Mode_Master; //設(shè)置為主SPI

SPI1_InitStructure.SPI_DataSize = SPI_DataSize_8b; //SPI發(fā)送接收8位幀結(jié)構(gòu)

SPI1_InitStructure.SPI_CPOL = SPI_CPOL_High; //CPOL = 1

SPI1_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //CPHA = 0

SPI1_InitStructure.SPI_NSS = SPI_NSS_Hard; //NSS由外部管腳管理

SPI1_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;//分頻值為64

SPI1_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //數(shù)據(jù)傳輸LSB(低位)開始

SPI1_InitStructure.SPI_CRCPolynomial = 7;

SPI_I2S_DeInit(SPI1); //將外設(shè)SPI1寄存器重設(shè)為缺省值 ;

SPI_Init(SPI1, &SPI1_InitStructure);//初始化外設(shè)SPI1寄存器

//==========使能SPI1========================

SPI_Cmd(SPI1, ENABLE);//使能SPI1外設(shè)

GPIO_ResetBits(GPIOA, HC595_nCS);

}

/*******************************************************************************

[1] [2]
關(guān)鍵字:STM32  SPI  數(shù)碼管 引用地址:STM32-(18):SPI與數(shù)碼管(SPI)

上一篇:STM32-(17):SPI與數(shù)碼管,
下一篇:STM32-(19):I2C通信(理論基礎(chǔ))

推薦閱讀最新更新時(shí)間:2025-08-02 05:23

STM32單片機(jī)SPI極性和相位的設(shè)置方法
SPI分主設(shè)備和從設(shè)備,兩者通過SPI協(xié)議通訊。而設(shè)置SPI的模式,是從設(shè)備的模式,決定了主設(shè)備的模式。所以要先去搞懂從設(shè)備的SPI是何種模式,然后再將主設(shè)備的SPI的模式,設(shè)置和從設(shè)備相同的模式,即可正常通訊。對(duì)于從設(shè)備的SPI是什么模式,有兩種:(1)固定的,有SPI從設(shè)備硬件決定的SPI從設(shè)備,具體是什么模式,相關(guān)的datasheet中會(huì)有描述,需要自己去datasheet中找到相關(guān)的描述,即:關(guān)于SPI從設(shè)備,在空閑的時(shí)候,是高電平還是低電平,即決定了CPOL是0還是1;然后再找到關(guān)于設(shè)備是在上升沿還是下降沿去采樣數(shù)據(jù),這樣就是,在定了CPOL的值的前提下,對(duì)應(yīng)著可以推算出CPHA是0還是1了。舉例1:CC2500-Low
[單片機(jī)]
<font color='red'>STM32</font>單片機(jī)<font color='red'>SPI</font>極性和相位的設(shè)置方法
stm32 spi從模式配置解答
目標(biāo):stm32(戰(zhàn)艦) 和 stm32(迷你)的spi對(duì)傳(戰(zhàn)艦做從,迷你做主) 結(jié)果:對(duì)傳成功 代碼不寫,你網(wǎng)上搜索到的可以用; 但提示:我用的是(主從片選都是軟件配置); 關(guān)鍵點(diǎn)介紹:重要的是極性和相位的配置(stm32的spi對(duì)傳有問題); 我stm32迷你用的極性和相位選的都為0(即Low和邊沿1觸發(fā));stm32戰(zhàn)艦極性和相位選的為1(即High和邊沿2觸發(fā)) 過程介紹:開始我配置著相同的極性和相位,發(fā)現(xiàn)Master發(fā)送4bytes數(shù)據(jù),A1,A2,A3,A4,slave接收到的數(shù)據(jù)是D0,D1,51,D2; 經(jīng)如下計(jì)算: A1 A2 A3 A4 1010 0001 1010 0010
[單片機(jī)]
STM32SPI讀寫FLASH(W25Q64)
/* 名稱:STM32之SPI讀寫FLASH(W25Q64) 說明: 1.對(duì)于SPI讀寫FLASH和I2C讀寫EEPROM很相似,都是通過一定的通信協(xié)議來操縱外部存儲(chǔ)設(shè)備。我們需要按照對(duì)應(yīng)的通信協(xié)議發(fā)送存儲(chǔ)設(shè)備所支持的指令(如讀指令、寫指令等),然后等待存儲(chǔ)設(shè)備根據(jù)主機(jī)所接收到的指令進(jìn)行相應(yīng)的動(dòng)作。 2.再來說說不同點(diǎn)吧:對(duì)于通信協(xié)議來說,I2C相對(duì)來說要簡(jiǎn)單些,通信速度也稍微較慢些。而SPI串行通信協(xié)議則要相對(duì)復(fù)雜的多,當(dāng)然其通信速度也要高不少。對(duì)于存儲(chǔ)設(shè)備來說,EEPROM屬于小容量的存儲(chǔ)設(shè)備,支持字節(jié)擦除、頁寫入,現(xiàn)在一般用于存儲(chǔ)小容量的數(shù)據(jù);而FLASH屬于大容量的存儲(chǔ)設(shè)備,不支持字節(jié)擦除,只支持扇區(qū)擦除、塊擦除
[單片機(jī)]
STM32F103學(xué)習(xí)筆記(5)——數(shù)碼管驅(qū)動(dòng)TM1650使用
一、簡(jiǎn)介 TM1650 是一種帶鍵盤掃描接口的 LED(發(fā)光二極管顯示器)驅(qū)動(dòng)控制專用電路。內(nèi)部集成有 MCU 輸入輸出控制數(shù)字接口、數(shù)據(jù)鎖存器、LED 驅(qū)動(dòng)、鍵盤掃描、輝度調(diào)節(jié)等電路。TM1650 性能穩(wěn)定、質(zhì)量可靠、抗干擾能力強(qiáng),可適用于 24 小時(shí)長(zhǎng)期連續(xù)工作的應(yīng)用場(chǎng)合。 兩種顯示模式:8段×4位和7段×4位 段驅(qū)動(dòng)電流大于25mA,位驅(qū)動(dòng)電流大于150mA 提供8級(jí)亮度控制 鍵盤掃描:7×4bit內(nèi)部集成三極管驅(qū)動(dòng) 高速兩線式串行接口 內(nèi)置時(shí)鐘振蕩電路 內(nèi)置上電復(fù)位電路 支持2.8V-5.5V電源電壓 提供DIP16及SOP16封裝 二、硬件連接 功能口 引腳 SCL PB.6 SDA
[單片機(jī)]
數(shù)碼管應(yīng)用digital_pile
#include reg52.h #include digital_pile.h void main(){ //P0 = 0x00; //P2 = 0xff; static_pile(6);//靜態(tài)顯示函數(shù),主函數(shù)調(diào)用子函數(shù) //digital_pile();// 動(dòng)態(tài)顯示函數(shù) } /* 數(shù)碼管的顯示輸出 電路:一代版黃盒子,開發(fā)板中內(nèi)置P0口接共陰數(shù)碼管的段選端 ,P1口的0123分別接數(shù)碼管的位選端 */ #include reg52.h #include sys.h #include digital_pil
[單片機(jī)]
一種基于51單片機(jī)利用74HC595驅(qū)動(dòng)數(shù)碼管的技術(shù)
基于51單片機(jī)利用八個(gè)數(shù)碼管花樣顯示如下: xxx11xxx→xx2222xx→x333333x→44444444→x555555x→xx6666xx→x777777x→88888888 每個(gè)狀態(tài)各一秒,顯示反復(fù)循環(huán),其中x表示對(duì)應(yīng)的數(shù)碼管熄滅 問題補(bǔ)充:是共陽極的數(shù)碼管,利用595芯片驅(qū)動(dòng)的。采用C語言。 =================================================== 最佳答案:程序設(shè)計(jì)完畢,采用PROTEUS仿真截圖如下。 程序如下: //============================================= #include #define uint uns
[單片機(jī)]
一種基于51單片機(jī)利用74HC595驅(qū)動(dòng)<font color='red'>數(shù)碼管</font>的技術(shù)
89C51單片機(jī)按鍵控制數(shù)碼管動(dòng)態(tài)顯示0~9
1.preteus仿真圖 2.keli代碼 #include reg51.h sbit key1=P3^0; int CC_num ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int CC_I=0; void delay_ms(int ms) { int i,j; for(i=0;i ms;i++) for(j=0;j 110;j++); } void key1_exam() { if(key1 == 0) { //按鈕延時(shí)去抖動(dòng) delay_ms(20); if(key1 =
[單片機(jī)]
89C51單片機(jī)按鍵控制<font color='red'>數(shù)碼管</font>動(dòng)態(tài)顯示0~9
51單片機(jī)-數(shù)碼管靜態(tài)顯示
數(shù)碼管,英文名稱Segment Displays,是把多個(gè)發(fā)光二極管封裝在一起,組成8字,或者米字形的器件。 如上圖所示,分別為8字和米字形的數(shù)碼管,還有一些異形的,暫時(shí)不考慮。 今天主要說8字形的數(shù)碼管,這種數(shù)碼管主要分兩類:7段的和8段的;驅(qū)動(dòng)方式分兩種:共陰極 和 共陽極。根據(jù)連在一起的字符數(shù)量,還會(huì)分為1位的,2位的,3位的,4位的等等。 先說七段和八段的分別,這個(gè)很簡(jiǎn)單,從外表就能看出來。把8字分成一段一段的LED,剛好有7段,如果再加上右下角那個(gè)小點(diǎn),就是8段。也就是說,一個(gè)完整的1位數(shù)碼管由七個(gè)或者八個(gè)LED組成,想要顯示1、2、3等等的字符,點(diǎn)亮相應(yīng)的數(shù)碼管組成該字符就行。那么如何點(diǎn)亮
[單片機(jī)]
51單片機(jī)-<font color='red'>數(shù)碼管</font>靜態(tài)顯示
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章
隨便看看

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京B2-20211791 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved