![基于STM32單片機(jī)的點(diǎn)陣顯示設(shè)計(jì)(共21頁)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/1be16164-4c02-45bf-b5fb-0021a572d461/1be16164-4c02-45bf-b5fb-0021a572d4611.gif)
![基于STM32單片機(jī)的點(diǎn)陣顯示設(shè)計(jì)(共21頁)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/1be16164-4c02-45bf-b5fb-0021a572d461/1be16164-4c02-45bf-b5fb-0021a572d4612.gif)
![基于STM32單片機(jī)的點(diǎn)陣顯示設(shè)計(jì)(共21頁)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/1be16164-4c02-45bf-b5fb-0021a572d461/1be16164-4c02-45bf-b5fb-0021a572d4613.gif)
![基于STM32單片機(jī)的點(diǎn)陣顯示設(shè)計(jì)(共21頁)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/1be16164-4c02-45bf-b5fb-0021a572d461/1be16164-4c02-45bf-b5fb-0021a572d4614.gif)
![基于STM32單片機(jī)的點(diǎn)陣顯示設(shè)計(jì)(共21頁)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/1be16164-4c02-45bf-b5fb-0021a572d461/1be16164-4c02-45bf-b5fb-0021a572d4615.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上基于STM32單片機(jī)的點(diǎn)陣顯示設(shè)計(jì)一、系統(tǒng)的硬件設(shè)計(jì)1.1系統(tǒng)的硬件設(shè)計(jì)方案STM32F103x6是基于ARM核心的增強(qiáng)型32位帶閃存、USB、ADC和CAN的微控制器。在電機(jī)驅(qū)動和應(yīng)用控制、醫(yī)療和手持設(shè)備、智能儀表、警報(bào)系統(tǒng)和視頻對講中有廣泛的應(yīng)用。通過使用STM32F103x6進(jìn)行LED點(diǎn)陣顯示的設(shè)計(jì),學(xué)習(xí)STM32單片機(jī)的使用方法。1.2 STM32單片機(jī)簡介根據(jù)本課題需要采用用了STM32F103x6型號單片機(jī)STM32F103XX增強(qiáng)型系列擁有ARM的Cortex-M3核心,它為實(shí)現(xiàn)MCU的需要提供了低成本、縮減的管腳數(shù)目、降低的系統(tǒng)內(nèi)耗,同時提供了卓越的計(jì)
2、算性能和先進(jìn)的中斷系統(tǒng)響應(yīng)。它的原理圖如圖1-2所示。圖1-2 STM32單片機(jī)原理圖1.2.1 STM32F103x6單片機(jī)的功能核心 -ARM 32位的Cortex-M3CPU -單周期硬件乘法和除法,加快計(jì)算存儲器 -從32K字節(jié)到128K字節(jié)閃存程序存儲器 -多重自舉功能時鐘、復(fù)位和供電管理 -2.0至3.6伏供電和I/O管腳 -上電/斷電復(fù)位、可編程電壓檢測器、掉電檢測器 -內(nèi)嵌4至16MHZ高速晶體振蕩器 -內(nèi)嵌PLL供應(yīng)CPU時鐘 -內(nèi)嵌使用32KHZ晶體的RTC振蕩器低功耗 -3種省電模式:睡眠、停機(jī)和待機(jī)模式 -VBAT為RTC和后備寄存器供電2個12位模數(shù)轉(zhuǎn)換器,1us轉(zhuǎn)換
3、時間 -雙采樣和保持功能 -溫度傳感器調(diào)試模式 -串行調(diào)試和JTAG接口DMA -支持的外設(shè):定時器、ADC、SPI、I2C和USART多達(dá)80個快速I/O口 -26/36/51/80個多功能雙向5V兼容的I/O接口多達(dá)7個定時器 -多達(dá)3個同步的16位定時器,每個定時器有多達(dá)4個用于輸入捕獲/輸出比較/PWM或脈沖計(jì)數(shù)的通道 -兩個看門狗定時器 -系統(tǒng)時間定位器:24位的帶自動加載功能的多達(dá)9個通信接口 -多達(dá)2個I2C接口 -多達(dá)3個USART接口 -多達(dá)2個SPI同步串行接口 -CAN接口 -USB2.0接口1.2.2 STM32單片機(jī)的主要特色STM32系列32位閃存微控制器使用來自于
4、ARM公司具有突破性的Cortex-M3內(nèi)核,該內(nèi)核是專門設(shè)計(jì)于滿足集高性能、低功耗、實(shí)時應(yīng)用、具有競爭性價格于一體的嵌入式領(lǐng)域的要求。Cortex-M3在系統(tǒng)結(jié)構(gòu)上的增強(qiáng),讓STM32受益無窮;Thumb-2®指令集帶來了更高的指令效率和更強(qiáng)的性能;通過緊耦合的嵌套矢量中斷控制器,對中斷事件的響應(yīng)比以往更迅速;所有這些又都融入了業(yè)界領(lǐng)先的功耗水準(zhǔn)。STM32系列給MCU用戶帶來了前所未有的自由空間,提供了全新的32位產(chǎn)品選項(xiàng),結(jié)合了高性能、實(shí)時、低功耗、低電壓等特性,同時保持了高集成度和易于開發(fā)的優(yōu)勢。它擁有出眾和創(chuàng)新的外設(shè),易于開發(fā),可使產(chǎn)品快速進(jìn)入市場。1.3 STM32單片機(jī)
5、開發(fā)板簡介本課題采用了普中科技的STM32開發(fā)板,配備有STM32F103x6芯片。開發(fā)板的引腳圖如圖1-3所示。圖1-3 普中科技的STM32開發(fā)板實(shí)物圖1.3.1 STM32開發(fā)板的外圍硬件資源 -8*8雙色點(diǎn)陣模塊 -五線四相步進(jìn)電機(jī) -四線雙極性步進(jìn)電機(jī) -動態(tài)數(shù)碼管/靜態(tài)數(shù)碼管 -74HC595 -74HC165 -USB自動下載 -MCU -矩陣鍵盤、獨(dú)立按鍵 -AD/DA/光敏/溫敏 -ISP、PS2等等。其電路圖如圖1-3-1。圖1-3-1 普中科技的STM32開發(fā)板內(nèi)部電路圖1.3.2 STM32開發(fā)板的軟件資源STM32開發(fā)板提供了豐富的標(biāo)準(zhǔn)例程,其例程列表如下:編號實(shí)驗(yàn)名
6、稱編號實(shí)驗(yàn)名稱編號實(shí)驗(yàn)名稱1LED燈1074HC59519定時器TIM22RCC系統(tǒng)時鐘1174HC16520串口通信3獨(dú)立按鍵12EXIT中斷21DS18B20溫度檢測4晶體數(shù)碼管顯示13FLASH保存數(shù)據(jù)22RTC時鐘5動態(tài)數(shù)碼管14STM32-24C0223ADC1-DMA6SysTick定時器15STM32-ADDA-PCF859124彩屏例程7步進(jìn)電機(jī)16STM-160225CAN-BUS8矩陣鍵盤17硬件I2C讀取24C0226VirtualCOMPort(USB轉(zhuǎn)串口)9LED點(diǎn)陣18硬件SPI-5951.4 硬件電路本科創(chuàng)課題涉及的硬件電路如圖1-4所示。圖1-4 STM32
7、LED點(diǎn)陣實(shí)驗(yàn)在開發(fā)板上的接線圖二、系統(tǒng)的軟件設(shè)計(jì)對于一個完整的嵌入式應(yīng)用系統(tǒng)的開發(fā),硬件的設(shè)計(jì)與調(diào)試工作僅占整個工作量的一半,應(yīng)用系統(tǒng)的程序設(shè)計(jì)也是嵌入式系統(tǒng)設(shè)計(jì)一個非常重要的方面。本次軟件編寫在Keil軟件平臺進(jìn)行的。如圖2-1所示。圖2-1 Keil軟件平臺截圖2.1對STM32端口進(jìn)行配置對端口的配置程序如下:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disabl
8、e, ENABLE); /關(guān)閉調(diào)試 端口重新映射 使用仿真器調(diào)試時,不能用此語 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 ; /所有GPIO為同一類型端口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /輸出的最大
9、頻率為50HZ GPIO_Init(GPIOB, &GPIO_InitStructure); /初始化GPIOB端口 GPIO_Init(GPIOA, &GPIO_InitStructure); /初始化GPIOB端口2.2 控制LED點(diǎn)陣顯示的主程序設(shè)計(jì)控制LED點(diǎn)陣顯示的程序如下: while (1) m+ ; if(m> 4) m=1;switch (m) case 1: for(j=0;j<3;j+)/從左到右3次 for(i=0;i<8;i+) /P2=tabai; GPIOB->BSRR = tabai & 0x00ff; /將數(shù)據(jù)送
10、到P2口 并屏蔽高位,不干擾高8位IO的使用 GPIOB->BRR = (tabai) & 0x00ff; / P1=0xff; GPIOA->BSRR = 0xff & 0x00ff; /將數(shù)據(jù)送到P1口 并屏蔽高位,不干擾高8位IO的使用 GPIOA->BRR = (0xff) & 0x00ff; Delay(0X0DFFFF); break; case 2: Delay(800); for(j=0;j<3;j+)/從右到左3次 for(i=0;i<8;i+) /P2=taba7-i; GPIOB->BSRR = taba7-i
11、& 0x00ff; /將數(shù)據(jù)送到P2口 并屏蔽高位,不干擾高8位IO的使用 GPIOB->BRR = (taba7-i) & 0x00ff; /P1=0xff; GPIOA->BSRR = 0xff & 0x00ff; /將數(shù)據(jù)送到P1口 并屏蔽高位,不干擾高8位IO的使用 GPIOA->BRR = (0xff) & 0x00ff; Delay(0X0DFFFF); break; case 3: Delay(800); for(j=0;j<3;j+)/從上至下3次for(i=0;i<8;i+)/P2=0x00; GPIOB->
12、BSRR = 0x00 & 0x00ff; /將數(shù)據(jù)送到P2口 并屏蔽高位,不干擾高8位IO的使用 GPIOB->BRR = (0x00) & 0x00ff; /P1=tabb7-i; GPIOA->BSRR = tabb7-i & 0x00ff; /將數(shù)據(jù)送到P1口 并屏蔽高位,不干擾高8位IO的使用 GPIOA->BRR = (tabb7-i) & 0x00ff; Delay(0X0DFFFF); break; case 4: Delay(800); for(j=0;j<3;j+)/從下至上 3 次for(i=0;i<8;i+)
13、/P2=0x00; GPIOB->BSRR = 0x00 & 0x00ff; /將數(shù)據(jù)送到P2口 并屏蔽高位,不干擾高8位IO的使用 GPIOB->BRR = (0x00) & 0x00ff;/P1=tabbi;GPIOA->BSRR = tabbi & 0x00ff; /將數(shù)據(jù)送到P1口 并屏蔽高位,不干擾高8位IO的使用 GPIOA->BRR = (tabbi) & 0x00ff;Delay(0X0DFFFF); break; 2.3 RCC函數(shù)的配置配置程序代碼如下:void RCC_Configuration(void) /復(fù)位R
14、CC外部設(shè)備寄存器到默認(rèn)值 RCC_DeInit(); /打開外部高速晶振 RCC_HSEConfig(RCC_HSE_ON); /等待外部高速時鐘準(zhǔn)備好 HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus = SUCCESS) /外部高速時鐘已經(jīng)準(zhǔn)別好 /開啟FLASH的預(yù)取功能 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /FLASH延遲2個周期 FLASH_SetLatency(FLASH_Latency_2); /配置AHB(HCLK)時鐘=SYS
15、CLK RCC_HCLKConfig(RCC_SYSCLK_Div1); /配置APB2(PCLK2)鐘=AHB時鐘 RCC_PCLK2Config(RCC_HCLK_Div1); /配置APB1(PCLK1)鐘=AHB 1/2時鐘 RCC_PCLK1Config(RCC_HCLK_Div2); /配置PLL時鐘 = 外部高速晶體時鐘*9 PLLCLK = 8MHz * 9 = 72 MHz RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /使能PLL時鐘 RCC_PLLCmd(ENABLE); /等待PLL時鐘就緒 while(RCC
16、_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) /配置系統(tǒng)時鐘 = PLL時鐘 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /檢查PLL時鐘是否作為系統(tǒng)時鐘 while(RCC_GetSYSCLKSource() != 0x08) 2.4 NIVC函數(shù)配置配置的程序如下:void NVIC_Configuration(void)#ifdef VECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);#else NVIC_SetVectorTable(NVIC_Vect
17、Tab_FLASH,0x0);#endif設(shè)置向量表的位置和偏移量,如果向量表位于RAM,則偏移量為0x0。如果向量位于FLASH則偏移量為0x0。完整的程序代碼見附錄。專心-專注-專業(yè)三、系統(tǒng)實(shí)驗(yàn)首先進(jìn)行硬件電路搭建,根據(jù)圖1-4,進(jìn)行硬件電路連接。連接完畢后,檢查導(dǎo)線是否連接錯誤以及導(dǎo)線是否連接牢固。其次進(jìn)行軟件調(diào)試,在Keil軟件平臺進(jìn)行軟件調(diào)試,直至無錯誤報(bào)警。最后將程序下載到開發(fā)板。關(guān)鍵點(diǎn):連接時核心板的BOOT1的短路帽要斷開。實(shí)驗(yàn)現(xiàn)象:LED點(diǎn)陣從左到右,從右到左,從上至下,從下至上滾動。附錄程序代碼#include "stm32f10x_lib.h"GPIO
18、_InitTypeDef GPIO_InitStructure;ErrorStatus HSEStartUpStatus;unsigned int taba=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned int tabb=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;void RCC_Configuration(void);void NVIC_Configuration(void);void Delay(vu32 nCount);/ 主函數(shù)/*int main(void) unsigned char i,j;
19、 static unsigned char m;#ifdef DEBUG debug();#endif RCC_Configuration(); /系統(tǒng)時鐘配置函數(shù) NVIC_Configuration(); /NVIC配置函數(shù) /使能APB2總線外設(shè)時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); /關(guān)閉調(diào)試 端口重新映射 使用仿真器調(diào)
20、試時,不能用此語 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 ; /所有GPIO為同一類型端口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /輸出的最大頻率為50HZ GPIO_Init(GPIOB, &G
21、PIO_InitStructure); /初始化GPIOB端口 GPIO_Init(GPIOA, &GPIO_InitStructure); /初始化GPIOB端口 while (1) m+ ; if(m> 4) m=1;switch (m) case 1: for(j=0;j<3;j+)/從左到右3次 for(i=0;i<8;i+) /P2=tabai; GPIOB->BSRR = tabai & 0x00ff; /將數(shù)據(jù)送到P2口 并屏蔽高位,不干擾高8位IO的使用 GPIOB->BRR = (tabai) & 0x00ff; / P1
22、=0xff; GPIOA->BSRR = 0xff & 0x00ff; /將數(shù)據(jù)送到P1口 并屏蔽高位,不干擾高8位IO的使用 GPIOA->BRR = (0xff) & 0x00ff; Delay(0X0DFFFF); break; case 2: Delay(800); for(j=0;j<3;j+)/從右到左3次 for(i=0;i<8;i+) /P2=taba7-i; GPIOB->BSRR = taba7-i & 0x00ff; /將數(shù)據(jù)送到P2口 并屏蔽高位,不干擾高8位IO的使用 GPIOB->BRR = (taba7-
23、i) & 0x00ff; /P1=0xff; GPIOA->BSRR = 0xff & 0x00ff; /將數(shù)據(jù)送到P1口 并屏蔽高位,不干擾高8位IO的使用 GPIOA->BRR = (0xff) & 0x00ff; Delay(0X0DFFFF); break; case 3: Delay(800); for(j=0;j<3;j+)/從上至下3次for(i=0;i<8;i+)/P2=0x00; GPIOB->BSRR = 0x00 & 0x00ff; /將數(shù)據(jù)送到P2口 并屏蔽高位,不干擾高8位IO的使用 GPIOB->B
24、RR = (0x00) & 0x00ff; /P1=tabb7-i; GPIOA->BSRR = tabb7-i & 0x00ff; /將數(shù)據(jù)送到P1口 并屏蔽高位,不干擾高8位IO的使用 GPIOA->BRR = (tabb7-i) & 0x00ff; Delay(0X0DFFFF); break; case 4: Delay(800); for(j=0;j<3;j+)/從下至上 3 次for(i=0;i<8;i+)/P2=0x00; GPIOB->BSRR = 0x00 & 0x00ff; /將數(shù)據(jù)送到P2口 并屏蔽高位,不干擾
25、高8位IO的使用 GPIOB->BRR = (0x00) & 0x00ff;/P1=tabbi;GPIOA->BSRR = tabbi & 0x00ff; /將數(shù)據(jù)送到P1口 并屏蔽高位,不干擾高8位IO的使用 GPIOA->BRR = (tabbi) & 0x00ff;Delay(0X0DFFFF); break; / 配置RCC/*void RCC_Configuration(void) /復(fù)位RCC外部設(shè)備寄存器到默認(rèn)值 RCC_DeInit(); /打開外部高速晶振 RCC_HSEConfig(RCC_HSE_ON); /等待外部高速時鐘準(zhǔn)備好
26、 HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus = SUCCESS) /外部高速時鐘已經(jīng)準(zhǔn)別好 /開啟FLASH的預(yù)取功能 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /FLASH延遲2個周期 FLASH_SetLatency(FLASH_Latency_2); /配置AHB(HCLK)時鐘=SYSCLK RCC_HCLKConfig(RCC_SYSCLK_Div1); /配置APB2(PCLK2)鐘=AHB時鐘 RCC_PCLK2Config(RC
27、C_HCLK_Div1); /配置APB1(PCLK1)鐘=AHB 1/2時鐘 RCC_PCLK1Config(RCC_HCLK_Div2); /配置PLL時鐘 = 外部高速晶體時鐘*9 PLLCLK = 8MHz * 9 = 72 MHz RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /使能PLL時鐘 RCC_PLLCmd(ENABLE); /等待PLL時鐘就緒 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) /配置系統(tǒng)時鐘 = PLL時鐘 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /檢查PLL時鐘是否作為系統(tǒng)時鐘 whil
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人裝修合同參考樣本(4篇)
- 2025年個人租房正規(guī)合同模板(2篇)
- 2025年個人無息借款合同參考模板(三篇)
- 游泳館裝修工程用工合同
- 2025年度安防用電安全責(zé)任保險(xiǎn)合同
- 塑料助劑液堿運(yùn)送協(xié)議
- 寵物活體單次空運(yùn)合同
- 機(jī)械設(shè)備融資貸款居間合同
- 民宿生態(tài)園裝修合同范本
- 南京公寓裝修合同范本
- 中央2025年中國農(nóng)業(yè)銀行研發(fā)中心校園招聘344人筆試歷年參考題庫解題思路附帶答案詳解
- 手術(shù)室??谱o(hù)士工作總結(jié)匯報(bào)
- 2025屆高三聽力技巧指導(dǎo)-預(yù)讀、預(yù)測
- 8.1認(rèn)識生命(課件)-2024-2025學(xué)年統(tǒng)編版道德與法治七年級上冊
- 蘇州市2025屆高三期初陽光調(diào)研(零模)政治試卷(含答案)
- 【萬通地產(chǎn)償債能力存在的問題及優(yōu)化建議(數(shù)據(jù)論文)11000字】
- 人教版PEP五年級英語下冊單詞表與單詞字帖 手寫體可打印
- 2024年安徽省初中學(xué)業(yè)水平考試中考數(shù)學(xué)試卷(真題+答案)
- 學(xué)前兒童美術(shù)教育與活動指導(dǎo)第4版全套教學(xué)課件
- 標(biāo)桿門店打造方案
- 2022-2023年人教版九年級化學(xué)(上冊)期末試題及答案(完整)
評論
0/150
提交評論