《嵌入式操作系統(tǒng)》課件-項目二 數(shù)碼管數(shù)字鐘的設計與實現(xiàn)_第1頁
《嵌入式操作系統(tǒng)》課件-項目二 數(shù)碼管數(shù)字鐘的設計與實現(xiàn)_第2頁
《嵌入式操作系統(tǒng)》課件-項目二 數(shù)碼管數(shù)字鐘的設計與實現(xiàn)_第3頁
《嵌入式操作系統(tǒng)》課件-項目二 數(shù)碼管數(shù)字鐘的設計與實現(xiàn)_第4頁
《嵌入式操作系統(tǒng)》課件-項目二 數(shù)碼管數(shù)字鐘的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數(shù)碼管數(shù)字鐘的設計與實現(xiàn)項目二任務一1位數(shù)碼管靜態(tài)顯示目錄數(shù)碼管的顯示原理用STM32驅動數(shù)碼管顯示不同的數(shù)字或者字母一、數(shù)碼管的顯示原理一、數(shù)碼管的顯示原理數(shù)碼管是一種半導體發(fā)光器件,其基本單元是發(fā)光二極管。一、數(shù)碼管的顯示原理數(shù)碼管按段數(shù)分為7段、8段數(shù)碼管和14段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示)。一、數(shù)碼管的顯示原理按能顯示多少個“8”可分為1位、2位、4位等數(shù)碼管。一、數(shù)碼管的顯示原理數(shù)碼管的外形結構和驅動方式一、數(shù)碼管的顯示原理gdbcefdpadpgfedcba

00000110

編碼為:0x06二、1位數(shù)碼管循環(huán)顯示0-F使用protues仿真實現(xiàn)1位數(shù)碼管循環(huán)顯示0-F。二、1位數(shù)碼管循環(huán)顯示0-FG使能DIR方向控制操作LLB端送至A端LHA端送至B端HX不傳送二、1位數(shù)碼管循環(huán)顯示0-F二、1位數(shù)碼管循環(huán)顯示0-F共陰極不帶小數(shù)點0-F段碼為table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};二、1位數(shù)碼管循環(huán)顯示0-F二、1位數(shù)碼管循環(huán)顯示0-F數(shù)碼管數(shù)字鐘的設計與實現(xiàn)項目二任務一2位數(shù)碼管靜態(tài)顯示2位數(shù)碼管靜態(tài)顯示2位數(shù)碼管靜態(tài)顯示目標利用STM32與數(shù)碼管的接口技術,完成STM32的數(shù)碼管靜態(tài)顯示電路設計和程序的設計、運行及調試。任務要求使用STM32F103R6芯片的PC0~PC15引腳分別接2個共陰極LED數(shù)碼管。個位數(shù)碼管接PC0~PC7;十位數(shù)碼管接PC8~PC15。采用靜態(tài)顯示方式,編寫程序使2位數(shù)碼管上循環(huán)顯示0~99。2位數(shù)碼管靜態(tài)顯示數(shù)碼管的顯示方法LED數(shù)碼管有靜態(tài)顯示和動態(tài)顯示兩種方法。靜態(tài)顯示是指數(shù)碼管顯示某一字符時,相應的LED恒定導通或恒定截止。這種顯示方式的各位數(shù)碼管相互獨立,公共端恒定接地(共陰極)或接電源(共陽極)。每個數(shù)碼管的八個位段分別與一個八位I/O端口相連。I/O端口只要有字型碼輸出,數(shù)碼管就顯示給定字符,并保持不變,直到I/O口輸出新的段碼。2位數(shù)碼管靜態(tài)顯示數(shù)碼管顯示電路組成數(shù)碼管顯示電路是由STM32F103R6、2個1位的共陰極LED數(shù)碼管構成。按照任務要求,采用靜態(tài)顯示方式,數(shù)碼管顯示電路連接方法如下:1.STM32F103R6的PC0~PC7引腳接個位數(shù)碼管的A~G七個位段;2.PC8~PC15引腳接十位數(shù)碼管的A~G七個位段;3.由于小數(shù)點“.”DP位不用,PC7和PC15引腳也就不用了。2位數(shù)碼管靜態(tài)顯示2位數(shù)碼管靜態(tài)顯示數(shù)碼管顯示功能實現(xiàn)分析電路采用共陰極結構的數(shù)碼管,其公共端接地,這樣可以控制每一只LED的陽極電平來使其發(fā)光或熄滅,陽極為高電平發(fā)光,為低電平熄滅?!?~9”十個字符的字型編碼,采用查表的方式,表格是通過定義數(shù)組來完成的,代碼如下:

