嵌入式作业 |
20130080476 孙飞 |
软件工程 1班 |
2016-1-7 |
目录
2.6.1 delay(uint32_t time,uint8_t tm)22
一作业介绍:
作业要求:
通过一学期的学习,总结设计出万年历,能在屏幕上显示万年历并进行设置。实现时必须使用到考试用到的中断和定时器。
概要:
本作业使用的12864,通过中断实现设置时间,定时器定时进行更新时间,组成一个万年历,在主板显示屏上显示出来万年历,当前时间。
采用12864作为主控芯片,利用它定期的读取时钟芯片中的时间并显示在LCD上;通过算法得出阴历日期并显示在LCD。
定时单元:使用TIM3定时器,向上技术模式。计数5000次即500MS.通过一个全局变量作为分频后得到一秒的定时中断。
显示单元:采用LCD12864点阵显示,操作简单,成本低廉。这个实例采用了串口的方式实现显示,接口定义为:PB7—RST///PSB—PA4通过程序中的KEY.C文件中修改,更改接口后记得打开时钟。
选择LCD1602液晶显示模块。LCD1602是字符点阵系列液晶模块。它是一类专门用于显示字母、数字、符号等的点阵型液晶显示模块,
分为四位和八位数据传输方式,提供5*7点阵+光标和5*10点阵+
光标的显示模式。
对于程序的解释我在第二部分的代码都做了重要的注释,看起来应该比较简单。
项目的截图以及连线的部分在第三部分。
由于在平时实验以及最后考试中我们全都用过中断和定时器,就不详细介绍,全部通过代码和注释就能明白。
1.1主控单元和按键部分设计
1.2部分引脚设计
输入/输出引脚 P0.0~ P0.7、P1.0~P1.7、P2.0~ P2.7 和P3.0~P3.7
① P0端口(P0.0~ P0.7) P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。
②P1端口(P1.0~ P1.7) P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
③P2端口 (P2.0~P2.7) P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 ④P3端口(P3.0~P3.7) P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流
二项目实现:
2.1 主函数
/***********************************************************头文件名:main.c
201300800476 孙飞
使用说明:
将LCD12864的PSB与GND短接,RE--PB.12,RW--PB.13,E--PB.15;
将行列式键盘S1-S8依次与PD.00-PD.07连接好(S1-S4控制行,S5-S8控制列)
***********************************************************/
#include "stm32f10x.h"
#include "delay.h"
#include "rcc.h"
#include "stdio.h"
/*时间结构体*/
struct rtc_time systmtime;
/**
* @brief 主函数
* @param 无
* @retval 无
*/
/*主函数*/
int main(void)
{
lcd12864_init();/*初始化lcd,同中断中的初始化一样,不做详细解释。*/
delay(50,ms);//延时50毫秒