DSP课程设计报告
dsp简单课程设计

dsp简单课程设计一、教学目标本课程旨在让学生了解和掌握DSP(数字信号处理器)的基本原理和应用,培养学生对DSP技术的兴趣和热情。
知识目标:使学生掌握DSP的基本概念、工作原理和主要性能指标;了解DSP 在不同领域的应用,如通信、音视频处理、工业控制等。
技能目标:通过实践操作,培养学生使用DSP芯片进行程序设计和系统应用的能力;使学生能够运用DSP技术解决实际问题,提高创新能力。
情感态度价值观目标:培养学生对新技术的敏感度,增强其对DSP技术的自信心和责任感;激发学生对电子科技和自动化的兴趣,培养其积极向上的学习态度。
二、教学内容本课程的教学内容主要包括DSP的基本原理、DSP芯片的结构与工作原理、DSP程序设计方法和DSP应用实例。
1.DSP基本原理:介绍DSP的定义、分类和发展历程,使学生了解DSP技术的基本概念。
2.DSP芯片结构与工作原理:详细讲解DSP芯片的内部结构、工作原理和主要性能指标,以便学生能够深入理解DSP的运作方式。
3.DSP程序设计方法:教授DSP的编程语言、程序设计流程和调试技巧,使学生具备实际的编程能力。
4.DSP应用实例:分析DSP技术在通信、音视频处理、工业控制等领域的应用实例,帮助学生了解DSP技术的广泛应用。
三、教学方法为了提高教学效果,本课程将采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
1.讲授法:通过教师的讲解,使学生掌握DSP的基本原理和应用。
2.讨论法:学生就DSP技术的相关问题进行讨论,培养学生的思考能力和团队协作精神。
3.案例分析法:分析DSP技术在实际应用中的案例,帮助学生更好地理解DSP技术的价值和应用前景。
4.实验法:安排学生进行DSP实验,锻炼学生的动手能力,提高其对DSP技术的实际应用能力。
四、教学资源为了保证教学效果,我们将准备以下教学资源:1.教材:选用权威、实用的DSP教材,为学生提供系统、全面的学习资料。
2.参考书:提供相关的DSP技术参考书籍,丰富学生的知识储备。
dsp综合设计课程设计报告

dsp综合设计课程设计报告一、教学目标本课程的教学目标是使学生掌握DSP(数字信号处理器)综合设计的基本理论和实践技能。
通过本课程的学习,学生应能够:1.知识目标:理解DSP的基本概念、原理和应用;熟悉DSP芯片的内部结构和编程方法;掌握DSP算法的设计和实现。
2.技能目标:能够使用DSP芯片进行数字信号处理的设计和实现;具备DSP程序的编写和调试能力;能够进行DSP系统的故障诊断和优化。
3.情感态度价值观目标:培养学生对DSP技术的兴趣和热情,提高学生的问题解决能力和创新意识,使学生认识到DSP技术在现代社会中的重要性和应用价值。
二、教学内容本课程的教学内容主要包括DSP的基本理论、DSP芯片的内部结构和工作原理、DSP程序的设计和调试方法、DSP应用系统的设计和实现等。
具体包括以下几个部分:1.DSP的基本概念和原理:数字信号处理的基本概念、算法和特点;DSP芯片的分类和特点。
2.DSP芯片的内部结构:了解DSP芯片的内部结构和工作原理,包括CPU、内存、接口、外设等部分。
3.DSP程序的设计和调试:学习DSP程序的设计方法,包括算法描述、程序编写和调试技巧。
4.DSP应用系统的设计和实现:掌握DSP应用系统的设计方法,包括系统架构、硬件选型、软件开发和系统测试等。
三、教学方法为了实现本课程的教学目标,我们将采用多种教学方法,包括讲授法、案例分析法、实验法等。
具体方法如下:1.讲授法:通过教师的讲解,使学生掌握DSP的基本理论和原理,引导学生理解DSP技术的核心概念。
2.案例分析法:通过分析具体的DSP应用案例,使学生了解DSP技术的实际应用,培养学生的实际操作能力。
3.实验法:通过实验操作,使学生熟悉DSP芯片的使用方法和编程技巧,提高学生的实践能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选择一本合适的教材,作为学生学习的基础资料,提供系统的DSP知识。
dsp课程设计实验报告

