1、 片上系统片上系统技术技术课程设计课程设计 题 目: 数码管的显示 学 号: 姓 名: 班 级: 教 师: 日 期: 2 目录目录 一实验前的准备 . 3 二实验目的 3 三实验设备 3 四实验内容 3 五实验原理 3 六管脚分配 4 七实验步骤 4 八实验原理图: . 5 九实验程序代码: . 6 (1)CH452_I2C.h 代码 6 (2)Define.h 代码. 8 (3)key.h 代码. 10 (4)Key.c 代码. 10 (5)Seven_seg.c 代码. 12 十结果分析: . 15 十一个人体会与总结: 16 3 一一实验前的准备实验前的准备 打开实验箱开关,连接好 JT
2、AG 下载线,将开发平台上的 MODUL_SEL 组合开关 的 1、2、7 拨上,3、4、5、6、8 拨下,使两个共阳极数码管显示为 C2。 二二实验目的实验目的 (1)熟悉并学习运用 I2C 总线的读写方式。 (2)运用 CH452 芯片的数码管显示功能,熟悉两线制访问 CH452 芯片的工作原 理。 三三实验设备实验设备 硬件:PC 机 GX-CIDE-SOC/SOPC 综合创新开发实验平台 GX-CIDE-SOC/SOPC 综合创新开发实验平台核心板 软件:Quartus II 8.0 Nios II 8.0 四四实验内容实验内容 用七段数码管前三位显示 000-999,计数周期为 1s
3、;按 F1 进行加 1 操作并用数 码管显示。 按 F2 计数停止, 并显示当前数。 按 F3 进行减 1 操作; 当数从 000-999 时再加 1 变为 000;当数从 999-000 时再减 1 变为 999。 五五实验原理实验原理 根据 I2C 总线时序要求,对 CH452 进行操作,送地址,送控制字,送数据。数码 管显示是以 BCD 译码方式显示。 4 六六管脚分配管脚分配 七七实验步骤实验步骤 (1)打开 Quartus II 8.0,打开工程 cide_c2,进行 SOPC 操作,裁剪所需要的 内容,综合一下再分配管脚。 (2)启动 Nios II IDE 并新建一个空白 C/C
4、+工程,命名为 smm,在 SOPC Builder System 中选择之前建立好的硬件系统 cide_c2.ptf。 (3)转换工程路径,将提供的参考程序 seven_seg.c,CH452_I2C.h,define.h 5 加入到建立好的 Nios II 工程中,修改程序代码符合实验要求。 (4)在 System Library 设置页中,把程序和数据区都指定为 sdram。 (5)在 Quartus II 中下载文件,编译整个工程,查找语法错误。 (6)全速运行程序,按下按键观察数码管的显示。 八八实验原理图:实验原理图: 6 九九实验程序实验程序代码代码: (1 1)CH452_I2
5、C.hCH452_I2C.h 代码代码 #include “system.h“ #include “altera_avalon_pio_regs.h“ #include “alt_types.h“ #include “priv/alt_busy_sleep.h“ #include #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
6、); 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_ALT