国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【洋桃一號板】STM32F103CBT6標準庫函數驅動TM1640點亮數碼管

這篇具有很好參考價值的文章主要介紹了【洋桃一號板】STM32F103CBT6標準庫函數驅動TM1640點亮數碼管。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、今天介紹如何使用STM32F103CBT6驅動TM1640點亮數碼管,硬件用的洋桃開發(fā)板,點亮后效果如下,六個數碼管依次顯示0.1.2.3.4.5.6.7
tm1640,【STM32】STM32F1標準庫開發(fā),stm32,單片機,嵌入式硬件
硬件原理圖如下,只用到了單片機的兩個IO口即可實現上圖的效果,該開發(fā)板上用的是PA11和PA12兩個IO口,用來模擬IIC通信,其中PA11接SCLK,PA12接DIN。另外可以看到TM1640的VDD接的是5V,規(guī)格書里面也是說需要接5V電壓,但實際我試過了,接3.3V也是可以驅動的。tm1640,【STM32】STM32F1標準庫開發(fā),stm32,單片機,嵌入式硬件

二、TM1640介紹
TM1640通信方式其實就是常用的的IIC通信,這點可以在規(guī)格書里面看到相關介紹
tm1640,【STM32】STM32F1標準庫開發(fā),stm32,單片機,嵌入式硬件
tm1640,【STM32】STM32F1標準庫開發(fā),stm32,單片機,嵌入式硬件

tm1640,【STM32】STM32F1標準庫開發(fā),stm32,單片機,嵌入式硬件

三、寫程序
1、先將重要的一些參數進行宏定義
a.固定地址模式上面分析過了,是0x44,后面進行配置會用到
b.設置亮度,上面也分析過了
c.通過上面的數據通信的過程我們知道需要用到SCLK和DIN兩個信號,我們在硬件上接的是PA11和PA12兩個腳,所以用TM1640_DIN_H、TM1640_DIN_H、TM1640_SCLK_LTM1640_SCLK_H來表示DIN和SCLK為高低電平。

#include "TM1640.h"
#include "delay.h"
#define DEL  1   //宏定義 通信速率(默認為1,如不能通信可加大數值)
//地址模式的設置
//#define TM1640MEDO_ADD  0x40   //宏定義	自動加一模式
#define TM1640MEDO_ADD  0x44   //宏定義 固定地址模式(推薦)

//顯示亮度的設置
//#define TM1640MEDO_DISPLAY  0x88   //宏定義 亮度  最小
//#define TM1640MEDO_DISPLAY  0x89   //宏定義 亮度
//#define TM1640MEDO_DISPLAY  0x8a   //宏定義 亮度
//#define TM1640MEDO_DISPLAY  0x8b   //宏定義 亮度
#define TM1640MEDO_DISPLAY  0x8c   //宏定義 亮度(推薦)
//#define TM1640MEDO_DISPLAY  0x8d   //宏定義 亮度
//#define TM1640MEDO_DISPLAY  0x8f   //宏定義 亮度 最大
#define TM1640MEDO_DISPLAY_OFF  0x80   //宏定義 亮度 關

#define TM1640_DIN_H    GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(1))
#define TM1640_DIN_L    GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(0))

#define TM1640_SCLK_H 	GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(1))
#define TM1640_SCLK_L 	GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(0))

2、通信的開啟和結束代碼
tm1640,【STM32】STM32F1標準庫開發(fā),stm32,單片機,嵌入式硬件

void TM1640_start()
{ 
	//通信時序 啟始
	TM1640_DIN_H; //DIN輸出高電平1	
	TM1640_SCLK_H; //SCLK輸出高電平1	
	delay_us(DEL);//延時一段時間
	TM1640_DIN_L; //DIN輸出低電平0	
	delay_us(DEL);//延時一段時間
	TM1640_SCLK_L; //SCLK輸出低電平0	
	delay_us(DEL);//延時一端時間
}
void TM1640_stop()
{ //通信時序 結束
	TM1640_DIN_L; //DIN輸出低電平0	
	TM1640_SCLK_L; //SCLK輸出低電平0	
	delay_us(DEL);//延時一段時間
	TM1640_SCLK_H; //SCLK輸出高電平1	
	delay_us(DEL);
	TM1640_DIN_H; //DIN輸出高電平1	
	delay_us(DEL);
}

3、底層函數,信號傳輸,寫8位數據

void TM1640_write(u8 date)
	{	//寫數據(低層)
		u8 i;
		u8 aa;
		aa=date;
		TM1640_DIN_L; //DIN輸出0	
		TM1640_SCLK_L; //SCLK輸出0	
		for(i=0;i<8;i++)
		{
			TM1640_SCLK_L; //SCLK輸出0		
			delay_us(DEL);

			if(aa&0x01)
			{
				TM1640_DIN_H; //DIN輸出1
				delay_us(DEL);
			}
			else
			{
				TM1640_DIN_L; //DIN輸出0
				delay_us(DEL);
			}
				TM1640_SCLK_H; //SCLK輸出1
				delay_us(DEL);
				aa=aa>>1;//右移一位
		 }
			TM1640_DIN_L; //DIN輸出0
			TM1640_SCLK_L; //SCLK輸出0
	}