DSP课程设计实验语音信号的频谱分析:要求首先画出语音信号的时域波形, 然后对语音信号进行频谱分析。
在MATLAB中, 可以利用函数fft对信号进行快速傅立叶变换, 得到信号的频谱特性, 从而加深对频谱特性的理解。
其程序为:>> [y,fs,bits]=wavread('I:\xp.wav',[1024 5120]);>> sound(y,fs,bits);>> Y=fft(y,4096);>> subplot(221);plot(y);title('原始信号波形');>> subplot(212);plot(abs(Y));title('原始信号频谱');程序运行结果为:设计数字滤波器和画出频率响应:根据语音信号的特点给出有关滤波器的性能指标:低通滤波器性能指标, =1000Hz, =1200Hz, =100dB, =1dB;高通滤波器性能指标, =4800Hz, =5000Hz, =100dB, =1dB;带通滤波器性能指标, =1200Hz, =3000Hz, =1000Hz, =3200Hz, =100dB, =1dB;要求学生首先用窗函数法设计上面要求的三种滤波器, 在MATLAB中, 可以利用函数firl 设计FIR滤波器;然后再用双线性变换法设计上面要求的三种滤波器, 在MA TLAB中, 可以利用函数butte、cheby1和ellip设计IIR滤波器;最后, 利用MATLAB中的函数freqz画出各种滤波器的频率响应, 这里以低通滤波器为例来说明设计过程。
低通:用窗函数法设计的低通滤波器的程序如下:>> fp=1000;fc=1200;As=100;Ap=1;fs=22050;>> wc=2*fc/fs;wp=2*fp/fs;>> N=ceil((As-7.95)/(14.36*(wc-wp)/2))+1;>> beta=0.1102*(As-8.7);>> Win=Kaiser(N+1,beta);>>b=firl(N,wc,Win);>>freqz(b,1,512,fs);程序运行结果:这里选用凯泽窗设计, 滤波器的幅度和相位响应满足设计指标, 但滤波器长度(N=708)太长, 实现起来很困难, 主要原因是滤波器指标太苛刻, 因此, 一般不用窗函数法设计这种类型的滤波器。
dsp大学课程设计

dsp大学课程设计一、教学目标本课程的教学目标旨在帮助学生掌握数字信号处理(DSP)的基本理论、算法和实现方法。
通过本课程的学习,学生应能够:1.知识目标:–理解数字信号处理的基本概念、原理和数学基础。
–熟悉常用的数字信号处理算法,如傅里叶变换、离散余弦变换、快速算法等。
–掌握DSP芯片的基本结构、工作原理和编程方法。
2.技能目标:–能够运用DSP算法进行实际问题的分析和解决。
–具备使用DSP开发工具和实验设备进行软硬件调试的能力。
–能够编写DSP程序,实现数字信号处理算法。
3.情感态度价值观目标:–培养学生的创新意识和团队合作精神,提高解决实际问题的能力。
–增强学生对DSP技术的兴趣和热情,为学生进一步深造和职业发展奠定基础。
二、教学内容本课程的教学内容主要包括以下几个方面:1.数字信号处理基础:包括信号与系统的基本概念、离散信号处理的基本算法等。
2.离散余弦变换和傅里叶变换:离散余弦变换(DCT)和快速傅里叶变换(FFT)的原理和应用。
3.数字滤波器设计:低通、高通、带通和带阻滤波器的设计方法和应用。
4.DSP芯片和编程:DSP芯片的基本结构、工作原理和编程方法,包括C语言和汇编语言编程。
5.实际应用案例:包括音频处理、图像处理、通信系统等领域的实际应用案例分析。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式:1.讲授法:通过教师的讲解,使学生掌握数字信号处理的基本概念和原理。
2.讨论法:通过分组讨论和课堂讨论,培养学生的思考能力和团队合作精神。
3.案例分析法:通过分析实际应用案例,使学生了解数字信号处理在工程中的应用。
4.实验法:通过实验操作,使学生掌握DSP芯片的基本编程方法和实验技能。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:《数字信号处理》(或其他指定教材)。
2.参考书:提供相关的参考书籍,供学生自主学习和深入研究。
3.多媒体资料:制作课件、教学视频等,以丰富教学手段和提高学生的学习兴趣。
DSP课程设计报告之混响

