程晓dsp课程设计报告

2024-05-29

程晓dsp课程设计报告(通用2篇)

程晓dsp课程设计报告 篇1

不知不觉间,两周的金工实习已成回忆.我坐在电脑桌前,许多难忘的镜头一一浮现……

铸造-----金工实习的开始

铸造是金属工艺学的基础,从一开始,老师们就让我们自己动手操作,我们从最基本的模型开始练习,在最基本的练习中我们学会铸造的基本工序和基本方法,为我们以后做更复杂的铸型打下了良好的基础。

通过老师的讲解,我们增进了对铸造工艺的了解,有很多知识是在课本上学不到的,很多实际操作也是我们在课本学不到的。在老师的悉心指导下,我们掌握了很多工艺技巧,在我们练习造型的过程中,老师们不厌其烦的为我们找出错误和不足,帮助我们改正,而我们就在老师的帮助下不断的增加自己的实践知识。

通过实习,使我们了解了很多知识,在铸造过程中培养了我们对砂型的进一步了解,比课本上的知识更能加深我们对铸造的认识;几个同学一起做一个模型,培养了我们的团结合作的精神;通过对模型的修补练习,培养了我们的耐心和细心。实习最重要的是培养了我们的动手能力,使我们对铸造有了更深的认识,为我们以后的学习和接下来的实习奠定了良好的基础。

实习指导老师在实习中给了我们很大的帮助,他们都是铸造方面的能手,通过他们熟练的铸型演示,让我们充分的了解了铸造的工艺流程。同时在我们练习的时候他们不仅仅给我们指出了存在的错误,而且详细的给我们分析了产生错误的原因,以及这些错误可能造成的后果,让我们切实的感受到了铸造的严谨性,在实践中任何一点小错误都有可能出现残次品,造成了极大的浪费,有时甚至都会造成危险性。

钳工-----磨练自己的意志

这个工种我们第三天做的,由于前两天的工作很轻松,很有趣,所以很兴奋的来到了钳工的实习工厂。刚开始的时候,翁师傅对我们讲,工程操作技术这门课是为了提高同学们的动手能力和实践能力而设立的,因为这是一门动手实践课,所以带我们的周师傅在给我们讲解完注意事项后,就让我们自己开始练习。当我们操作过程中出现错误时,周师傅便会过来纠正。钳工是一个细活,也是一个慢活,它要求的是人的手巧,而手巧是必须通过不断的练习,这就是为什么一个八级钳工能把一块平板挫得很平,而我们一般人根本不可能做到的原因。一个八级钳工需要几十年的磨练才能实现,而钳工的重要性往往被我们忽视。我们可能会说,现在都是机械化,电子化工业了,生产用不着手工。其实,这种观点是很荒谬的,现在的机械化生产效率是很高,可是,工厂里机器坏了谁来修?是钳工。第一台机器是谁造出来的?是钳工手工造出来的。量具,平板也是钳工做的。在目前的机械工业中,尺寸精度最高的仍然是钳工,机床的水平导轨,平板,量具等一些精度要求很高的零件的加工都是钳工完成的。有些机床由于其本身误差及一些振动而加工不出来,也只能由钳工来完成。当然,这需要钳工的手艺。

练习钳工时,开始觉得很有兴趣,后来发现和自己想的完全不一样。把一个比拇指还大的铁块磨成很小的螺母,何其艰难,我开始渐渐体会的“铁杵磨成针”的感觉。看着其他人的工件已经初具雏形,而自己的小螺母还根本看不出是个什么东西,自信心便受到了极大的打击,一个上午下来,铁屑制造了一大堆,零件外形还没有做好,终于发现,其实铁杵磨成针还没有这个难。钳工需要耐心,细心和毅力。俗话说:“车工快,钳工慢,溜溜达达是电工”。不过随着时间的推移,我开始体会到其中的意义了,钳工的价值就存在于它的精细中,人的手工制造零件的生产率远远不如机器,而钳工仍然存在就是因为它做得比机器还精细。认识到了这一点我们对钳工有了重新的认识,做每一个零件都非常注重质量,而不是一味追求速度,又是一个下午,看着汗水浸透夹背,看着铁屑落下,零件的样子也渐渐有了,接着是打孔,车螺纹,当一个比别人的大很多的一个丑陋的“肥”螺母出现在我面前的时候我真不知道该哭还说该笑,这毕竟是第一次自己做出的工件啊,虽然丑陋,可是它有着怎样的意义,只有我自己可以深刻感到。