安裝上面的代碼傳輸二進制10110001的時序圖如下,左邊為高位,右邊為低位。所以實際是從低位開始傳輸數據。
tm1640,【STM32】STM32F1標準庫開發(fā),stm32,單片機,嵌入式硬件
4、TM1640驅動函數
a、GPIO初始化、配置固定地址,設置亮度

void TM1640_Init(void)
	{ //TM1640接口初始化
		GPIO_InitTypeDef  GPIO_InitStructure; 	
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);       
		GPIO_InitStructure.GPIO_Pin = TM1640_DIN | TM1640_SCLK; //選擇端口號(0~15或all)                        
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //選擇IO接口工作方式       
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //設置IO接口速度(2/10/50MHz)    
		GPIO_Init(TM1640_GPIOPORT, &GPIO_InitStructure);

		GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(1)); //接口輸出高電平1	
		GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(1)); //接口輸出高電平1	
		
		TM1640_start();
		TM1640_write(TM1640MEDO_ADD); //設置數據,0x40,0x44分別對應地址自動加一和固定地址模式
		TM1640_stop();
		TM1640_start();
		TM1640_write(TM1640MEDO_DISPLAY); //設置亮度
			//控制顯示,開顯示,0x88,  0x89,  0x8a,  0x8b,  0x8c,  0x8d,  0x8e,  0x8f分別對應脈沖寬度為:
			//------------------1/16,  2/16,  4/16,  10/16, 11/16, 12/16, 13/16, 14/16	 //0x80關顯示
		TM1640_stop();					
}

b、TM1638顯示函數
tm1640,【STM32】STM32F1標準庫開發(fā),stm32,單片機,嵌入式硬件

void TM1640_display(u8 address,u8 date)
	{ //固定地址模式的顯示輸出
 	const u8 buff[21]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x00};//數字0~9及0~9加點顯示段碼表
    //---------------   0    1    2    3    4    5    6    7    8    9    0.   1.   2.   3.   4.   5.   6.   7.   8.   9.   無   
   TM1640_start();
   TM1640_write(0xC0+address);//傳顯示數據對應的地址
   TM1640_write(buff[date]);//傳1BYTE顯示數據
   TM1640_stop();
}

5、主函數
有了上面的鋪墊,主函數就很簡單了,只需要初始化TM1640,然后調用顯示函數即可文章來源地址http://www.zghlxwxcb.cn/news/detail-589314.html

int main ()
{
	TM1640_Init(); //TM1640初始化
	while(1)
		{
			TM1640_display(0,0);	
			TM1640_display(1,1);
			TM1640_display(2,2); 
			TM1640_display(3,3);
			TM1640_display(4,4);	
			TM1640_display(5,5);
			TM1640_display(6,6);
			TM1640_display(7,7);
		}
}

