ARM课程设计数码管显示
基于ARM微处理器的数码管驱动设计

专业课程设计任务书学生姓名专业班级学号题目基于ARM微处理器的数码管驱动设计课题性质 A 课题来源 D 指导教师同组姓名主要内容1. 利用ARM微处理器实现数码管显示驱动;2. 能够显示0 1 2 3 4 5 6 7 8 9等数字,且循环显示;3. 通过按键改变循环显示速度。
任务要求1. 设计出具体电路,列出所用器件及布线图;2. 画出程序流程图,画出子程序或中断流程图;3. 说明系统工作原理,对系统进行调试;4. 写出课程设计报告。
参考文献1. 嵌入式系统有关教材;2. 电路设计手册;3. 其他资料。
审查意见指导教师签字:教研室主任签字:年月日基于ARM微处理器的数码管驱动设计一、设计要求1、利用ARM微处理器实现数码管显示驱动;2、能够显示0 1 2 3 4 5 6 7 8 9等数字,且循环显示;3、通过按键改变循环显示速度;二、设计方案本次试验选用的芯片为PXA270,使用的是PXA270集成试验箱。
基于Intel XScale架构的PXA270处理器,集成了存储单元控制器、时钟和电源控制器、DMA 控制器、LCD控制器、AC97控制器、I2S控制器、快速红外线通信 (FIR)控制器等外围控制器,可以实现丰富的外围接口功能。
其低电源运行模式以及动态电源管理技术可以有效的降低电源的功耗。
使用试验箱上的4X4的矩阵键盘作为输入,用来控制数码管显示的快慢速度,将需要输出的各个数码管状态从两个数码管中输出。
三、设计原理1、数码管结构七段数码管由8个发光二极管排列组成(包括小数点位)如下图所示:这8个独立的二极管通常被命名:a.b.c.d.e.f.g.h。
h表示小数点。
利用7段数码管能显示所有数字以及部分英文字母。
数码管有2种不同的形式:一种是8个发光二极管的阳极都连一起,成为共阳极8段数码管如图所示:共阳极8段数码管的8个发光二极管的正极一起接VCC,要控制数码管中的某一段亮,比如A段,只须要控制数码管的A脚为低电平就可以了,反之熄灭A段就控制A脚为高电平。
5_ARM实验报告

