基于STM32的万年历设计Word下载.docx
- 文档编号:19488073
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:29
- 大小:162.91KB
基于STM32的万年历设计Word下载.docx
《基于STM32的万年历设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于STM32的万年历设计Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
XX(时:
分:
秒),当时间计数为:
23:
59:
59时将刷新为:
00:
00。
1.功能描述
1.1设计要求
1.具有数字时钟功能。
2.具有简单日历功能。
3.具有手动校准时间功能。
4.具有闰年识别功能。
1.2RTC(实时时钟)简介
实时时钟是一个独立的定时器。
RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。
修改计数器的值可以重新设置系统当前的时间和日期。
RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。
系统复位后,禁止访问后备寄存器和RTC,防止对后备区域(BKP)的意外写操作。
执行以下操作使能对后备寄存器和RTC的访问:
1.设置寄存器RCC_APB1ENR的PWREN和BKPEN位来使能电源和后备接口
时钟。
2.设置寄存器PWR_CR的DBP位使能对后备寄存器和RTC的访问。
当我们需要在掉电之后,又需要RTC时钟正常运行的话,单片机的VBAT脚需外接3.3V的锂电池。
当我们重新上电的时候,主电源给VBAT供电,当系统掉电之后VBAT给RTC时钟工作,RTC中的数据都会保持在后备寄存器当中。
野火STM32开发板的VBAT引脚接了3.3V的锂电。
3.STM32自带了RTC时钟计数器,从0开始计数到232。
每一个计数代表秒计数,每六十个计数代表分计数,以此类推。
24(小时)*60(分钟)*60(秒钟)=86400代表一天的计数时间。
假设当前计数为count,count/86400得到计数的天数,根据这个得到年月日。
Count%86400得到时分秒。
4.根据1中得到的年月日时分秒,进行计算的程序有:
闰年判断,星期几计算,当前月有多少天等等。
另外,秒表为RTC一秒钟定时计数
1.3设计方案的选择
1.3.1可选择的芯片方案
整个系统用STM32F103VE单片机作为中央控制器,由单片机执行采集内部RTC值,时钟信号通过单片机I/O口传给LCD12864,单片机模块控制驱动模块驱动显示模块,通过显示模块来实现信号的输出、LCD12864的显示及相关的控制功能。
系统设有按键模块用于对时间进行调整及扩展多个小键盘。
方案一:
采用89C51芯片
采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二:
采用AT89S52芯片
片内ROM全都采用FlashROM;
能以3V的超底压工作;
同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
不使用时钟芯片,而直接用AT89S52单片机来实现电子万年历设计。
AT89S52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦写1000余次。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
若采用单片机计时,利用它的一个16位定时器/计数器每50ms产生一个中断信号,中断20次后产生一个秒信号,然后根据时间进制关系依次向分、时、日、星期、月、年进位。
这样就实现了直接用单片机来实现电子万年历设计。
方案三:
采用STM32单片机
STM32是一个低功耗,高性能32位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器。
主要性能有:
与MCS-51单片机产品兼容、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。
从单片机芯片主要性能角度出发,本数字电子钟单片机芯片选择设计采用方案采用STM32F103VE。
1.3.2显示模块选择方案和论证:
方案一:
采用ILI9341LED液晶显示屏
采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,显示质量高,没有电磁辐射,可视面积大,应用范围广,画面效果好,数字式接口,匀称小巧,功耗小。
方案二:
采用点阵式数码管显示
动态显示,即各位数码管轮流点亮,对于显示器各位数码管,每隔一段延时时间循环点亮一次。
利用人的视觉暂留功能可以看到整个显示,但须保证扫描速度足够快,人的视觉暂留功能才可察觉不到字符闪烁。
显示器的亮度与导通电流、点亮时间及间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.
采用LED数码管动态扫描
LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
从节省单片机芯片I/O口和降低能耗角度出发,本数字电子钟数码管显示选择设计采用方案一,既ILI9341LED显示。
1.3.3时钟芯片的选择方案和论证:
直接采用单片机定时计数器
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
采用DS1302时钟芯片实现时钟
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA.
采用STM32的RTC定时器
由于STM32自带了实现计时功能的RTC时钟计数器,可以直接使用。
1.3.4电路设计最终方案
综上各方案所述,对本课题方案选定:
采用STM32F103VE作为主控制芯片;
STM32自带的RTC提供时钟;
LCD液晶显示作为显示。
1.4电源电路
本设计所需电源电压为直流、电压值大小5V的电压源。
从硬件实物设计简易程度与经费方面考虑,用两节电压值大小2.5V干电池与电路电压源引脚相连接即可达到硬件设计要求。
即本设计可采用两节电压值大小2.5V干电池做硬件电路电压源。
为了方便改写程序,本次实验采用USB线连接电脑进行操作。
1.5按键电路
本设计所需按键用于进行显示时间的调整与设置扩展的小键盘。
单片机芯片4个I/O口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平的高低,即按键的开与关,以达到用按键进行显示时间的调整与设置扩展的小键盘的设计要求。
2.硬件设计
2.1设计组成框图
电脑
图设计的组成框图
2.2STM32F103VE实验板
STM32F103系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。
该系列芯片按片内Flash的大小可分为三大类:
小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。
芯片集成定时器,CAN,ADC,SPI,I2C,USB,UART,等多种功能。
分为三大类:
LD(小于64K),MD(小于256K),HD(大于256K),STM32F103VET6类属第三类。
STM32F103ZET6芯片介绍:
●基于ARMCortex-M3核心的32位微控制器,LQFP-144封装.
●512K片内FLASH(相当于硬盘),64K片内RAM(相当于内存),片内FLASH支持在线编程(IAP).
●高达72M的频率,数据,指令分别走不同的流水线,以确保CPU运行速度达到最大化.
●通过片内BOOT区,可实现串口下载程序(ISP).
●片内双RC晶振,提供8M和32K的频率.
●支持片外高速晶振(8M),和片外低速晶振(32K).其中片外低速晶振可用于CPU的实时时钟,带后备电源引脚,用于掉电后的时钟行走.
●42个16位的后备寄存器(可以理解为电池保存的RAM),利用外置的纽扣电池,和实现掉电数据保存功能.
●支持JTAG,SWD调试.配合廉价的J-LINK,实现高速低成本的开发调试方案。
●多达80个IO(大部分兼容5V逻辑),4个通用定时器,2个高级定时器,2个基本定时器,3路SPI接口,2路I2S接口,2路I2C接口,5路USART,一个USB从设备接口,一个CAN接口,SDIO接口,可兼容SRAM,NOR和NANDFlash接口的16位总线-FSMC。
●3路共16通道的12位AD输入,2路共2通道的12位DA输出.支持片外独立电压基准.
●CPU操作电压范围:
2.0-3.6V
2.3USB线
USB开发涉及主机和设备,为了避免开发驱动程序,使用Windows自带的驱动程序。
所以设备枚举成HID类设备。
USB鼠标就是标准的USB-HID设备。
不过操作系统阻止了应用程序直接访问USB鼠标返回的报告。
所以本例使用自定义HID设备。
一来免去了开发驱动程序,二来自定义的HID设备应用程序和设备可以自由收发数据(仅指数据内容)。
USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。
USB接口即插即用和热插拔功能。
USB接口可连接127种外设,如鼠标和键盘等。
USB是在1994年底由英特尔等多家公司联合在1996年推出后,已成功替代串口和并口,已成为当今电脑与大量智能设备的必配接口。
USB版本经历了多年的发展,到如今已经发展为3.0版本。
对于大多数工程师来说,开发USB2.0接口产品主要障碍在于:
要面对复杂的USB2.0协议、自己编写USB设备的驱动程序、熟悉单片机的编程。
这不仅要求有相当的VC编程经验、还能够编写USB接口的硬件(固件)程序。
所以大多数人放弃了自己开发USB产品。
为了将复杂的问题简单化,西安达泰电子特别设计了USB2.0协议转换模块。
USB20D模块可以被看作是一个USB2.0协议的转换器,将电脑的USB2.0接口转换为一个透明的并行总线,就象单片机总线一样。
从而几天之内就可以完成USB2.0产品的设计。
2.4液晶显示器LCD控制器简介
LCD液晶显示器(LiquidCrystalDisplay:
LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。
LCM(LCDModule)即LCD显示模组、液晶模块,是指将液晶显示器件,连接,控制与驱动等外围电路,PCB电路板,背光源,结构件等装配在一起的组件。
由于液晶显示屏功耗低、体积小,承载的信息量大,因而被广泛用于信息输出、与用户进行交互。
由于STM32内部没有集成专用的液晶屏和触摸屏的控制接口,所以在显示面板中应自带含有驱动芯片的驱动电路(液晶屏和触摸屏的驱动电路是独立的),STM32芯片通过驱动芯片来控制液晶屏和触摸屏。
以本实验3.2寸液晶屏(240*320)为例,它使用ILI9341芯片控制液晶屏,通过XPT2046芯片控制触摸屏。
LCD为非发光性的显示装置,它需要借助背光源才能达到显示功能,LED控制器就是用来控制液晶屏中的LED背光源。
2.4.1液晶显示器在内部电路结构上主要构成
1.驱动板(也叫主板):
主要是用以接收、处理从外部送进来的模拟(VGA)或者数字(DVI)视频信号,并通过屏线送出信号去控制液晶屏(PANEL)正常工作。
驱动板上含有MCU单元,它是液晶显示器的检测控制中心和大脑。
2.电源板:
用于将90~240V的交流电压转变为12V、5V、3V等的直流电供给显示器工作。
3.背光板(也叫高压板):
用于将主板或电源板输出的12V的直流电压转变为PANEL需要的高频的1500~1800V的高压交流电,用于点亮PANEL的背光灯。
电源板和背光板有时会做在一起也就是所谓的电源背光二合一板。
4.液晶屏:
液晶显示用模块,它是液晶显示器的核心部件,其包含液晶板和驱动电路。
其中,液晶屏是液晶显示器内部最为关键的部件,它对液晶显示器的性能和价格具有决定性的作用。
2.4.2IL19341控制器结构
液晶屏的控制芯片内部结构非常复杂,最主要的是位于中间GRAM(GraphicsRAM),可以理解为显存。
GRAM中每个存储单元都对应着液晶面板的一个像素点。
它右侧的各种模块共同作用把GRAM存储单元的数据转化成液晶面板的控制信号,使像素点呈现特定的颜色,而像素点组合起来则成为一幅完整的图像。
接口与MCU进行通讯,MUC通过8080接口与ILI9341进行通讯,从而访问它的控制寄存器(CR)、地址计数器(AC)、及GRAM。
2.4.3像素点的数据格式
图像的像素点是由红、绿、蓝三原色组成,三原色根据其深浅程度被分为0~255个级别,它们按不同比例的混合可以得出各种色彩。
ILI9341最高能够控制18位LCD,为了传输方便一般采用16位的控制模式。
2.4.4给整个屏幕上色
再次回到ILI9341_Init函数,它调用完ILI9341_REG_Config()初始化了液晶屏后,向ILI9341发送了一个命令——写GRAM内容,即后面发送的数据都被解析为显示到屏幕像素点的数据。
代码中使用for循环把语句ILI9341_Write_Data(GBLUE)执行了320*240次,即把所有像素点都显示为GBLUE颜色。
3.软件设计
3.1程序流程框图
图时间调整程序流程图
3.2字模的创建
使用字模III-增强版v3.91软件来制作中文字库。
打开软件,点击“自动批量生成字库”按钮选项,点击选择“二级汉字库”按钮。
在“源字体”选项里面做如下设置,需要注意的是大小问题,因为我们本次的设计目标是实现16*16的汉字,所以在此选择小四字体。
设置好之后如下点击“开始转换进程”按钮.就会在安装目录下或者你设置好的目录下生成.c后缀的字库文件。
对LCD显示来说,只要能够在指定的位置描写制定颜色的点,那么就能够很好地根据汉字字模信息来描写汉字。
在此,为了能够更好的清楚字模的取向和高低位的排列顺序,可以现先在pc测试刚才制作好的库文件。
回到“字模III-增强版v3.91”软件,采用与之前同样的方式生成bin格式的字库文件(即“生成格式”选项设置为“bin文件格式”)。
在软件安装目录下会生成Font.dat文件,我们用“WinHex”软件查看他的具体内容,与刚才制作的.c字库的文件内容是一致的。
最后将生成的汉字字库拷贝到SD卡根目录下并重命名为“HZLIB.bin”。
3.3程序的设计
一共三个任务:
主处理任务、触摸屏任务、秒更新任务。
voidApp_UCGUI_TaskCreate(void)
{
CPU_INT08Uos_err;
os_err=os_err;
Clock_SEM=OSSemCreate
(1);
//建立秒更新中断的信号量
//硬件平台初始化
BSP_Init();
//主处理任务---------------------------------------------------------
os_err=OSTaskCreateExt(AppTaskUserIF,
(void*)0,
(OS_STK*)&
AppTaskUserIFStk[APP_TASK_USER_IF_STK_SIZE-1],
APP_TASK_USER_IF_PRIO,
(OS_STK*)&
AppTaskUserIFStk[0],
APP_TASK_USER_IF_STK_SIZE,
OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);
//触摸屏任务---------------------------------------------------------
os_err=OSTaskCreateExt(AppTaskKbd,
(void*)0,
(OS_STK*)&
AppTaskKbdStk[APP_TASK_KBD_STK_SIZE-1],
APP_TASK_KBD_PRIO,
AppTaskKbdStk[0],
APP_TASK_KBD_STK_SIZE,
OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);
//秒更新任务
os_err=OSTaskCreateExt(Clock_Updata,
Clock_Updata_Stk[Clock_Updata_STK_SIZE-1],
Clock_Updata_PRIO,
Clock_Updata_Stk[0],
Clock_Updata_STK_SIZE,
}
万年历中的时间用的是STM32自带的RTC实时时钟。
3.4程序设计
3.4.1界面背景初始化。
staticvoidAppTaskUserIF(void*p_arg)
(void)p_arg;
INT8Uerr;
//界面初始化
GUI_Init();
//ucgui初始化
_ExecCalibration();
/*触摸屏校准*/
GUI_SetBkColor(GUI_WHITE);
//设置背景色
GUI_SetColor(GUI_GRAY);
//设置前景色
GUI_Clear();
//清屏
Lcd_show_bmp(0,0,"
/RTC.bmp"
);
//显示万年历背景
GUI_SetFont(&
GUI_FontHZ_SimSun_16);
GUI_DispStringAt("
一"
15,47);
//显示星期一
二"
44,47);
//显示星期二
三"
73,47);
//显示星期三
四"
102,47);
//显示星期四
五"
131,47);
//显示星期五
GUI_SetColor(GUI_RED);
//用红字显示周末
六"
160,47);
//显示星期六
日"
189,47);
//显示星期日
to_tm(RTC_GetCounter(),&
s_time);
//根据RTC时钟得到万年历时间的初值,注意,这个值是根据用户查询万年历变化
GUI_Font16_1);
//设置英文字体
GUI_DispDecAt(s_time.tm_year,4,13,4);
//显示万年历的年份
//设置中文字体
GUI_DispString("
年"
//显示年
GUI_DispDec(s_time.tm_mon,2);
//显示万年历的月份
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 万年历 设计