- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SOPC综合实验报告
基于SOPC的数字钟设计
学 院: 计控学院
班 级: 计本121
学 号: 2012021001
姓 名: 钟济强
指导老师: 张浩鹏
设计概述
用Nios II DE2开发板的LCD显示电子钟的日期和时间,LCD分两行显示,第一行显示年月日,第二行显示时分秒。用输入按钮BUTTON来控制LCD行修改,通过Nios II IDE进行软件设计。
设计要求
1.掌握Nios II系统的设计和使用方法;
2.学习通过Nios II IDE进行软件设计的方法;
3.实现在液晶屏上显示时间和日期,并可以对其进行设置。
实验环境
DE2 开发板
QuartusII 7.2
SOPC Builder 7.2
NiosII IDE 7.2
设计方案(总体设计、软件设计、硬件设计)
1. 总体设计要实现以下两个功能:
(1). 在液晶屏上显示时间,日期
(2). 对时间、日期能够进行设置
建立新工程clock
2. 硬件系统组成设计
根据系统要实现的功能和开发板配置,需要用到的DE2开发板上的外围器件有:
LCD:电子钟显示屏幕
按钮:电子钟设置功能键
CFI Flash存储器:存储软、硬件程序
SDRAM存储器:程序运行时将其导入SDRAM
根据所用到的外设和器件特性,在SOPC Builder中建立系统要添加的模块包括:NiosII CPU定时器,按键PIO,LCD, 外部存储器总线(Avalon三态桥),外部SDRAM控制器,外部Flash接口。
打开SOPC Buider,系统名称为sopc_clock
加入SDRAM组件
加入Flash Memory 组件
加入外部存储器总线(Avalon三态桥)
加入按键PIO
加入LCD
加入NiosII CPU定时器,选择标准型的
元件添加完后,要为每个外设分配及地址和中断请求优先级(IRQ),在System中选择Auto-Assign Base Address和Auto-Assign IRQs命令,这两个命令可分别简单分配外设基地址和中断优先级。然后生成Nios II系统。
然后生成顶层文件,将Nios II系统模块加入到顶层文件中,如图所示原理图
进行引脚锁定,并编译,然后进行硬件下载
3.软件系统设计
要实现系统所需的功能,大量的工作应该集中在软件设计和优化上。电子钟的软件功能主要分为显示、设置和时间算法三大部分。
显示部分的功能包括:显示时间(小时:分钟:秒)和 显示日期(年-月-日)
设置部分的功能包括:设置小时,设置分钟,设置年份,设置月份,设置日期和退出设置。
设置部分的程序主要用在对按键的响应。在编写程序前要对DE2开发板上的四个按键BUTTON功能进行如下分配:
(1). 主菜单
BUTTON0:设置选择键,可依次选择设置时、分、秒和年、月、日
BUTTON1:显示日期键
BUTTON2:显示时间键
(2). 子菜单(即进入对某个选项设置后的按键功能):
BUTTON1:选项数字增加
BUTTON2:选项数字减少
BUTTON3:退出对选项的设置,返回主菜单
时间算法部分的功能包括:时间累加和确定每个月的最大天数,使年、月、日能正确累加
软件代码
1.count_binary.c的代码:
#include count_binary.h
//程序每秒钟检测一次按钮的状态,对日期和时间进行设置
#include alt_types.h
#include stdio.h
#include string.h
#include unistd.h
#include system.h
#include sys/alt_irq.h
#include altera_avalon_pio_regs.h
#include lcd.h
volatile int edge_capture;
void LCD_Init()
{
//LCD初始化
lcd_write_cmd(LCD_BASE,0x38);
usleep(2000);
lcd_write_cmd(LCD_BASE,0x0C);
usleep(2000);
lcd_write_cmd(LCD_BASE,0x01);
usleep(2000);
lcd_write_cmd(LCD_BASE,0x06);
usleep(2000);
lcd_write_cmd(LCD_BASE,0x80);
usleep(2000);
}
void LCD_Show_Text(char*
您可能关注的文档
最近下载
- 北京市第四中学2024-2025学年高二上学期期中考试化学试卷(含答案).docx VIP
- 电动自行车用锂离子电池和电池组 技术规范.docx VIP
- 胃肠疾病的超声诊断答案-2025年度华医网继续教育.docx VIP
- 英文电影赏析(共46张精品课件).ppt VIP
- 人工智能在医疗行业的应用PPT .pptx
- 小学道德与法治五年级上册第四单元《骄人祖先-灿烂文化》整体教学设计.docx
- 坏死性筋膜炎.ppt
- 网络操作系统(Windows Server 2008)课件(共13单元)项目8、配置DNS服务器.ppt VIP
- 10S505柔性接口给水管道支墩图集.docx
- 一种用随机点尿来评估高血压患者每日食盐量的方法.pdf VIP
文档评论(0)