实验五数码管显示实验实验目的:通过实验掌握 LED 的显示控制方法;掌握对存储区进行访问的方法。
一.实验内容:编写程序使实验板上八段数码管循环显示0到9字符。
二.实验原理:1.八段数码管的结构八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母。
见图5-1-2。
图5-1-2 八段数码管的结构2八段数码管的硬件电路原理EMBEST ARM EDUKIT II教学电路中,使用的是共阳极八段数码管,数码管的控制通过芯片ZLG7290 控制,各段的控制信号是芯片ZLG7290 的SEGA ~SEG G 引脚控制,需要显示的段码通过IIC 总线传送到该芯片。
如图5-1-1、图5-1-2、图5-1-3所示。
图5-1-1 八段数码管控制电路图5-1-2 八段数码管控制电路3.八段数码管的类型八段数码管有两种不同的形式:一种是八个发光二极管的阳极都连在一起的,称之为共阳极八段数码管;另一种是八个发光二极管的阴极都连在一起的,称之为共阴极八段数码管。
工作原理以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,制信号为高电平时点亮。
电平信号按照dp→g→f→e……a的顺序组合形成的数据字称为该字符对应的段码,常用字的段码表如下:4.八段数码管的显示方式有两种,分别是静态显示和动态显示。
静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。
动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。
三.实验工具:硬件:Embest Arm EduKit II 实验平台,Embest ARM标准/增强型仿真器套件,PC机;软件:Embest IDE Pro 2004集成开发环境,Windows 98/2000/NT/XP操作系统。
西电ARM单片机实验报告

}
伴*************************************************************************
/* Function name :循环延时子程序
/* Description :循环'time'次
/* Return type : void
/* Argume nt
/* Function name :循环延时子程序
/* Description :循环'time'次
/* Return type : void
/* Argume nt
:循环延时计数器
/****************************************************************************/
结果:在六个数码管上依次显示“ HELLO ”,不可分辨出轮流显示 *4. 在每个数码管上递增显示 0-9。步骤同上。
程序如下:
******* /*/ * /*实验现象:数码管依次显示出 0、1,2、
******* */
void Test4_Seg7(void) { int i;
for(;;) {
本实验中,数码管采用共阳极类型,所以是给 0 亮,操作时,先给地址 0x20007000 的某位给 0,让指定的某位亮,然后给地址 0x20006000 送入编码好 的数据,即 seg7table 以此来实现让数码管显示指定的数。
实验二键盘输入实验
一、 实验目的
1、 学习键盘驱动原理; 2、掌握通过 CPU 的 I/O 扩展键盘的方法。
*((u8*)0x20006000)=seg7table[18]; delay(8000); *((u8*)0x20007000)=0x3e; *((u8*)0x20006000)=seg7table[19]; delay(8000); } }/**************************************************************************
数码管显示课程设计报告

目录一.实验前的准备 (2)二.实验目的 (2)三.实验设备 (2)四.实验内容 (3)五.实验原理 (3)六.管脚分配 (4)七.实验步骤 (4)八.实验原理图: (5)九.实验程序代码: (6)(1)CH452_I2C.h代码 (6)(2)Define.h代码 (8)(3)key.h代码 (9)(4)Key.c代码 (10)(5)Seven_seg.c代码 (12)十.结果分析: (15)十一.个人体会与总结: (16)一.实验前的准备打开实验箱开关,连接好JTAG下载线,将开发平台上的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.0Nios II 8.0四.实验内容用七段数码管前三位显示000-999,计数周期为1s;按F1进行加1操作并用数码管显示。
按F2计数停止,并显示当前数。
按F3进行减1操作;当数从000-999时再加1变为000;当数从999-000时再减1变为999。
五.实验原理根据I2C总线时序要求,对CH452进行操作,送地址,送控制字,送数据。
数码管显示是以BCD译码方式显示。
六.管脚分配七.实验步骤(1)打开Quartus II 8.0,打开工程cide_c2,进行SOPC操作,裁剪所需要的内容,综合一下再分配管脚。
(2)启动Nios II IDE并新建一个空白C/C++工程,命名为smm,在SOPC Builder System中选择之前建立好的硬件系统cide_c2.ptf。
(3)转换工程路径,将提供的参考程序seven_seg.c,CH452_I2C.h,define.h加入到建立好的Nios II工程中,修改程序代码符合实验要求。
arm的lcd课程设计

arm的lcd课程设计一、课程目标知识目标:1. 让学生掌握ARM架构中LCD控制器的基本原理及其在嵌入式系统中的应用。
2. 了解LCD显示原理,包括分辨率、像素、色彩等基本概念。
3. 掌握LCD接口技术,包括并行接口、串行接口及其通信协议。
技能目标:1. 培养学生运用所学知识,进行ARM平台LCD驱动程序编写的能力。
2. 能够分析和解决LCD显示过程中出现的问题,如显示异常、刷新率不足等。
3. 培养学生进行团队协作、沟通交流,共同完成项目任务。
情感态度价值观目标:1. 培养学生对嵌入式系统及LCD技术的兴趣,激发学习热情。
2. 培养学生具备良好的问题解决能力和创新思维,树立自信心。
3. 培养学生关注行业发展,了解国家战略需求,树立正确的价值观。
课程性质:本课程为实践性较强的课程,旨在让学生在掌握理论知识的基础上,提高实际操作能力。
学生特点:学生具备一定的嵌入式系统基础知识,对LCD技术有一定了解,但实际操作能力有待提高。
教学要求:结合课程性质、学生特点,注重理论与实践相结合,以项目为导向,培养学生的实际操作能力和团队协作能力。
通过课程目标的分解,将知识、技能、情感态度价值观目标融入教学过程中,实现学生全面、持续、和谐发展。
二、教学内容1. LCD基本原理:介绍LCD显示原理,包括液晶材料特性、像素结构、背光系统等,对应教材第3章。
2. ARM架构LCD控制器:讲解ARM架构中LCD控制器的结构、功能及工作原理,对应教材第4章。
3. LCD接口技术:介绍并行接口、串行接口(如SPI、I2C)等LCD接口技术及其通信协议,对应教材第5章。
4. LCD驱动程序编写:以实际项目为例,教授如何编写ARM平台下的LCD驱动程序,包括初始化、配置、刷新等,对应教材第6章。
5. LCD显示问题分析与解决:分析常见LCD显示问题,如显示异常、刷新率不足等,提供解决方案,对应教材第7章。
6. 项目实践:分组进行项目实践,让学生动手编写LCD驱动程序,解决实际问题,巩固所学知识。
单片机课程设计报告-4X4键盘两位数码管显示行与列

单片机及DSP课程设计报告专业:班级:姓名:学号:指导教师:时间:2012-06-11~24通信与电子工程学院一、单片机课程设计目的及内容通过本次课程设计进一步加强对所学单片机理论知识的运用,在设计过程中也对数字电路、模拟电路等课程的理论知识进行了复习。
此次课程设计可以使我们初步了解单片机系统设计的基本流程,即分析需求、设计原理图、选用元器件、布线、编程,最后进行调试。
另外在设计过程中通过对keil及PROTEUS等软件的使用,巩固了使用C语言进行编程的能力,以及对程序与单片机硬件系统的整合能力,使程序能够发挥其应有的控制作用。
总之,本次课程设计为我们提供了一次动手实践能力,使我们对系统开发有了大体了解,为将来工作增添了经验。
在本次课程设计中我选择了设计并实现4x4键盘接口,并在两位数码管上显示键盘所在行与列的题目。
使用4X4键盘与单片机I/O口进行连接,通过键盘扫描程序,识别是哪个键按下,并将其编码送入单片机,最终通过数码管进行显示。
二、硬件电路方案设计1、4X4键盘设计4x4键盘工作原理:每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线分别通过两并行接口和CPU通信。
键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。
键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。
两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
2、数码管显示电路设计数码管显示原理:动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
ARM课程设计报告(数字温度计的设计)

ARM课程设计报告(数字温度计的设计) 《嵌入式系统》课程设计报告题目:数字温度计的设计院(系):信息科学与工程学院专业班级:通信工程班学生姓名:詹文魁学号:指导教师:刘丽、韩洁老师2021年 05 月 26 日至2021 年 06 月 06 日华中科技大学武昌分校制嵌入式系统课程设计任务书一、设计(调查报告/论文)题目课题:数字温度计的设计二、设计(调查报告/论文)主要内容掌握DS18B20器件的读/写方法,把读写的温度通过串口传到PC机用超级终端(或串口助手)显示,把读取的温度用数码管显示或者点阵或者液晶屏进行显示。
三、原始资料开发板的原理图和实验参考程序,参考实验讲义和课设讲义。
四、要求的设计(调查/论文)成果 ? 使用实验板和温度传感器,实现一个数字温度计; ? 根据原理图完成实验方案的设计; ? 实时显示温度信息。
利用串口发送到上位机显示和利用数码管显示 ? 显示功能:①把读写的数据通过串口传到PC机用超级终端(或串口助手)显示,要求显示班级、姓名和学号;②如果用ARM7的开发板,要求把读取的温度值用数码管显示,其中能力强的同学可以通用点阵显示班级和学号;③如果用ARM9的开发板,要求用液晶屏显示班级姓名和学号,以及读取的温度值。
? 在实验完成的基础上完成课程设计报告的撰写,按照模板的格式书写,要求有软件流程图和调试过程。
五、进程安排时间 15周周一上午 15周周一下午 15周周二至周三内容课题讲解、选题软硬件准备、清理 11-602 实验楼402,403 地点课题分析、收集资料、完成设实验楼402,403,图书计方案馆实验楼402,403 实验楼402,403 实验楼402,403 15周周四至周五 16周周一至周三 16周周四 16周周五六、主要参考资料详细设计,编写代码系统调试成果验收整理文档,撰写提交课设报告实验楼402,403 [1] 下发的课程设计资料 [2] 刘彦文.嵌入式系统原理及接口技术 .北京:清华大学出版社,2021. 指导教师(签名): 20 年月日1 硬件资料Micro2440Micro2440 开发板由核心板Micro2440 和底板Micro2440SDK 组成,采用6层板设计,并用等长布线以满足电路信号完整性要求;为了方便拔插和引出更多的CPU 信号脚,采用“U”型排列插针,故我们也经常把它简称为“U”型核心板-U2440。
单片机课设数码管同时循环显示0-9

电子信息工程学院电子设计应用软件训练任务【训练任务】:1、熟练掌握PROTEUS软件的使用;2、按照设计要求绘制电路原理图;3、能够按要求对所设计的电路进行仿真;【基本要求及说明】:1、按照设计要求自行定义电路图纸尺寸;2、设计任务如下:利用51单片机、BCD译码芯片和两位LED构成一个数码管扫描显示系统,两个数码管同时循环显示0~9。
3、按照设计任务在Proteus 6 Professional中绘制电路原理图;4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。
【按照要求撰写总结报告】指导教师年月日负责教师年月日学生签字年月日成绩评定表摘要该专业是前沿学科,现代社会的各个领域及人们日常生活等都与电子信息技术有着紧密的联系。
全国各地从事电子技术产品的生产、开发、销售和应用的企事业单位很多,随着改革步伐的加快,这样的企事业单位会越来越多。
为促进市场经济的发展,培养一大批具有大专层次学历,能综合运用所学知识和技能,适应现代电子技术发展的要求,从事企事业单位与本专业相关的产品及设备的生产、安装调试、运行维护、销售及售后服务、新产品技术开发等应用型技术人才和管理人才是社会发展和经济建设的客观需要,市场对该类人才的需求越来越大。
为此电子信息工程专业的人才有着广泛的就业前景,毕业生可从事电子设备、信息系统和通信系统的研究、设计、制造、应用和开发工作。
目录一、任务说明 (1)1.1 专业介绍 (1)1.2 专业背景与市场预测 (1)1.3 本课题分析 (1)二、绘制原理图 (2)2.1 Proteus软件介绍 (2)2.2 原理图绘制说明 (2)2.3 原理图绘制步骤 (3)三、程序编译说明及程序流程图 (6)3.1 Main程序说明 (6)3.2 初始化子程序说明 (6)3.3 display(uchar tmp)子程序说明 (7)3.4 延时子程序说明 (8)3.5 中断子程序说明 (9)四、Proteus仿真说明 (11)4.1 导入仿真文件 (11)4.2 进行仿真 (12)五、课程设计体会及合理化建议 (14)致谢 (16)一、任务说明1.1专业介绍电子信息工程是一门应用计算机等现代化技术进行电子信息控制和信息处理的学科,主要研究信息的获取与处理,电子设备与信息系统的设计、开发、应用和集成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录一、设计内容 (2)1.1实验目的 (2)1.2实验设备 (2)二、设计原理 (2)2.1 八段数码管 (2)2.2 电路原理 (3)三、操作步骤 (4)四、程序代码 (5)五、心得体会 (12)ARM数码管显示一、设计内容1.1实验目的掌握LED 的显示控制方法。
巩固对存储区进行访问的方法。
1.2实验设备硬件:Embest Arm EduKit II实验平台,Embest ARM标准/增强型仿真器套件,PC机。
软件:Embest IDE Pro 2004集成开发环境,Windows 98/2000/NT/XP。
二、设计原理2.1 八段数码管嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。
结构:八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数用,八段数码管能显示所有数字及部份英文字母。
见图类型:八段数码管有两种不同的形式:一种是八个发光二极管的阳极都连在一起的,称之为共阳极八段数码管;另一种是八个发光二极管的阴极都连在一起的,称之为共阴极八段数码管。
工作原理:以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。
显示方式:八段数码管的显示方式有两种,分别是静态显示和动态显示。
静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。
动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。
2.2 电路原理EMBEST ARM EDUKIT II教学电路中,使用的是共阳极八段数码管,数码管的控制通过芯片ZLG7290控制,各段的控制信号是芯片ZLG7290的SEGA~SEGG引脚控制,需要显示的段码通过IIC总线传送到该芯片,见图。
八段数码管控制电路八段数码管控制电路三、操作步骤1.准备实验环境使用Embest仿真器连接目标板,使用Embest Arm EduKit II实验板附带的串口线,连接实验板上的UART0和PC机的串口。
2.串口接收设置在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。
3.打开实验例程1)使用Embest IDE通过Embest JTAG仿真器连接实验板,打开实验例程目录4.6_8led_test子目录下的8led_test.ews例程,编译链接工程成功;2)点击IDE的Debug菜单,选择Remote Connect项或F8键,远程连接目标板;3)点击IDE的Debug菜单,选择Download下载调试代码到目标系统的RAM中;4)在“8LED_test ();”设置断点后,点击Debug菜单的Go或F5键运行程序。
4.观察实验结果1).在PC机上观察超级终端程序主窗口,可以看到如下界面:Embest Arm EduKit II Evaluation Board8-segment Digit LED Test Example (Please look at LED)2).实验系统八段数码管循环显示0 ~ F字符。
四、程序代码Main:/****************************************************************************** **************** File:main.c* Author: embest* Desc:c main entry* History:****************************************************************************** ***************/#include "44blib.h"#include "44b.h"/*------------------------------------------------------------------------------------------*//* extern function*//*------------------------------------------------------------------------------------------*/extern void led8_test();/*------------------------------------------------------------------------------------------*//* function declare*//*------------------------------------------------------------------------------------------*/void Main(void);/****************************************************************************** **************** name: main* func: c code entry* para: none* ret: none* modify:* comment:****************************************************************************** ***************/void Main(void){sys_init(); /* Initial 44B0X's Interrupt,Port and UART */uart_printf("\n\r Embest Arm EduKit II Evaluation Board");uart_printf("\n\r 8-segment Digit LED Test Example (Please look at LED)\n");led8_test();while(1);}Iic:/****************************************************************************** **************** File:iic.c* Author: embest* Desc:iic source code* History:****************************************************************************** ***************/#include "44b.h"#include "44blib.h"#include "def.h"#include "iic.h"/*------------------------------------------------------------------------------------------*//* global variables*//*------------------------------------------------------------------------------------------*/int f_nGetACK;/*------------------------------------------------------------------------------------------*//* function declare*//*------------------------------------------------------------------------------------------*/void iic_int(void);void iic_init(void);void iic_write(UINT32T unSlaveAddr, UINT32T unAddr, UINT8T ucData);void iic_read(UINT32T unSlaveAddr, UINT32T unAddr, UINT8T *pData);/****************************************************************************** **************** name: iic_init* func: initialize iic* para: none* ret: none* modify:* comment:****************************************************************************** **************/void iic_init(void){f_nGetACK = 0;// Enable interruptrINTMOD = 0x0;rINTCON = 0x1;rINTMSK = rINTMSK & (~(BIT_GLOBAL|BIT_IIC));pISR_IIC= (unsigned)iic_int;// Initialize iicrIICADD = 0x10; // S3C44B0X slave addressrIICCON = 0xe5; // Enable ACK, interrupt,IICCLK=MCLK/512, Enable ACK//64Mhz/512/(15+1) = 8KhzrIICSTAT= 0x10; // Enable TX/RX}/****************************************************************************** **************** name: iic_write* func: write data to iic* para: unSlaveAddr --- input, chip slave address* unAddr --- input, data address* ucData --- input, data value* ret: none* modify:* comment:****************************************************************************** **************/void iic_write(UINT32T unSlaveAddr,UINT32T unAddr,UINT8T ucData){f_nGetACK = 0;// Send control byterIICDS = unSlaveAddr; // 0xa0rIICSTAT = 0xf0; // Master Tx,Startwhile(f_nGetACK == 0); // Wait ACKf_nGetACK = 0;// Send addressrIICDS = unAddr;rIICCON = 0xe5; // Resumes IIC operation.while(f_nGetACK == 0); // Wait ACKf_nGetACK = 0;// Send datarIICDS = ucData;rIICCON = 0xe5; // Resumes IIC operation.while(f_nGetACK == 0); // Wait ACKf_nGetACK = 0;// End sendrIICSTAT = 0xd0; // Stop Master Tx conditionrIICCON = 0xe5; // Resumes IIC operation.while(rIICSTAT & 0x20 == 1); // Wait until stop condtion is in effect.}/****************************************************************************** **************** name: iic_read* func: read data from iic* para: unSlaveAddr --- input, chip slave address* unAddr --- input, data address* pData --- output, data pointer* ret: none* modify:* comment:****************************************************************************** **************/void iic_read(UINT32T unSlaveAddr,UINT32T unAddr,UINT8T *pData){char cRecvByte;f_nGetACK = 0;// Send control byterIICDS = unSlaveAddr; // Write slave address to IICDSrIICSTAT = 0xf0; // Master Tx,Startwhile(f_nGetACK == 0); // Wait ACKf_nGetACK = 0;// Send addressrIICDS = unAddr;rIICCON = 0xe5; // Resumes IIC operation.while(f_nGetACK == 0); // Wait ACKf_nGetACK = 0;// Send control byterIICDS = unSlaveAddr; // 0xa0rIICSTAT = 0xb0; // Master Rx,StartrIICCON = 0xe5; // Resumes IIC operation.while(f_nGetACK == 0); // Wait ACKf_nGetACK = 0;// Get datarIICCON = 0x65;while(f_nGetACK == 0); // Wait ACKf_nGetACK = 0;cRecvByte = rIICDS;/* End receive */rIICSTAT = 0x90; // Stop Master Rx conditionrIICCON = 0xe5; // Resumes IIC operation.while(rIICSTAT & 0x20 == 1); // Wait until stop condtion is in effect.*pData = cRecvByte;}/****************************************************************************** **************** name: iic_int* func: IIC interrupt handler* para: none* ret: none* modify:* comment:****************************************************************************** **************/void iic_int(void){rI_ISPC=BIT_IIC;f_nGetACK = 1;}8led:/****************************************************************************** **************** File:8led.c* Author: embest* Desc:8-segment digit LED control functions* History:****************************************************************************** ***************/#include "44b.h"#include "44blib.h"#include "def.h"#include "iic.h"/*------------------------------------------------------------------------------------------*//* global variables*//*------------------------------------------------------------------------------------------*/unsigned char f_szDigital[10] ={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6}; // 0 ~ 9/*------------------------------------------------------------------------------------------*//* function declare*//*------------------------------------------------------------------------------------------*/void led8_test(void);/****************************************************************************** **************** name: led8_test* func: test 8led* para: none* ret: none* modify:* comment:****************************************************************************** **************/void led8_test(void){int i, j, k;iic_init();for(;;){for(j=0; j<10; j++){for(i=0; i<8; i++){k = 9-(i+j)%10;iic_write(0x70, 0x10+i, f_szDigital[k]);}delay(1000);}}}五、心得体会回顾此次课程设计,让我感慨颇多,从理论到实践,我学到了很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容。