DSP课程设计报告之混响一、课程目标知识目标:1. 学生能理解混响的概念,掌握混响的物理原理和数学模型。
2. 学生能描述混响在数字信号处理(DSP)中的应用,如音乐制作、声音效果增强等。
3. 学生能解释混响参数对声音效果的影响,如混响时间、湿度、大小等。
技能目标:1. 学生能运用所学知识,使用DSP软件(如Audacity、MATLAB等)进行混响效果的实现和调整。
2. 学生能通过实验和案例分析,分析混响在音频处理中的实际应用,提高解决问题的能力。
情感态度价值观目标:1. 学生通过混响的学习,培养对声音美学的认识和鉴赏能力,提高对音乐和声音艺术的兴趣。
2. 学生在学习过程中,培养合作意识,学会倾听他人意见,提高团队协作能力。
3. 学生通过了解混响在生活中的应用,认识到科技与生活的紧密联系,增强学以致用的意识。
课程性质:本课程为高年级选修课程,以理论讲解和实践操作相结合的方式进行。
学生特点:学生具备一定的数字信号处理基础,对声音处理有一定了解,具有较强的学习能力和动手能力。
教学要求:注重理论与实践相结合,通过案例分析和实验操作,使学生掌握混响的相关知识,提高实际应用能力。
同时,关注学生的情感态度培养,激发学生的学习兴趣和团队合作意识。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 理论部分:- 混响的定义与分类:介绍混响的基本概念,包括自然混响和人工混响,以及混响的类别。
- 混响的物理原理:讲解声音在空间中的传播、反射、吸收等原理,分析影响混响效果的因素。
- 混响的数学模型:介绍混响的常见数学模型,如卷积模型、参数模型等,并分析其优缺点。
2. 实践部分:- 混响效果器的使用:结合教材,教授学生如何使用Audacity、MATLAB等软件中的混响效果器。
- 混响参数调整:指导学生通过调整混响时间、湿度、大小等参数,实现不同混响效果。
- 实践案例:分析实际案例,如音乐作品中的混响处理,使学生更好地理解混响在音频处理中的应用。
dsp交通等课程设计报告

dsp交通等课程设计报告一、课程目标知识目标:1. 让学生理解交通信号灯的基本原理,掌握数字信号处理(DSP)技术在交通控制中的应用。
2. 使学生掌握交通流量的基本概念,学会分析交通数据,并运用DSP技术进行优化处理。
3. 帮助学生了解我国交通法规及交通信号控制的相关知识。
技能目标:1. 培养学生运用DSP技术进行交通信号灯控制程序编写的能力。
2. 培养学生运用数据分析方法,对交通流量进行有效监控和优化调整的能力。
3. 提高学生的实践操作能力,学会使用相关软件和硬件进行交通信号控制系统的设计和调试。
情感态度价值观目标:1. 培养学生关注社会交通问题,树立解决实际问题的责任感和使命感。
2. 激发学生对数字信号处理技术的兴趣,提高学生主动学习的积极性。
3. 培养学生的团队协作意识,学会与他人共同探讨、解决问题。
本课程针对年级特点,结合实际交通问题,以数字信号处理技术为载体,旨在提高学生的理论知识水平、实践操作能力以及解决实际问题的能力。
课程目标具体、可衡量,为后续教学设计和评估提供明确方向。
二、教学内容本章节教学内容主要包括以下三个方面:1. 交通信号灯原理及DSP技术基础- 教材章节:第一章 交通信号灯原理;第二章 DSP技术概述- 内容安排:介绍交通信号灯的基本原理、功能及分类;讲解DSP技术的基本概念、发展历程及其在交通控制领域的应用。
2. 交通流量分析及DSP技术应用- 教材章节:第三章 交通流量分析;第四章 DSP技术在交通控制中的应用- 内容安排:分析交通流量的基本特性,讲解数据采集、处理和优化方法;探讨DSP技术在交通信号控制、拥堵缓解等方面的应用实例。
3. 交通信号控制系统设计与实践- 教材章节:第五章 交通信号控制系统设计;第六章 实践操作- 内容安排:介绍交通信号控制系统的设计原理、硬件和软件选型;指导学生进行交通信号控制程序编写,开展实践操作,培养实际动手能力。
教学内容安排和进度:本章节共计12课时,分配如下:- 第1-4课时:交通信号灯原理及DSP技术基础- 第5-8课时:交通流量分析及DSP技术应用- 第9-12课时:交通信号控制系统设计与实践教学内容具有科学性和系统性,结合教材章节和实际案例,旨在帮助学生掌握交通信号控制相关知识,提高实践操作能力。
dsp课程设计报告方波