uint8_ttable_CA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};通過PC0~PC15輸出“0~9”十個字符的字型編碼,就可以在數(shù)碼管上顯示“0~9”數(shù)字。2位數(shù)碼管靜態(tài)顯示創(chuàng)建工程;編寫主文件smgxs.c代碼在USER文件夾下面,編寫smgxs.c代碼。使能GPIOC時鐘和配置PC0-PC15引腳的代碼如下:

GPIO_InitTypeDefGPIO_InitStructure;

//使能GPIOC時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin=0xffff; //PC0-PC15引腳配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//配置為推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//GPIOC速度為50MHzGPIO_Init(GPIOC,&GPIO_InitStructure);

//初始化PC0-PC152位數(shù)碼管靜態(tài)顯示編寫主文件display0-99.c代碼十位和個位進行結合:2位數(shù)碼管靜態(tài)顯示編寫主文件display0-99.c代碼十位和個位進行分離顯示:2位數(shù)碼管靜態(tài)顯示編寫主文件display0-99.c代碼總結兩位數(shù)碼管的靜態(tài)顯示原理實現(xiàn)0-99的動態(tài)循環(huán)顯示課后任務

循環(huán)顯示00-ff該怎么做呢?兩位數(shù)碼管的靜態(tài)顯示原理數(shù)碼管數(shù)字鐘的設計與實現(xiàn)項目二任務二

數(shù)碼管動態(tài)掃描數(shù)碼管動態(tài)掃描數(shù)碼管靜態(tài)顯示靜態(tài)驅動的優(yōu)點是編程簡單。靜態(tài)顯示的亮度較高,適合室外LED顯示屏等場合。但它需要更多的驅動電路,因此成本較高。目錄2位數(shù)碼管顯示6位數(shù)碼管顯示一、2位數(shù)碼管顯示一、2位數(shù)碼管顯示99動態(tài)掃描輪流向各個數(shù)碼管送出段碼和相應的位選碼,輪流點亮數(shù)碼管。利用人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。一、2位數(shù)碼管顯示99輸入1的段碼com端(位選)com端(位選)輸入2的段碼一、2位數(shù)碼管顯示99也就是說要多長時間完成一次全部數(shù)碼管的掃描呢?整體掃描時間=單個數(shù)碼管點亮時間*數(shù)碼管個數(shù)。答案:10ms以內一、2位數(shù)碼管顯示PC0~PC7引腳輸出顯示段碼(包括小數(shù)點“.”DP段)。PB0~PB1引腳依次接數(shù)碼管的位碼引腳1~2。2位數(shù)碼管顯示“99”一、2位數(shù)碼管顯示99一、2位數(shù)碼管顯示99二、6位數(shù)碼管顯示6位數(shù)碼管,顯示23點58分50秒。二、6位數(shù)碼管顯示123456二、6位數(shù)碼管顯示123456總結數(shù)碼管動態(tài)顯示原理程序設計方法數(shù)碼管數(shù)字鐘的設計與實現(xiàn)項目二任務三

查詢方式的按鍵控制目錄一、掌握按鍵查詢方法的原理二、復習數(shù)碼管動態(tài)顯示以及按鍵檢測的原理查詢方式的按鍵控制學習目標

一、掌握按鍵查詢方法的原理

