欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于STM32单片机的点阵显示设计教材.docx

    • 资源ID:76395072       资源大小:2.45MB        全文页数:20页
    • 资源格式: DOCX        下载积分:24金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要24金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于STM32单片机的点阵显示设计教材.docx

    基于 STM32 单片机的点阵显示设计一、系统的硬件设计1.1 系统的硬件设计方案STM32F103x6 是基于 ARM 核心的增强型 32 位带闪存、USB、 ADC 和 CAN 的微控制器。在电机驱动和应用控制、 医疗和手持设备、 智能仪表、警报系统和视频对讲中有广泛的应用。通过使用 STM32F103x6 进行 LED 点阵显示的设计,学习 STM32 单片机的使 用方法。1.2 STM32 单片机简介根据本课题需要采用用了 STM32F103x6 型号单片机STM32F103XX 增强型系列拥有 ARM 的 Cortex-M3 核心,它为实现 MCU 的需要提供了低成本、缩减的管脚数目、降低的系统内耗,同 时提供了卓越的计算性能和先进的中断系统响应。它的原理图如图1-2 所示图 1-2 STM32 单片机原理图1.2.1STM32F103x6 单片机的功能核心-ARM 32 位的 Cortex-M3CPU-单周期硬件乘法和除法,加快计算存储器-从 32K 字节到 128K 字节闪存程序存储器-多重自举功能时钟、复位和供电管理-2.0 至 3.6 伏供电和 I/O 管脚-上电 /断电复位、可编程电压检测器、掉电检测器-内嵌 4 至 16MHZ 高速晶体振荡器-内嵌 PLL 供应 CPU 时钟-内嵌使用 32KHZ 晶体的 RTC 振荡器低功耗-3 种省电模式:睡眠、停机和待机模式-VBAT 为 RTC 和后备寄存器供电 2 个 12 位模数转换器, 1us 转换时间-双采样和保持功能-温度传感器调试模式-串行调试和 JTAG 接口 DMA-支持的外设:定时器、 ADC、SPI、I2C 和 USART 多达 80个快速 I/O 口-26/36/51/80 个多功能双向 5V 兼容的 I/O 接口多达 7 个定时器-多达 3 个同步的 16 位定时器,每个定时器4 个用于输入有多达 捕获/输出比较 /PWM 或脉冲计数的通道-两个看门狗定时器-系统时间定位器: 24 位的带自动加载功能的 多达 9 个通信接口-多达 2 个 I2C 接口-多达 3 个 USART 接口-多达 2 个 SPI 同步串行接口-CAN 接口-USB2.0 接口1.2.2 STM32 单片机的主要特色STM32 系列 32 位闪存微控制器使用来自于 ARM 公司具有突破 性的 Cortex-M3 内核,该内核是专门设计于满足集高性能、低功耗、 实时应用、具有竞争性价格于一体的嵌入式领域的要求。 Cortex-M3 在系统结构上的增强, 让 STM32 受益无穷; Thumb-2? 指令集带来了 更高的指令效率和更强的性能;通过紧耦合的嵌套矢量中断控制器, 对中断事件的响应比以往更迅速; 所有这些又都融入了业界领先的功 耗水准。STM32 系列给MCU 用户带来了前所未有的自由空间, 提供 了全新的 32 位产品选项,结合了高性能、实时、低功耗、低电压等 特性,同时保持了高集成度和易于开发的优势。 它拥有出众和创新的 外设,易于开发,可使产品快速进入市场。1.3 STM32 单片机开发板简介本课题采用了普中科技的 STM32 开发板,配备有STM32F103x6芯片。开发板的引脚图如图 1-3所示图 1-3 普中科技的 STM32 开发板实物图1.3.1 STM32开发板的外围硬件资源-8*8 双色点阵模块-五线四相步进电机-四线双极性步进电机-动态数码管 /静态数码管-74HC595-74HC165-USB 自动下载-MCU-矩阵键盘、独立按键-AD/DA/ 光敏 /温敏图 1-3-1 普中科技的 STM32 开发板内部电路图-ISP、PS2 等等。其电路图如图 1-3-11.3.2 STM32开发板的软件资源STM32 开发板提供了丰富的标准例程,其例程列表如下:编号实验名称编号实验名称编号实验名称1LED 灯RCC 系统时钟1074HC5951974HC165定时器 TIM2串口通信21120独立按键EXIT 中断31221DS18B20 温度检测4晶体数码管13FLASH 保存22RTC 时钟显示数据动态数码管STM32-24C0ADC1-DMA5142326SysTick 定时器15STM32-ADD彩屏例程24A-PCF85917步进电机16STM-160225CAN-BUS矩阵键盘817硬件 I2C 读取 24C0226VirtualCOMPort(USB 转串口)9LED 点阵18硬件 SPI-5951.4硬件电路图 1-4 STM32 LED 点阵实验在开发板上的接线图本科创课题涉及的硬件电路如图 1-4 所示、系统的软件设计对于一个完整的嵌入式应用系统的开发, 硬件的设计与调试工作 仅占整个工作量的一半, 应用系统的程序设计也是嵌入式系统设计一 个非常重要的方面。本次软件编写在 Keil 软件平台进行的。如图 2-1图 2-1 Keil 软件平台截图所示。2.1 对 STM32 端口进行配置对 端 口 的 配 置 程 序 如 下 : RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)/;/ 关 闭调试 端口重新映射 使用仿真器调试时,不能用此语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/;/ 输出的最大频率为 50HZGPIO_Init(GPIOB, &GPIO_InitStructure); /初始化 GPIOB 端口GPIO_Init(GPIOA, &GPIO_InitStructure); /初始化 GPIOB 端口2.2 控制 LED 点阵显示的主程序设计控制 LED 点阵显示的程序如下: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; /将数据送到高位, 不干扰高 8 位 IO 的使用GPIOB->BRR = (tabai) & 0x00ff;/ P1=0xff;GPIOA->BSRR = 0xff & 0x00ff; /将数据送到 P1P2 口 并屏蔽口 并屏蔽高位, 不干扰高 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; /将数据送到屏蔽高 位,不干扰高 8 位 IO 的使用GPIOB->BRR = (taba7-i) & 0x00ff;/P1=0xff;GPIOA->BSRR = 0xff & 0x00ff; /将数据送到 P1 口位, 不干扰高 8 位 IO 的使用GPIOA->BRR = (0xff) & 0x00ff; Delay(0X0DFFFF);break; case 3:P2 口 并并屏蔽高Delay(800);for(j=0;j<3;j+)/ /从上至下 3 次for(i=0;i<8;i+)/P2=0x00;GPIOB->BSRR = 0x00 & 0x00ff; /将数据送到 P2 口 并屏蔽高位, 不干扰高 8 位 IO 的使用GPIOB->BRR = (0x00) & 0x00ff;/P1=tabb7-i;GPIOA->BSRR = tabb7-i & 0x00ff; /将数据送到 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; /将数据送到 P2 口 并屏蔽高位, 不干扰高 8 位 IO 的使用GPIOB->BRR = (0x00) & 0x00ff;/P1=tabbi;GPIOA->BSRR = tabbi & 0x00ff; /将数据送到 P1 口 并屏蔽高位, 不干扰高 8 位 IO 的使用GPIOA->BRR = (tabbi) & 0x00ff; Delay(0X0DFFFF);break;2.3 RCC函数的配置配置程序代码如下:void RCC_Configuration(void)/复位 RCC 外部设备寄存器到默认值RCC_DeInit();/打开外部高速晶振RCC_HSEConfig(RCC_HSE_ON);/等待外部高速时钟准备好HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus = SUCCESS) /外部高速时钟已经准别好/开启 FLASH 的预取功能FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/FLASH 延迟 2 个周期FLASH_SetLatency(FLASH_Latency_2);/配置 AHB(HCLK) 时钟 =SYSCLKRCC_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 MHzRCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/使能 PLL 时钟 RCC_PLLCmd(ENABLE);/等待 PLL 时钟就绪while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) =RESET)/配置系统时钟 = PLL 时钟RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/检查 PLL 时钟是否作为系统时钟while(RCC_GetSYSCLKSource() != 0x08)2.4 NIVC函数配置配置的程序如下:void NVIC_Configuration(void)#ifdef VECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);#elseNVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);#endif设置向量表的位置和偏移量,如果向量表位于量 为 0x0。如果向量位于 FLASH 则偏移量为 0x0。完整的程序代码见 附录。RAM ,则偏移三、系统实验首先进行硬件电路搭建,根据图 1-4,进行硬件电路连接。连接 完毕后,检查导线是否连接错误以及导线是否连接牢固。 其次进行软 件调试,在 Keil 软件平台进行软件调试,直至无错误报警。最后将 程序下载到开发板。关键点:连接时核心板的 BOOT1 的短路帽要断开。 实验现象: LED 点阵从左到右,从右到左,从上至下,从下至 上滚动 。附录程序代码#include "stm32f10x_lib.h" GPIO_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);/ 主函数/* int main(void) unsigned char i,j;static unsigned char m; #ifdef DEBUGdebug(); #endifRCC_Configuration(); / 系统时钟配置函数NVIC_Configuration(); /NVIC 配置函数/使能 APB2 总线外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); / 关闭调试 端口重新映射 使用仿真器调试时,不能用此语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; /输出的最大频率为 50HZGPIO_Init(GPIOB, &GPIO_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; /将数据送到 P2 口 并屏蔽高位, 不干扰 高 8 位 IO 的使用GPIOB->BRR = (tabai) & 0x00ff;/ P1=0xff;GPIOA->BSRR = 0xff & 0x00ff; /将数据送到 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; /将数据送到 P2 口 并屏蔽高位,不 干扰高 8 位 IO 的使用GPIOB->BRR = (taba7-i) & 0x00ff;/P1=0xff;GPIOA->BSRR = 0xff & 0x00ff; /将数据送到 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; /将数据送到 P2 口 并屏蔽高位,不干扰高 8 位 IO 的使用GPIOB->BRR = (0x00) & 0x00ff;/P1=tabb7-i;GPIOA->BSRR = tabb7-i & 0x00ff; /将数据送到 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; /将数据送到 P2 口 并屏蔽高位, 不干扰 高 8 位 IO 的使用GPIOB->BRR = (0x00) & 0x00ff;/P1=tabbi;GPIOA->BSRR = tabbi & 0x00ff; /将数据送到 P1 口 并屏蔽高位, 不干扰 高 8 位 IO 的使用GPIOA->BRR = (tabbi) & 0x00ff;Delay(0X0DFFFF);break;/ 配置 RCC/*void RCC_Configuration(void)复位外部设备寄存器到默认值/RCCRCC_DeInit();/打开外部高速晶振 RCC_HSEConfig(RCC_HSE_ON);/等待外部高速时钟准备好 HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus = SUCCESS) / 外部高速时钟已经准别好/开启 FLASH 的预取功能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(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_GetFlagStatu s(RCC_FLAG_PLLRDY) =RESET)/配置系统时钟 = PLL 时钟RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/检查 PLL 时钟是否作为系统时钟 while(RCC_GetSYSCLKSource() != 0x08)/ NVIC 配置函数/* void NVIC_Configuration(void)#ifdef VECT_TAB_RAM/* Set the Vector Table base location at 0x20000000 */NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);#endif/ 延时函数/* void Delay(vu32 nCount)for(; nCount != 0; nCount-);#ifdefDEBUG/* Function Name : assert_failed* : Reports the name of the source file and the sourceDescription* Input*line number where the assert_param error has: - file: pointer to the source file name- line: assert_param error line source number* Output: None* Return: None/*void assert_failed(u8* file, u32 line)/*Usercan add his own implementation to report the file name andlinenumber, ex: printf("Wrong parameters value: file %s online%drn", file, line) */* Infinite loop */ while (1)#endif

    注意事项

    本文(基于STM32单片机的点阵显示设计教材.docx)为本站会员(小***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开