dsp课程设计报告方波一、教学目标本课程的教学目标是使学生掌握方波信号的性质、产生方法和应用,能够运用数字信号处理理论分析和设计方波信号处理电路,培养学生的理论联系实际的能力和创新意识。
具体分解为以下三个目标:1.知识目标:(1)掌握方波信号的定义、特点和分类。
(2)了解方波信号产生的方法,能够运用相关算法生成方波信号。
(3)熟悉方波信号在数字信号处理中的应用领域,如通信、雷达、音频处理等。
2.技能目标:(1)能够运用数学方法分析方波信号的波形、频率、幅值等参数。
(2)掌握至少一种编程语言,能够实现方波信号的生成和处理算法。
(3)具备一定的实验操作能力,能够通过实验验证方波信号处理的理论。
3.情感态度价值观目标:(1)培养学生对数字信号处理的兴趣,增强学习的主动性。
(2)培养学生团队合作精神,提高沟通与协作能力。
(3)培养学生关注国家发展战略,认识数字信号处理在科技前沿和国家经济建设中的重要地位。
二、教学内容本课程的教学内容主要包括以下几个部分:1.方波信号的基本概念:介绍方波信号的定义、特点和分类,使学生了解方波信号在数字信号处理中的重要性。
2.方波信号的产生方法:讲解方波信号产生的原理,介绍常见的方波信号生成算法,如查表法、计数器法等。
3.方波信号的处理方法:分析方波信号的处理方法,如滤波、采样、量化等,使学生掌握方波信号处理的基本技巧。
4.方波信号处理的应用:介绍方波信号在通信、雷达、音频处理等领域的应用,提高学生的实践能力。
5.实验与实践:安排一定数量的实验,使学生在实践中掌握方波信号处理的理论,培养学生的动手能力。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:教师讲解方波信号的基本概念、产生方法、处理方法和应用,引导学生掌握课程的核心知识。
2.讨论法:学生分组讨论方波信号处理的问题,培养学生的思考能力和团队合作精神。
3.案例分析法:分析实际案例,使学生了解方波信号处理在实际工程中的应用,提高学生的实践能力。
DSP实验报告(综合)