二、復習數(shù)碼管動態(tài)顯示以及按鍵檢測的原理查詢方式的按鍵控制任務要求在6位數(shù)碼管動態(tài)掃描的基礎上增加三個按鍵,按鍵分別連接STM32單片機的GPIO引腳,然后編寫軟件利用查詢實現(xiàn)時分秒的調整功能。在STM32F103芯片GPIO引腳上分別接3個按和6個數(shù)碼管,數(shù)碼管顯示時分秒,利用查詢方式通過3個按鍵調整時分秒的顯示。按鍵1按下一次,小時對應加1;按鍵2按下一次,分鐘對應加1;按鍵3按下一次,秒對應加1。一、硬件設計按鍵電路設計3個獨立按鍵,分別接在PA0、PA1、PA2,電源為3.3V,電阻為上拉電阻。按鍵如下圖所示:一、掌握按鍵查詢方法的原理仿真電路圖程序設計采用模塊化的軟件設計思想按鍵模塊,在按鍵程序中讀取按鍵的狀態(tài),不同的按鍵狀態(tài)下對應不同的按鍵處理函數(shù);顯示模塊,顯示模塊主要就是數(shù)碼管的動態(tài)掃描程序;主程序:在主程序里一直執(zhí)行按鍵模塊和顯示模塊;達到動態(tài)改變數(shù)碼管狀態(tài)的目的。二、軟件設計三、查詢方式一旦某一外設被選中并啟動后,主機將查詢這個外設的某些狀態(tài)位,看其是否準備就緒?若外設未準備就緒,主機將再次查詢;若外設已準備就緒,則執(zhí)行一次I/O操作。這種方式控制簡單,但外設和主機不能同時工作,各外設之間也不能同時工作,系統(tǒng)效率很低,因此,僅適用于外設的數(shù)目不多,對I/O處理的實時要求不那么高,CPU的操作任務比較單一,并不很忙的情況。四、程序設計工程的創(chuàng)建,在動態(tài)掃描程序的基礎上增加按鍵掃描的檢測。一、掌握按鍵查詢方法的原理程序設計修改數(shù)碼管設備文件。修改主程序的GPIO初始化函數(shù),增加GPA0、GPA1、GPA2三個輸入引腳的配置。一、掌握按鍵查詢方法的原理程序設計增加按鍵檢測函數(shù)keyscan()。在主程序里增加按鍵檢測函數(shù),該函數(shù)主要判斷按鍵是否按下,如果有按鍵按下,先識別按鍵按下的類型,然后對應變量做+1的操作,按鍵掃描函數(shù)如下:一、掌握按鍵查詢方法的原理程序設計以key0按鍵按下為例。一、掌握按鍵查詢方法的原理程序設計數(shù)碼管動態(tài)掃描函數(shù)。一、掌握按鍵查詢方法的原理程序設計主函數(shù)的編寫。一、掌握按鍵查詢方法的原理程序設計查詢方式的按鍵控制流程圖二、復習數(shù)碼管動態(tài)顯示以及按鍵檢測的原理五、原因分析數(shù)碼管的動態(tài)顯示就是分時控制不同的數(shù)碼管進行顯示,利用了人眼的視覺延遲效應。如果按鍵函數(shù)長一點,相當于把視覺延遲效應拉長了,人眼就看出來數(shù)碼管的輪詢顯示了,至于按鍵按下不松開,則完全讓數(shù)碼管不顯示了,因為我們在等待按鍵釋放的位置是一個while循環(huán)。數(shù)碼管數(shù)字鐘的設計與實現(xiàn)項目二任務四

中斷方式的按鍵控制查詢方式的按鍵控制當按鍵按下以后或者按鍵按下的時間稍微長一點數(shù)碼管就不顯示了這是什么原因,有沒有辦法改進?中斷方式的按鍵控制

一、中斷的概念、用法

二、通過中斷的方式實現(xiàn)時分秒按鍵控制中斷方式的按鍵控制學習目標查詢方式的按鍵控制CPU和外設并行工作,當外設數(shù)據(jù)準備好(或有某種突發(fā)事件發(fā)生)時向CPU提出請求,CPU暫停正在執(zhí)行的程序轉而為該外設服務(或處理緊急事件),處理完畢再回到原斷點繼續(xù)執(zhí)行原程序。中斷中斷返回正在運行的程序CPU中斷正在執(zhí)行的程序,

轉到中斷服務程序中斷服務程序執(zhí)行結束,

