您当前的位置: 首页 >  fpga开发

正点原子

暂无认证

  • 1浏览

    0关注

    382博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【正点原子FPGA连载】第三十二章RTC实时时钟LCD显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

正点原子 发布时间:2021-11-05 16:19:57 ,浏览量:1

1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-300792-1-1.html 3)对正点原子FPGA感兴趣的同学可以加群讨论:994244016 4)关注正点原子公众号,获取最新资料更新 在这里插入图片描述

第三十二章RTC实时时钟LCD显示实验

我们在“RTC实时时钟数码管显示实验”中成功的在数码管上显示了日期和时间。本章我们在“RTC实时时钟数码管显示实验”的基础上稍作修改,在LCD屏上显示日期和时间。 本章包括以下几个部分:

3131.1简介 31.2实验任务 31.3硬件设计 31.4程序设计 31.5下载验证

32.1简介 我们在“RTC实时时钟数码管显示实验”中对PCF8563实时时钟芯片作了详细的介绍,如果大家对这部分内容不是很熟悉的话,请参考“RTC实时时钟数码管显示实验”中的简介部分。 32.2实验任务 本节的实验任务是通过新起点开发板上的PCF8563实时时钟芯片,在RGB-LCD液晶屏上显示日期和时间。 32.3硬件设计 PCF8563部分的硬件设计原理在“RTC实时时钟数码管实验”中已作了详细的介绍,请参考“RTC实时时钟数码管实验”中的硬件设计部分。 32.4程序设计 根据实验任务,我们可以大致规划出系统的控制流程:首先通过I2C总线向PCF8563写入初始日期值(年月日)和时间值(时分秒),然后不断地读取日期和时间数据,并将读到的时间数据显示到LCD上。由此画出系统的功能框图如下图所示: 在这里插入图片描述

图 32.4.1 系统框图 由系统框图可知,FPGA顶层模块例化了以下三个模块、分别是IIC驱动模块(i2c_dri)、PCF8563控制模块(pcf8563_ctrl)以及LCD字符显示模块(lcd_disp_char)。 各模块端口及信号连接如下图所示: 在这里插入图片描述

图 32.4.2 顶层模块原理图 PCF8563控制模块通过调用IIC驱动模块来实现对PCF8563实时时钟数据的配置和读取;并将读到的值(年、月、日、时、分和秒)输出给LCD字符显示模块来显示。 顶层模块主要完成对其余模块的例化,其中I2C驱动模块(i2c_dri)程序与“EEPROM读写实验”章节中的IIC驱动模块(i2c_dri)程序完全相同,有关IIC驱动模块的详细介绍请大家参考“EEPROM读写实验”。pcf8563控制模块(pcf8563_ctrl)与“RTC实时时钟数码管显示实验”章节中的pcf8563控制模块完全相同,此处不再赘述。 LCD字符显示模块(lcd_disp_char)的代码由“RGB-LCD字符和图片显示”实验的代码修改而来,除lcd_disp_char顶层模块外,唯一不同的地方在LCD显示模块。 LCD显示模块的代码如下所示:

1   module lcd_display(
2       input                lcd_pclk ,
3       input                rst_n ,
4       
5       //日历数据
6       input         [7:0]  sec,        //秒
7       input         [7:0]  min,        //分
8       input         [7:0]  hour,       //时
9       input         [7:0]  day,        //日
10      input         [7:0]  mon,        //月
11      input         [7:0]  year,       //年
12      
13      //LCD数据接口
14      input        [10:0]  pixel_xpos, //像素点横坐标
15      input        [10:0]  pixel_ypos, //像素点纵坐标
16      output  reg  [15:0]  pixel_data  //像素点数据
17  );
18  
19  //parameter define
20  localparam CHAR_POS_X_1  = 11'd1;  //第1行字符区域起始点横坐标
21  localparam CHAR_POS_Y_1  = 11'd1;  //第1行字符区域起始点纵坐标
22  localparam CHAR_POS_X_2  = 11'd17; //第2行字符区域起始点横坐标
23  localparam CHAR_POS_Y_2  = 11'd17; //第2行字符区域起始点纵坐标
24  localparam CHAR_WIDTH_1  = 11'd80; //第1行字符区域的宽度,第1行共10个字符(加空格)
25  localparam CHAR_WIDTH_2  = 11'd64; //第2行字符区域的宽度,第2行共8个字符(加空格)
26  localparam CHAR_HEIGHT   = 11'd16; //单个字符的高度
27  localparam WHITE  = 16'hffff;    //背景色,白色
28  localparam BLACK  = 16'h0000;    //字符颜色,黑色
29  
30  //reg define
31  reg  [127:0]  char  [9:0] ;        //字符数组
32  
33  //*****************************************************
34  //**                    main code
35  //*****************************************************
36  
37  //字符数组初始值,用于存储字模数据(由取模软件生成,单个数字字体大小:16*8)
38  always @(posedge lcd_pclk ) begin
39      char[0]             
关注
打赏
1665308814
查看更多评论
0.0436s