- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机数码晶体管000-999设计
片上系统技术课程设计
题 目: 数码管的显示
学 号: 200916022218
姓 名: 保昆
班 级: 电信092
教 师: 张明胜
2012年5月21日一.实验目的及设备 3
1.1实验目的 3
1.2 实验设备 3
二.实验原理及思路 3
2.1实验原理 3
2.2实验思路 3
三.实验准备及步骤 4
3.1实验准备 4
3.2实验步骤 4
四.实验内容 6
4.1实验原理图 6
4.2实验程序代码 7
(1)CH452_I2C.h代码 7
(2)Define.h代码 9
(3)key.h代码 11
(4)Key.c代码 11
(5)Seven_seg.c代码 13
4.3结果分析: 16
五 心得体会 16
一.实验目的及设备
1.1实验目的
(1)熟悉并学习运用I2C总线的读写方式。
(2)运用CH452芯片的数码管显示功能,熟悉两线制访问CH452芯片的工作原理。
1.2 实验设备
硬件:PC机
GX-CIDE-SOC/SOPC综合创新开发实验平台
GX-CIDE-SOC/SOPC综合创新开发实验平台核心板
软件:Quartus II 8.0
Nios II 8.0
二.实验原理及思路
2.1实验原理
根据I2C总线时序要求,对CH452进行操作,送地址,送控制字,送数据。数码管显示是以BCD译码方式显示。
2.2实验思路
用七段数码管前三位显示000-999,计数周期为1s;按F1进行加1操作并用数码管显示。按F2计数停止,并显示当前数。按F3进行减1操作;当数从000-999时再加1变为000;当数从999-000时再减1变为999。
三.实验准备及步骤
3.1实验准备
打开实验箱开关,连接好JTAG下载线,将开发平台上的MODUL_SEL组合开关的1、2、7拨上,3、4、5、6、8拨下,使两个共阳极数码管显示为C2。
3.2实验步骤
(1)打开Quartus II 8.0,打开工程cide_c2,进行SOPC操作,裁剪所需要的内容,综合一下在分配管脚。
图一 管脚分配
(2)启动Nios II IDE并新建一个空白C/C++工程,命名为bk,在SOPC Builder System中选择之前建立好的硬件系统cide_c2.ptf。
图二 器件选择
(3)转换工程路径,将提供的程序seven_seg.c,CH452_I2C.h,define.h加入到建立好的Nios II工程中,修改程序代码符合实验要求。
(4)在System Library设置页中,把程序和数据区都指定为sdram。
(5)在Quartus II中下载文件,编译整个工程,查找语法错误。
图三 下载界面
(6)全速运行程序,按下按键观察数码管的显示。
四.实验内容
4.1实验原理图
图四 原理图
4.2实验程序代码
(1)CH452_I2C.h代码
#include system.h
#include altera_avalon_pio_regs.h
#include alt_types.h
#include priv/alt_busy_sleep.h
#include stdio.h
#include sys/alt_irq.h
#include define.h
void CH452_I2c_Start_2(void) // 操作起始,两线制方式,SDA用做中断输出,使用以下两个函数
{
IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SDA_BASE, 1);
IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SCL_BASE, 1);
IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE, 1);
IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE, 1);
usleep(5);
IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE, 0);
usleep(5);
IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE, 0);
//usleep(3);
}
void CH452_I2c_Stop_2(void) // 操作结束
{
IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SDA_BASE, 1);
IOWR_ALTERA_AVALON_PIO
文档评论(0)