返回繼續(xù)執(zhí)行原程序CPU收到中斷信號一、中斷的概念一、中斷的概念中斷的概念CPU在執(zhí)行主程序CPU執(zhí)行低級中斷服務程序CPU執(zhí)行高級中斷服務程序低級中斷請求高級中斷請求響應低級中斷請求響應高級中斷請求返回主程序返回主程序二、STM32中斷介紹在Cortex-M3內核中集成了中斷控制器和中斷優(yōu)先級控制寄存器,Cortex-M3內核支持256個中斷,其中包含了16個內核中斷(也稱為系統(tǒng)異常)和240個外部中斷,并具有256級可編程的中斷優(yōu)先級設置。其中,個別異常的優(yōu)先級被定死外,其它的優(yōu)先級都是可編程的。1.STM32的中斷通道和中斷向量STM32中斷介紹1.STM32的中斷通道和中斷向量STM32有84個中斷,包括16個Cortex-M3內核中斷線和68個可屏蔽中斷通道,具有16級可編程中斷優(yōu)先級的設置(僅設置8位中的高4位)。STM32中斷介紹STM32的每一個GPIO引腳都可以作為外部中斷的中斷輸入口,也就是都能配置成一個外部中斷觸發(fā)源。2.STM32的外部中斷STM32F103的中斷控制器支持19個外部中斷(對于互聯(lián)型產(chǎn)品是20個)事件請求。STM32根據(jù)GPIO端口的引腳序號不同,把不同GPIO端口、同一個序號的引腳組成一組,每組對應一個外部中斷/事件源(既中斷線)EXTIx(x:0~15),比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組,依此類推,我們就能將眾多中斷觸發(fā)源分成16組。STM32中斷介紹3.GPIO與外部中斷的映射關系引腳分組(1)尾號相同的引腳一組,接入1個外部中斷線。(2)同組引腳只能有一個設置為外部中斷功能。中斷通道(1)EXTI0~EXIT4分別具有獨立的中斷通道。(2)EXTI5~EXIT9共享同一個中斷通道。(3)EXTI10~EXIT15共享同一個中斷通道。STM32中斷介紹STM32內核有兩個中斷優(yōu)先級的概念,分別是搶占優(yōu)先級和響應優(yōu)先級(也稱為子優(yōu)先級)具有高搶占優(yōu)先級的中斷,可以在具有低搶占優(yōu)先級的中斷處理過程中被響應,既中斷嵌套。4.STM32的中斷優(yōu)先級Cortex-M3中定義了8bit(位)用于設置中斷源的優(yōu)先級,STM32只使用了高4位,這4位的中斷優(yōu)先級控制位分成2組。從高位開始,前面是定義搶占優(yōu)先級的位,后面位用于定義響應優(yōu)先級。優(yōu)先級分組搶占優(yōu)先級子優(yōu)先級第0組:NVIC_PriorityGroup_0無4位/16級(0~15)第1組:NVIC_PriorityGroup_11位/2級(0~1)3位/8級(0~7)第2組:NVIC_PriorityGroup_22位/4級(0~3)2位/4級(0~3)第3組:NVIC_PriorityGroup_33位/8級(0~7)1位/2級(0~1)第4組:NVIC_PriorityGroup_44位/16級(0~15)無STM32中斷優(yōu)先級分組1.編寫外部中斷配置文件exit.c,開啟AFIO時鐘。三、程序編寫三、程序編寫那么什么是AFIO時鐘呢?當需要對“AFIO管理的寄存器”進行讀寫時,必須使能AFIO時鐘。外部中斷配置AFIO的管理范圍,用到外部中斷需要先開啟AFIO時鐘。在這個例子中我們把STM32的GPIO引腳引入到EXTI外部中斷線上,使得所有的GPIO引腳能作為外部中斷的輸入源。所以對于有復用功能的I/O引腳,還要開啟其復用功能時鐘。因此,還需要開啟AFIO時鐘。RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE)。程序編寫2.使用GPIO_EXTILineConfig()函數(shù),設置PA0~PA2分別為EXTI0~EXTI2中斷源。程序編寫3.通過EXTI_InitTypeDef結構體,使用EXTI_Init(&EXTI_InitStructure)函數(shù),將4個中斷映射到中斷線EXTI_Line0~EXTI_Line2上,并將其配置為中斷模式和下降沿觸發(fā)中斷,最后使能中斷。程序編寫4.通過NVIC_InitTypeDef結構體,使用NVIC_Init(&NVIC_InitStructure)函數(shù),設置按鍵所在的外部中斷通道(既外部中斷向量)、優(yōu)先級以及使能外部中斷通道。程序編寫5.中斷服務函數(shù),外部中斷服務函數(shù)的名字是在startup_stm32f10x_hd.s中是定義好的。中斷線0~4的每個中斷線對應一個EXTI0_IRQHandler~EXTI4_IRQHandler中斷服務函數(shù);中斷線5~9共用一個EXTI9_5_IRQHandler中斷服務函數(shù);中斷線10~15共用一個EXTI15_10_IRQHandler中斷服務函數(shù)。6.EXTI_GetITStatus()和EXTI_ClearITPendingBit()函數(shù)。ITStatusEXTI_GetITStatus()函數(shù),是判斷某個中斷線上的中斷是否發(fā)生(標志位是否置位)。EXTI_ClearITPendingBit()函數(shù),是清除某個中斷線上的中斷標志位。程序編寫本次設計用到了中斷線0、1、2,需要寫三個中斷服務程序,分別調節(jié)時分秒這三個變量。程序編寫在Exit.c文件中需要將這三個變量設置為全局變量。程序編寫主函數(shù)的編寫總結STM32外部中斷編程步驟使用GPIO端口外部中斷的步驟:開啟IO口復用時鐘,設置IO口與中斷線的映射關系;1初始化線上中斷,設置觸發(fā)條件等;2配置中斷分組(NVIC),并使能中斷;3編寫中斷服務函數(shù)。4數(shù)碼管數(shù)字鐘的設計與實現(xiàn)項目二任務五