实验报告||实验名称 D SP课内系统实验课程名称DSP系统设计||一、实验目的及要求1. 掌握用窗函数法设计FIR数字滤波器的原理和方法。
熟悉线性相位FIR 数字滤波器特性。
了解各种窗函数对滤波器特性的影响。
2. 掌握设计IIR数字滤波器的原理和方法。
熟悉IIR数字滤波器特性。
了解IIR数字滤波器的设计方法。
3.掌握自适应数字滤波器的原理和实现方法。
掌握LMS自适应算法及其实现。
了解自适应数字滤波器的程序设计方法。
4.掌握直方图统计的原理和程序设计;了解各种图像的直方图统计的意义及其在实际中的运用。
5.了解边缘检测的算法和用途,学习利用Sobel算子进行边缘检测的程序设计方法。
6.了解锐化的算法和用途,学习利用拉普拉斯锐化运算的程序设计方法。
7.了解取反的算法和用途,学习设计程序实现图像的取反运算。
8.掌握直方图均衡化增强的原理和程序设计;观察对图像进行直方图均衡化增强的效果。
二、所用仪器、设备计算机,dsp实验系统实验箱,ccs操作环境三、实验原理(简化)FIR:有限冲激响应数字滤波器的基础理论,模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
数字滤波器系数的确定方法。
IIR:无限冲激响应数字滤波器的基础理论。
模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
数字滤波器系数的确定方法。
、自适应滤波:自适应滤波器主要由两部分组成:系数可调的数字滤波器和用来调节或修正滤波器系数的自适应算法。
e(n)=z(n)-y(n)=s(n)+d(n)-y(n)直方图:灰度直方图描述了一幅图像的灰度级内容。
灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标是该灰度出现的频率(像素个数与图像像素总数之比)。
图像边缘化:所谓边缘(或边沿)是指其周围像素灰度有阶跃变化。
经典的边缘提取方法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘临近一阶或二阶方向导数变化规律,用简单的方法检测边缘。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告书设计题目:键盘控制交通灯及液晶显示课程名称: DSP芯片的原理与开发应用系部:生物医学工程专业:医疗仪器指导老师:刘毅飞组成员:杨高(090921012)郭小敏(090921053)杨思路(090921088)2012年6月16日一、实验目的:用DES3200实验箱实现键盘控制交通灯,数码管显示交通灯的时间,液晶显示器显示车辆通行情况。
可以用键盘按键键入任意值作为交通灯的主干道东西方向和次干道南北方向的时间。
二、设计要达到的要求1、东西、南北各三个灯(红、黄、绿);2、东西、南北两向各有倒计时功能(数码管显示);3、a,b,c,d分别为键盘输入值;(1)东西绿灯、南北红灯,延时(10*a+b)秒(2)东西绿灯闪烁、南北红灯(3秒)(3)东西黄灯闪烁、南北红灯(3秒)(4)东西红灯、南北绿灯,延时(10*c+d)秒(5)东西红灯、南北绿灯闪烁(3秒)(6)东西红灯、南北黄灯闪烁(3秒)(7)回到(1)3、功能键:(1)启动开关(2)键入交通灯的时间4、启动开关按下时,交通灯开始运行,键入交通灯的时间。
5、按要求编写课程设计报告书,正确、完整的阐述设计和实验结果。
三、实验原理:1、交通灯的控制DES3200 提供了12 个LED,其控制地址为IO 空间的0x0c000h。
该地址的D0-11 比特位分别对应这12 个LED。
将1 写入可以点亮LED,0 则关闭。
参考下面代码:/* 说明IO 空间0x0c000h 变量,以便用C 实现IO 空间操作 */ ioport unsigned portc000; /* for LEDs show *//* 下面是LED 控制代码 */portc000=0; /* 关闭所有12 个LED *//* 该C 语句等效于汇编指令 portw #0, 0c000h */mydelay(); /* 使用空循环延时 */portc000=0xffff; /* 点亮所有12 个LED */mydelay();for(i=0;i<12;i++){portc000=led; /* 点亮一个LED */mydelay(); /* 延时 */portc000=0; /* 关闭LED */led=led << 1;}2、数码管的控制DES3200 提供8 个七段数码管,他们直接由系统的MCU(89C52)管理。
DSP 部分与MCU 部分之间通过异步串口连接。
3、液晶屏的控制DES3200 提供一个64X128 的图形点阵液晶显示屏。
该液晶显示模块自带汉字字库,每屏可以显示4 行8 列共32 个汉字。
液晶屏也由MCU 部分(89C52)管理。
4、键盘的控制DES3200 系统提供了一个4X8 共32 个键的小键盘。
该键盘仍然由MCU (89C52)管理。
DSP 通过扩展的异步串口(U17)从MCU 接收按键信息。
也就是说,DSP 通过该串口发送显示信息到数码管和液晶屏,并从该串口读取键盘按键。
本实验正是通过键盘控制来模拟交通灯,并且能够从数码管显示剩余时间,液晶显示车辆通行情况。
四、实验设备与器材PC兼容机一台(安装CCS V2.2)、数字信号处理仿真DES3200一台 五、硬件方案DSP 52单片机 液晶显示器数码管显示键盘输入六、软件方案 1、程序流程图注:a,b,c,d分别为键盘输入值2、c源程序#include <string.h>开始初始化DSP键入交通灯时间东西绿灯南北红灯,(10*a+b)秒东西绿灯闪3秒、南北红灯东西黄灯闪3秒、南北红灯东西车辆禁行,南北车辆通行东西红灯南北绿灯,(10*c+d)秒东西红灯、南北绿灯闪3秒东西红灯、南北黄灯闪3秒#include <stdio.h>#include <stdlib.h>#include <math.h>int m,n;#define UART_COUNTER 0x62#define KEYIN_COUNTER 0X61#define LCD_SIZE 23#define KEY_SIZE 6#define LED_SIZE 14ioport unsigned portc000; /* for LEDs show */char LCD_Buffer[LCD_SIZE]={0x55,0x66} ; /* LCD SHOW's buffer */char KEY_Buffer[KEY_SIZE]; /* KEY INPUT's buffer */int Iskey=0; /* if Iskey!=0,then have KEY in *//* its high 8 bits are key code ! */ char LED_Buffer[LED_SIZE]={0x55,0x77}; /* LED SHOW's buffer */int IsQuitKey=0,First_input=1; /* if == 1, quit key input */ void u_printf(char *buf,int size);void key_input(char *buf,int size);void pllx100();void pllx10();void mydelay(){ /* when clkout=10MHz, about 0.2s */int i,j;for(i=0;i<500;i++)for(j=0;j<1000;j++);}int get_key(int iswait){ volatile int *addr_counter;int i;Iskey=0;key_input(&KEY_Buffer[0],6);if(iswait == 0) /* if iswait==1, then must wait for rev end,else return direct ! */return(Iskey); /* return key code */addr_counter = (int *)KEYIN_COUNTER;while( *addr_counter); /* wait for a key input... */if(( KEY_Buffer[0] == 'E') && (KEY_Buffer[5] == 0x0d)){ Iskey=((KEY_Buffer[4] & 0xff) << 8 );Iskey |= (KEY_Buffer[3] & 0xff);for(i=0;i<6;i++)KEY_Buffer[i]=0; /* clear key buffer */}else{ for(i=0;i<6;i++)KEY_Buffer[i]=0; /* clear key buffer */mydelay();}return(Iskey); /* return key code, low 8 bit is code */}int lcd_printf(int ln, int col, char *buf, int iswait){ volatile int *addr_counter;addr_counter = (int *)UART_COUNTER;LCD_Buffer[2]=ln; /* which LN will show the string */LCD_Buffer[3]=col; /* which COL will show string */LCD_Buffer[4]=strlen(buf)/2; /* how many chinese char(2 byte) will show */memcpy(&LCD_Buffer[5],buf, LCD_Buffer[4]*2);LCD_Buffer[21]=0x88;LCD_Buffer[22]=0x99;u_printf(&LCD_Buffer[0],23);if(iswait == 1) /* if iswait==1, then must wait for send end,else return direct ! */while( *addr_counter); return( *addr_counter);/* return number of left char will not send */}int led_printf(char *buf, int iswait){ volatile int *addr_counter;int j;addr_counter = (int *)UART_COUNTER;/* if buf="", clr LED */for(j=0;j<8;j++){ if(*buf == '\0')LED_Buffer[11-j]=0xf;else{ if( *buf == ' '){ LED_Buffer[11-j]=0xf; buf++; }else{ if( *buf <= '9')LED_Buffer[11-j]= *buf++ & 0xf;elseLED_Buffer[11-j]= *buf++-'a'+0xa;}}}LED_Buffer[12]=0x88;LED_Buffer[13]=0x99;u_printf(&LED_Buffer[0],14);if(iswait == 1) /* if iswait==1, then must wait for send end,else return direct ! */while( *addr_counter); return( *addr_counter);/* return number of left char will not send */}int key_choose(char key){ char buf[3];int key_code;switch(key){ case 59: /* ESC */IsQuitKey=1;return('Q');case 51: /* '1' */strcpy(buf," 1");key_code=1;break;case 43: /* '2' */strcpy(buf," 2");key_code=2;break;case 35: /* '3' */strcpy(buf," 3");key_code=3;break;case 60: /* '4' */strcpy(buf," 4");key_code=4;break;case 52: /* '5' */strcpy(buf," 5");key_code=5; ;break;case 44: /* '6' */strcpy(buf," 6");key_code=6;break;case 36: /* '7' */strcpy(buf," 7");key_code=7;break;case 61: /* '8' */strcpy(buf," 8");key_code=8;break;case 53: /* '9' */strcpy(buf," 9");key_code=9; ;break;case 30: /* '0' */strcpy(buf," 0");key_code=0;break;default:return(-1);}lcd_printf(4,6,buf,1);mydelay();return(key_code);}void lcd_clr(int iswait){ volatile int *addr_counter;addr_counter = (int *)UART_COUNTER;LCD_Buffer[2]=0xff;LCD_Buffer[3]=0xff;LCD_Buffer[4]=0xff;LCD_Buffer[21]=0x88;LCD_Buffer[22]=0x99;u_printf(&LCD_Buffer[0],23);if(iswait == 1) /* if iswait==1, then must wait for send end,else return direct ! */while( *addr_counter);}void interrupt show_traffic_led(){}void delay(){ /* when clkout=10MHz, about 1s */int i,j;for(i=0;i<2000;i++)for(j=0;j<1000;j++);}int myled_printf(char *buf, int iswait){ volatile int *addr_counter;int j;addr_counter = (int *)UART_COUNTER;/* if buf="", clr LED */for(j=0;j<6;j++){ if(*buf == '\0')LED_Buffer[11-j]=0xf;else{ if( *buf == ' '){ LED_Buffer[11-j]=0xf; buf++; }else{ if( *buf <= '9')LED_Buffer[11-j]= *buf++ & 0xf;elseLED_Buffer[11-j]= *buf++-'a'+0xa;}}}LED_Buffer[4]=n & 0xf; //m,n为可以改变的全局变量,改变其值可以改变LED_Buffer[5]=m & 0xf; //数码管显示的数字LED_Buffer[12]=0x88;LED_Buffer[13]=0x99;u_printf(&LED_Buffer[0],14);if(iswait == 1)while( *addr_counter);return( *addr_counter);}void main(){ int i,j,a,b,c,d,t,key;pllx10(); /* run at 10MHz */ init_start();for(i=0;i<10;i++)mydelay();lcd_clr(1); /* clear LCD display */lcd_clr(1);for(i=0;i<2;i++);mydelay();lcd_printf(1,0,"依次按下四个键",1);mydelay();lcd_printf(2,0,"前两个为东西时间",1);mydelay();lcd_printf(3,0,"后两个为南北时间",1);mydelay();key=get_key(1);a= key_choose(key & 0xff);key=get_key(1);b= key_choose(key & 0xff);key=get_key(1);c= key_choose(key & 0xff);key=get_key(1);d= key_choose(key & 0xff);lcd_clr(1);mydelay();while(1){m=a;n=b; t=m*10+n;lcd_clr(1);mydelay();portc000=0x030c;lcd_printf(1,0,"东西行南北停",1);for(j=t;j>=0;j--) //主干道东西绿灯亮,次干道南北红灯亮{ myled_printf("000000",1);delay();t--;m=t/10;n=t%10;}m=0;for(n=3;n>=0;n--){ portc000=0x0208; //绿灯闪mydelay();portc000=0x030c;mydelay();portc000=0x0208;mydelay();portc000=0x030c;mydelay();myled_printf("000000",1);}for(n=3;n>=0;n--){ portc000=0x028a; //黄灯闪mydelay();portc000=0x0208;mydelay();portc000=0x028a;mydelay();portc000=0x0208;mydelay();myled_printf("000000",1);}m=c; n=d;t=m*10+n;lcd_clr(1);mydelay();portc000=0x0861;lcd_printf(1,0,"东西停南北行",1);for(j=t;j>=0;j--) //次干道南北绿灯亮,主干道东西红灯亮{ myled_printf("000000",1);delay();t--;m=t/10;n=t%10;}m=0;for(n=3;n>=0;n--){ portc000=0x0041; //绿灯闪mydelay();portc000=0x0861;mydelay();portc000=0x0041;mydelay();portc000=0x0861;mydelay();myled_printf("000000",1);}for(n=3;n>=0;n--){ portc000=0x0451; //黄灯闪mydelay();portc000=0x0041;mydelay();portc000=0x0451;mydelay();portc000=0x0041;mydelay();myled_printf("000000",1);}}}七、实验步骤及调试1、安装驱动程序setupcc54x。