“知之者不如好之者,好之者不如乐之者。”兴趣推动了自主性,实践和探究性,我们遂渐地变得轻车熟路,机车飞快地转,锉刀平稳地磨,转磨出了汗水和成果,转磨出了智慧和创新,也转磨出了甘辛和坚韧,无形中汇成了共同的口号:“办实事,做贡献,受教育,长才干。”此次金工实习使我们学到了很多书中无法学到的东西。它使我们懂得观察生活,勇于探究生活,也为我们多方面去认识和了解生活提供了一个契机。它是生活的一种动力,促进我们知、情、意、行的形成和协调的发展,帮助自我完善。任何理论和知识只有与实习相结合,才能发挥出作用。而作为思想可塑性大的我们,不能单纯地依靠书本,还必须到实践中检验、锻炼、创新。去培养科学的精神,良好的品德,高尚的情操,文明的行为,健康的心理和解决问题的能力。此时,我们还在怀念充满成就感的金工实习,它充实了我们的知识,使我们懂得操控机床,车零件,使我们懂得钳和锉。至此,心中总结出一句言简义深的话“纸上得来终觉浅,投身实践览真知”。

金工实习报告

实习时间:2005.4.25-4.295.9-5.13

班级:03高分子乙班

实习编号:045

姓名:程晓乐

程晓dsp课程设计报告 篇2

院:物

院 课

程 :DSP 技术及应用

级 :321100 姓

名 :

号 : *** 指导教师 :

1.课程设计目的 2.课程设计正文

2.1 课程设计要求 2.2F2812原理图

2.3F2812系统环境结构实图 2.4设计原理 2.5设计结果 2.6心得体会

3.参考文献

4.此次课程设计的程序

1.课程设计目的

这学期我们学习了《DSP》这一门课程,为了实现理论结合实践,锻炼我们的动手能力,我们针对这门课程进行的课程设计。通过这次的课程设计,更加深入的学习这门课程,掌握这门技术,加深对DSP控制器的原理的理解和掌握。利用DSP开发环境CCS C2000对源程序文件进行编译、链接、装载调试,以完成基本的DSP项目文件设计。

2.课程设计正文 2.1 课程设计要求

⑴ 设计一个十字路口交通灯(带一个倒计时数码管),每个方向有三色(红、黄、绿)。

⑵ 实现交通灯双向车道红绿灯切换功能、交通灯全亮功能、数码管全亮功能。⑶ 保证每次切换倒计时20秒,在此时熄灭绿灯。

2.2 F2812原理图

2.3 F2812系统调试环境结构实物

图2.3 F2812系统调试环境实物结构

2.4设计原理

1.交通灯控制要求

利用 ICETEK-EDU 实验箱提供的设备,设计模拟实际生活中十字路口交通灯控制的程序。

要求如下:

-交通灯分红黄绿三色,东、南、西、北各一组,用灯光信号实现对交通的控制:绿灯信号

表示通行,黄灯表示警告,红灯禁止通行,灯光闪烁表示信号即将改变。

-计时显示:8×8 点阵显示两位计数,为倒计时,每秒改变计数显示。

-正常交通控制信号顺序:正常交通灯信号自动变换

(1)南北方向绿灯,东西红灯(20 秒)。

(2)南北方向绿灯闪烁。

(3)南北方向黄灯。

(4)南北方向红灯,东西方向黄灯。

(5)东西方向绿灯(20 秒)。

(6)东西方向绿灯闪烁。

(7)东西方向黄灯。

(8)返回(1)循环控制。

-紧急情况处理:模仿紧急情况(重要车队通过、急救车通过等)发生时,交通警察手动控制

(1)当任意方向通行剩余时间多于 10 秒,将时间改成 10 秒。

(2)正常变换到四面红灯(20 秒)。

(3)直接返回正常信号顺序的下一个通行信号(跳过闪烁绿灯、黄灯状态)。2.交通灯模拟

利用 ICETEK-CTR 上的一组发光二极管(共 12 只,分为东西南北四组、红黄绿三色)的亮灭实现交通信号的模拟。3.计时显示

利用 ICETEK-CTR 上的发光二极管显示阵列模拟显示。4.计时

使用 TMS320F2812DSP 片上定时器,定时产生时钟计数,再利用此计数对应具体时间。5.紧急情况

利用 ICETEK-CTR 上键盘产生外中断,中断正常信号顺序,模拟突发情况。6.程序设计

根据设计要求,由于控制是由不同的各种状态按顺序发生的,我们可以采用状态机制控制方法来解决此问题。这种方法是:首先列举所有可能发生的状态;然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制。对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成。