定時器實現(xiàn)數(shù)字鐘定時器實現(xiàn)數(shù)字鐘任務要求利用STM32定時器精確實現(xiàn)數(shù)字鐘時分秒運行的功能。一、什么是定時器定時器是對周期固定的脈沖信號進行計數(shù),如MCU內部的外設時鐘(APB)。計數(shù)器是對周期不確定的脈沖信號進行計數(shù),如MCU的I/O引腳所引入的外部脈沖信號。定時器和計數(shù)器本質上都是計數(shù)器,定時器是計數(shù)器的一種特例。二、定時器的分類片內外設定時器(7個)內核定時器(1個)STM32F1系列的開發(fā)板一共有8個定時器,按照功能的不同可以分為:高級定時器(TIM1、TIM8)通用定時器(TIM2、TIM3、TIM4、TIM5)基本定時器(TIM6、TIM7)SysTick定時器三、通過庫函數(shù)來實現(xiàn)定時器的定時任務本次操作以通用定時器TIM3為例:定時器相關的庫函數(shù)主要集中在固件庫文件stm32f10x_tim.h和stm32f10x_tim.c文件中。1.

TIM3時鐘使能三、通過庫函數(shù)來實現(xiàn)定時器的定時任務2.

TIM_TimeBaseInit()函數(shù)初始化定時器自動重裝值、分頻系數(shù)、計數(shù)方式等參數(shù),是通過初始化函數(shù)TIM_TimeBaseInit()實現(xiàn)的。結構體定義:注意:通用定時器只有前四個參數(shù)有用,最后一個參數(shù)是針對高級定時器的;typedefstruct{uint16_tTIM_Prescaler;//設置分頻系數(shù)uint16_tTIM_CounterMode;//設置計數(shù)方式/向上計數(shù)/向下計數(shù)/中央對齊計數(shù)uint16_tTIM_Period;//設置自動重載計數(shù)周期值uint16_tTIM_ClockDivision;//設置時鐘的分頻因子uint8_tTIM_RepetitionCounter;}TIM_TimeBaseInitTypeDef;三、通過庫函數(shù)來實現(xiàn)定時器的定時任務2.

TIM_TimeBaseInit()函數(shù)定時時間的確定除以1000分頻:f=72M/1000=7200HZT=1/7200hz計一秒需要7200T三、通過庫函數(shù)來實現(xiàn)定時器的定時任務2.

TIM_TimeBaseInit()函數(shù)成員變量ClockDivision的取值范圍:TIM_CLOCKDIVISION_DIV1 對定時器時鐘TIM_CLK進行1分頻TIM_CLOCKDIVISION_DIV2 對定時器時鐘TIM_CLK進行2分頻TIM_CLOCKDIVISION_DIV4 對定時器時鐘TIM_CLK進行4分頻成員變量CounterMode的取值范圍:TIM_COUNTERMODE_UP 遞增計數(shù)模式三、通過庫函數(shù)來實現(xiàn)定時器的定時任務2.

TIM_TimeBaseInit()函數(shù)PSC預分頻器CNT計數(shù)器ARR自動重裝載數(shù)值時間到后通過中斷等方式通知STM32執(zhí)行某些程序CLKTIMCLK溢出時間到啦?。?!四、定時器中斷函數(shù)的編寫time.c四、定時器中斷函數(shù)的編寫time.c五、主函數(shù)的編寫總結STM32定時器的初始化步驟如何對STM32的TIMx定時器進行初始化呢?其初始化步驟如下:時鐘使能;1配置預分頻、自動重裝值和重復計數(shù)值;2使能TIM中斷,選擇中斷源;3設置中斷優(yōu)先級;4使能TIMx外設。5總結STM32外部中斷編程步驟使用GPIO端口外部中斷的步驟:時鐘使能;1配置預分頻、自動重裝值和重復計數(shù)值;2使能TIM中斷,選擇中斷源;3設置中斷優(yōu)先級;4使能TIMx外設。5數(shù)碼管數(shù)字鐘的設

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論