到了這里,關于【洋桃一號板】STM32F103CBT6標準庫函數驅動TM1640點亮數碼管的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • STM32F103 KEIL 標準庫直接添加DSP庫

    STM32F103 KEIL 標準庫直接添加DSP庫

    近期由于比賽需要,想要在STM32上移植DSP庫進行FFT變換,找了很多資料都是利用CUBEMX進行導入的方法,本人使用的是標準庫,對HAL庫并不熟悉,所以考慮到移植的方便采用直接在項目文件中移植DSP庫的方法,可以使用標準庫編程,親測有效 blog.csdnimg.cn/291099e0402f46439160e2cf9b92f

    2024年02月16日
    瀏覽(22)
  • STM32F103標準外設庫—— 新建工程與庫函數(四)

    STM32F103標準外設庫—— 新建工程與庫函數(四)

    ?個人名片: ??作者簡介:一名喜歡分享和記錄學習的在校大學生 ??個人主頁:妄北y ??個人QQ:2061314755 ??個人郵箱:2061314755@qq.com ??個人WeChat:Vir2021GKBS ?? 本文由妄北y原創(chuàng),首發(fā)CSDN ?????? ??座右銘:大多數人想要改造這個世界,但卻罕有人想改造自己。 專欄導

    2024年01月19日
    瀏覽(24)
  • STM32F103標準庫函數驅動max30102心率血氧模塊

    STM32F103標準庫函數驅動max30102心率血氧模塊

    實際接線圖, 1.VIN?3v-5v都可以 2.SDA SCL 是兩根依據IIC傳輸的線(具體看你想用哪兩個IO口) 代碼里面iicStart.c有解釋 3.GND接地 4.其余的端口,我沒接,最后是可以接受到數據的。 (想更詳細了解模塊的朋友,可以看該模塊手冊)手冊放下面了 ----------------------------------------------

    2023年04月15日
    瀏覽(29)
  • 【單片機】STM32單片機的各個定時器的定時中斷程序,標準庫,STM32F103

    【單片機】STM32單片機的各個定時器的定時中斷程序,標準庫,STM32F103

    高級定時器和普通定時器的區(qū)別(https://zhuanlan.zhihu.com/p/557896041): TIM1是高級定時器,使用的時鐘總線是RCC_APB2Periph_TIM1,和普通定時器不一樣。 timer.c timer.h 調用 timer.c timer.h 調用 timer.c timer.h 調用 timer.c timer.h 調用 timer.c timer.h 調用

    2024年02月07日
    瀏覽(26)
  • STM32F103ZET6【標準庫函數開發(fā)】------04五個串口的詳細配置

    STM32F103ZET6【標準庫函數開發(fā)】------04五個串口的詳細配置

    正點原子戰(zhàn)艦開發(fā)板 STM32F103ZET6有5個串口,查看引腳圖可以找到對應的IO口分別如下 串口 USART1 USART2 USART3 UART4 UART5 輸入/輸出方式 USARTx_TX PA9 PA2 PB10 PC10 PC12 復用推挽輸出 USARTx_RX PA10 PA3 PB11 PC11 PD2 浮空輸入 USART1掛在APB2下 USART2,USART3,USART4,USART5掛在APB1下 串口調試助手設置波特率

    2024年02月03日
    瀏覽(24)
  • STM32F103基于標準庫+I2C SSD1306仿數碼管RTC時鐘顯示

    STM32F103基于標準庫+I2C SSD1306仿數碼管RTC時鐘顯示

    ?申明:本文章僅發(fā)表在CSDN網站,任何其他網站,未注明來源,見此內容均為盜鏈和爬取。 ??對于文中所提供的相關資源鏈接將作不定期更換。 ??顯示效果: ??工程基于正點原子標準庫3.5版本RTC例程作為模板。 ??使用IIC SSD1306 OLED 雙色屏幕軟件IIC驅動顯示。 ?時鐘說明

    2023年04月22日
    瀏覽(19)
  • 【STM32】使用RTE ,從 0 開始創(chuàng)建一個 (keil) ARM MDK工程(純keil,標準庫,以STM32F103C8T6為例)

    【STM32】使用RTE ,從 0 開始創(chuàng)建一個 (keil) ARM MDK工程(純keil,標準庫,以STM32F103C8T6為例)

    學習相關的基礎知識請閱讀本專欄其他文章,一定有你想要的。 https://blog.csdn.net/weixin_43764974/category_11021363.html 本文軟硬件: STM32F103C8T6 ARM MDK 5.38 ARM complier 6 ST-Link v2 StdPeriph Drivers(標準庫) 文章開始前,我想再次說一下: keil 、 μvision 、 ARM MDK 這幾個名詞(盡管前面的額文

    2024年02月16日
    瀏覽(499)
  • 大彩串口屏與STM32G070CBT6通訊調試

    大彩串口屏與STM32G070CBT6通訊調試

    本文主要講解如何將大彩提供的DEMO移植到自己項目的工程文件中。首先通過STM32CubeMX生成基于STM32G070CBT6的Hall庫程序;然后將大彩的程序移植到生成的Hall庫程序中。 對串口屏基本功能不作過多介紹。主要講解一下指令格式和硬件連接。 對串口屏基本功能不作過多介紹。主要

    2024年02月16日
    瀏覽(32)
  • stm32f103VET6和stm32f103c8t6有什么區(qū)別?

    stm32f103VET6和stm32f103c8t6有什么區(qū)別?

    我來終結下這個問題。 這兩款單片機我都用過,其中無際單片機特訓營其中一款wifi報警主機項目就是用了stm32f103c8t6。 ?stm32f103VET6和stm32f103c8t6都是STMicroelectronics公司推出基于ARM Cortex-M3內核的單片機。 它們在硬件規(guī)格和性能上存在一些差異,下面我詳細講解下它們的差異之處

    2024年02月15日
    瀏覽(101)
  • STM32F103RC

    ·多參考手冊 ·協(xié)議USART、I2C、SPI 嵌入式系統(tǒng)跟ARM處理器 嵌入式系統(tǒng): 專用計算機系統(tǒng),以應用為中心,軟硬件可裁減 組成: 硬件:(MPU)微處理器、存儲器、I/O接口、輸入輸出設備。 軟件:Embedded RTOS、應用軟件。 最小系統(tǒng):微控制器(MCU)、微處理器(MPU)、電源模塊、

    2024年02月12日
    瀏覽(91)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包