2.5.设计结果

程序可以完成交通灯功能,顺序循环工作。在中断信号到来后,进入特殊过程:当前计时如果大于 10 改成 10,否则不变,等待状态切换;切换后进入四面禁行状态,计数 20 秒后返回断点后的通行(有两方向是绿灯)状态。设计结果部分截图

2.6心得体会

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,和同学们相互探讨,相互学习。在此次的课程设计中,主要资料的查阅和对电路图的总体设计,对电路的设计包括绘制电路原理图。由于平时在对本课程的学习中,没有注重系统的设计,故在设计电路原理图的过程中也遇到了各种各样的问题。但是,这些问题在跟同组的同学讨论和向老师请教后也得到了解决。由此可以得出,我对本门课程的掌握还是很不好,动手的能力还是很欠缺的。在今后的学习过程中不仅要注意对理念知识的掌握,而且还要培养自己的对手操作能力。最后在老师的辛勤的指导下,终于迎刃而解,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

3.参考文献

[1] 苏涛,蔺丽华,卢光跃.DSP实用技术.西安电子科技大学出版社.2002 [2] 赵红怡编.DSP技术与运用实例.2006.4.此次课程设计的程序

#include “DSP281x_Device.h”

// DSP281x Headerfile Include File #include “DSP281x_Examples.h”

// DSP281x Examples Include File

void Delay(unsigned int nTime);void SetLEDArray1(int nNumber);// 修改显示内容 void RefreshLEDArray1();

// 刷新显示 interrupt void cpu_timer0_isr(void);interrupt void XINT2_isr(void);void EndICETEKCTR();

#define XINT2CR(*((unsigned int *)0x7071))#define XNMICR(*((unsigned int *)0x7077))#define T46uS 0x0d40 #define SCANCODE_0 0x70 #define SCANCODE_1 0x69 #define SCANCODE_2 0x72 #define SCANCODE_3 0x7A #define SCANCODE_4 0x6B #define SCANCODE_5 0x73 #define SCANCODE_6 0x74 #define SCANCODE_7 0x6C #define SCANCODE_8 0x75 #define SCANCODE_9 0x7D #define SCANCODE_Del 0x49 #define SCANCODE_Enter 0x5A #define SCANCODE_Plus 0x79 #define SCANCODE_Minus 0x7B #define SCANCODE_Mult 0x7C #define SCANCODE_Divid 0x4A #define SCANCODE_Num 0x77 #define CTRGR *(int *)0x108000 #define CTRLCDCMDR *(int *)0x108001 #define CTRKEY *(int *)0x108001 #define CTRLCDCR *(int *)0x108002 #define CTRCLKEY *(int *)0x108002 #define CTRLCDLCR *(int *)0x108003 #define CTRLCDRCR *(int *)0x108004 #define CTRLA *(int *)0x108005 #define CTRLR *(int *)0x108007

Uint16 var1 = 0;Uint16 var2 = 0;Uint16 var3 = 0;Uint16 test_count = 0;Uint16 Test_flag = 0;Uint16 Test_var = 0;Uint16 Test_status[32];#define nStatusNSGreenEWRed 160 #define nStatusNSFlashEWRed 184 #define nStatusNSYellowEWRed 200 #define nStatusNSRedEWYellow 216 #define nStatusNSRedEWGreen 376 #define nStatusNSRedEWFlash 400 #define nStatusNSRedEWYellow1 416 #define nStatusNSYellowEWRed1 432 #define nTotalTime 448 #define nStatusHold 160

#define statusNSGreenEWRed 0 #define statusNSFlashEWRed 1 #define statusNSYellowEWRed 2 #define statusNSRedEWYellow 3 #define statusNSRedEWGreen 4 #define statusNSRedEWFlash 5 #define statusHold 6 int a=0;unsigned int uWork,nTimeCount,nTimeMS;unsigned int uLightStatusEW,uLightStatusSN;unsigned int bHold;unsigned char ledbuf[8],ledx[8];unsigned char led[40]= { 0x7E,0x81,0x81,0x7E,0x00,0x02,0xFF,0x00, 0xE2,0x91,0x91,0x8E,0x42,0x89,0x89,0x76, 0x38,0x24,0x22,0xFF,0x4F,0x89,0x89,0x71, 0x7E,0x89,0x89,0x72,0x01,0xF1,0x09,0x07, 0x76,0x89,0x89,0x76,0x4E,0x91,0x91,0x7E };

void main(void){

int nWork1,nWork2,nWork3,nWork4,k;

int nNowStatus,nOldStatus,nOldTimeCount,nSaveTimeCount,nSaveStatus;

unsigned int nScanCode;

nTimeCount=0;bHold=0;

uLightStatusEW=uLightStatusSN=0;

nNowStatus=0;nOldStatus=1;nOldTimeCount=0;

//InitSysCtrl();//初始化cpu

InitPll(0x0);

DINT;//关中断

InitPieCtrl();//初始化pie寄存器

IER = 0x0000;//禁止所有的中断

IFR = 0x0000;

InitPieVectTable();//初始化pie中断向量表

EALLOW;// This is needed to write to EALLOW protected registers

PieVectTable.TINT0 = &cpu_timer0_isr;//指定中断服务子程序

PieVectTable.XINT2 = &XINT2_isr;

EDIS;

// This is needed to disable write to EALLOW protected registers

//EALLOW;// This is needed to write to EALLOW protected registers

//PieVectTable.XINT2 = &XINT2_isr;

//EDIS;

// This is needed to disable write to EALLOW protected registers

CpuTimer0.RegsAddr = &CpuTimer0Regs;// Initialize timer period to maximum:

CpuTimer0Regs.PRD.all = 0xffff;//CpuTimer0Regs.PRDH.all = 0xffff;// Initialize pre-scale counter to divide by 1(SYSCLKOUT):

CpuTimer0Regs.TPR.all = 0xff09;CpuTimer0Regs.TIM.all = 0xffff;//CpuTimer0Regs.TIMH.all = 0xffff;CpuTimer0Regs.TPRH.all = 0;// Make sure timer is stopped: CpuTimer0Regs.TCR.bit.TSS = 1;CpuTimer0Regs.TCR.bit.SOFT = 1;CpuTimer0Regs.TCR.bit.FREE = 1;// Reload all counter register with period value: CpuTimer0Regs.TCR.bit.TRB = 1;CpuTimer0Regs.TCR.bit.TIE = 1;// Reset interrupt counters: CpuTimer0.InterruptCount = 0;

// Enable TINT0 in the PIE: Group 1 interrupt 7

PieCtrlRegs.PIEIER1.bit.INTx5 = 1;

PieCtrlRegs.PIEIER1.bit.INTx7 = 1;

XINT2CR =0x1;/*打开管脚xint2外中断*/

//XNMICR=0x1;/*打开nmi中断*/ // Enable global Interrupts and higher priority real-time debug events:

EINT;

// Enable Global interrupt INTM

ERTM;

// Enable Global realtime interrupt DBGM

CTRGR=0;// 初始化ICETEK-CTR CTRGR=0x80;CTRGR=0;CTRLR=0;// 关闭东西方向的交通灯

CTRLR=0x40;// 关闭南北方向的交通灯

CTRLR=0x0c1;// 开启发光二极管显示阵列

for(k=0;k<8;k++){

ledbuf[k]=0x0ff;// 显示为空白

ledx[k]=(k<<4);// 生成显示列控制字 } k=CTRLCDCR;// 清除键盘缓冲区

StartCpuTimer0();//启动定时器0

// 根据计时器计数切换状态

// 根据状态设置计数和交通灯状态 while(1)

{

if(bHold && nNowStatus==statusHold)

{

if(nTimeCount>=nStatusHold)

{

nNowStatus=nSaveStatus;

nTimeCount=nSaveTimeCount;

bHold=0;

}

}

else if(nTimeCount

else if(nTimeCount

else if(nTimeCount

else if(nTimeCount

else if(nTimeCount

else if(nTimeCount

else if(nTimeCount

else if(nTimeCount

if(nNowStatus==nOldStatus)

{

switch(nNowStatus)

{

case statusNSFlashEWRed:

nWork1=nTimeCount-nStatusNSGreenEWRed;

nWork2=nStatusNSYellowEWRed-nStatusNSFlashEWRed;

nWork3=nWork2/3;

nWork4=nWork3/2;

if(nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0)

uLightStatusSN=((nWork1%nWork3)<=nWork4)?(0x49):(0x40);

break;

case statusNSRedEWFlash:

nWork1=nTimeCount-nStatusNSRedEWGreen;

nWork2=nStatusNSRedEWYellow1-nStatusNSRedEWFlash;

nWork3=nWork2/3;

nWork4=nWork3/2;

if(nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0)

uLightStatusEW=((nWork1%nWork3)<=nWork4)?(0x09):(0x00);break;case statusNSGreenEWRed: nWork1=nStatusNSGreenEWRed/20;if(nWork1>0){

nWork2=20-nTimeCount/nWork1;

if(bHold)

{

if(nWork2>10)

{

nTimeCount=nWork1*10;

nWork2=10;

}

}

if(nOldTimeCount!=nWork2)

{

nOldTimeCount=nWork2;

SetLEDArray1(nWork2);

} } break;case statusNSRedEWGreen: nWork1=(nStatusNSRedEWGreen-nStatusNSRedEWYellow)/20;if(nWork1>0){

nWork2=20-(nTimeCount-nStatusNSRedEWYellow)/nWork1;

if(bHold)

{

if(nWork2>10)

{

nTimeCount=nStatusNSRedEWYellow+nWork1*10;

nWork2=10;

}

}

if(nOldTimeCount!=nWork2)

{

nOldTimeCount=nWork2;

SetLEDArray1(nWork2);

} } break;case statusHold:

nWork1=nStatusHold/20;

if(nWork1>0)

{

nWork2=20-nTimeCount/nWork1;

if(nOldTimeCount!=nWork2)

{

nOldTimeCount=nWork2;

SetLEDArray1(nWork2);

}

}

break;

}

}

else

{

if(bHold)

{

nSaveStatus=nNowStatus;

nSaveTimeCount=nTimeCount;

nNowStatus=statusHold;

nTimeCount=0;

if(nSaveStatus==statusNSFlashEWRed nSaveStatus==statusNSYellowEWRed)

{

nSaveStatus=statusNSRedEWGreen;

nSaveTimeCount=nStatusNSRedEWYellow;

}

else if(nSaveStatus==statusNSRedEWFlash nSaveStatus==statusNSRedEWYellow)

{

nSaveStatus=statusNSGreenEWRed;

nSaveTimeCount=0;

}

}

nOldStatus=nNowStatus;

switch(nNowStatus)

{

case statusNSGreenEWRed:

uLightStatusEW=0x24;uLightStatusSN=0x49;

SetLEDArray1(20);

break;

case statusNSFlashEWRed:

uLightStatusEW=0x24;uLightStatusSN=0x49;

SetLEDArray1(0);

||

||

break;

case statusNSYellowEWRed:

uLightStatusEW=0x24;uLightStatusSN=0x52;

SetLEDArray1(20);

break;

case statusNSRedEWYellow:

uLightStatusEW=0x12;uLightStatusSN=0x64;

SetLEDArray1(20);

break;

case statusNSRedEWGreen:

uLightStatusEW=0x09;uLightStatusSN=0x64;

SetLEDArray1(20);

break;

case statusNSRedEWFlash:

uLightStatusEW=0x09;uLightStatusSN=0x64;

SetLEDArray1(0);

break;

case statusHold:

uLightStatusEW=0x24;uLightStatusSN=0x64;

SetLEDArray1(20);

break;

}

}

CTRLR=uLightStatusEW;CTRLR=uLightStatusSN;// 设置交通灯状态

RefreshLEDArray1();// 刷新发光二极管显示

nScanCode=CTRKEY;// 读键盘扫描码

nScanCode&=0x0ff;

if(nScanCode==SCANCODE_Enter)break;

}

EndICETEKCTR();exit(0);}

interrupt void cpu_timer0_isr(void){

//CpuTimer0.InterruptCount++;

// Acknowledge this interrupt to receive more interrupts from group 1

PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

CpuTimer0Regs.TCR.bit.TIF = 1;

CpuTimer0Regs.TCR.bit.TRB = 1;

nTimeMS++;if(nTimeMS>=5){

nTimeMS=0;

nTimeCount++;

nTimeCount%=nTotalTime;} }

interrupt void XINT2_isr(void){

//StopCpuTimer0();

PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

bHold=1;

//StartCpuTimer0();}

void Delay(unsigned int nDelay){ int ii,jj,kk=0;for(ii=0;ii

for(jj=0;jj<64;jj++)

{

kk++;

} } } // 设置发光二极管显示内容 void SetLEDArray1(int nNumber){ int i,k,kk,kkk;

kkk=nNumber;

k=kkk/10*4;kk=kkk%10*4;for(i=0;i<4;i++){

ledbuf[7-i]=~led[k+i];

ledbuf[3-i]=~led[kk+i];} } void RefreshLEDArray1(){ int i;for(i=0;i<8;i++){

CTRGR=ledx[i];

CTRLA=ledbuf[i];} } void EndICETEKCTR(){ int k;CTRLR=0;

上一篇:高考百天教师发言稿下一篇:短训心得体会——企业文化建设浅谈