DSP课程设计.docx
- 文档编号:5823944
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:27
- 大小:402.43KB
DSP课程设计.docx
《DSP课程设计.docx》由会员分享,可在线阅读,更多相关《DSP课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
DSP课程设计
电气与电子信息工程学院
基于OS-II嵌入式操作系统的电子产品的设计与制作
设计题目:
基于OS-II嵌入式操作系统的电子产品
专业班级:
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
学 号:
XXXXXXXXXXXXXX
姓名:
XXXXXXXXXXX
指导教师:
XXXXXXXXXXXXXXXX
设计时间:
XXXXXXXXXXXXXXXXXXX
设计地点:
XXXXXXXXXXXXXXXXXXXX
基于OS-II嵌入式操作系统的电子产品设计与制作课程设计成绩评定表
姓名
XXX
学号
XXXXX
专业班级
XXXXXXXXXXXXX
课程设计题目:
基于OS-II嵌入式操作系统的电子产品
课程设计答辩或质疑记录:
1.MCS51的PO口为什么需要上拉电阻?
答:
51单片机中的端口中,独有P0口没有内部上拉电阻。
这意味着在某些时刻,P0口的引脚处在浮空(高阻)状态,比如掉电时。
P0口外部通常接有其它CMOS芯片的输入端,P0口一旦处于浮空状态,外接的CMOS芯片引脚也被浮空。
对于CMOS芯片来说,输入端浮空是不允许的,因为这将导致CMOS电路逻辑混乱、功耗增大等现象。
所以,除非P0口能处在确认的逻辑状态,否则,需要借助外接的排电阻来使之永远处于确定的状态。
2.如果将单片机时钟电路部分的电容短接,会对电路有什么影响?
答:
晶振的负载电容会影响到晶振的输出幅度和谐振频率,如果短接,对单片机工作所需要的时钟信号将产生影响,导致单片机无法正常工作。
成绩评定依据:
实物制作(40%):
课程设计考勤情况(20%):
课程设计答辩情况(20%):
完成设计任务及报告规范性(20%):
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
2011年11月12日
目录
第一部分课程设计任务书0
一、课题名称3
二、设计目的3
三、设计内容3
四、设计要求3
五、设计进度表3
第二部分课程设计4
一、整体功能要求4
1.设计要求4
二、整体方案设计4
三、设计框图5
四、硬件设计5
1.工作原理5
2.STC89C51单片机工作原理5
3.电路模块实现8
五、软件设计9
1.程序流程图9
2.2μC/OS-II介绍…………………………………………………………….9
3.主程序...........................................................................................................................10
六、调试12
1建立工程和仿真图12
2.keil软件调试结果12
3.proteus软件仿真结果13
七、实物的组装与调试14
1.实物的组装14
2.调试15
八、心得体会16
附录17
1.电路原理图17
2.子程序18
3.元件清单20
参考文献21
第一部分课程设计任务书
2010~2011学年第X学期
学生姓名:
XXXXXXXXX专业班级:
XXXXXXXXXXX
指导教师:
XXXXXXXXXXXXX工作部门:
电信教研室
一、课题名称
基于OS-II嵌入式操作系统的电子产品设计与制作
二、设计目的
为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的智能电子产品设计与制作课程设计。
通过实训使学生在巩固所学单片机知识的基础之进一步把其与μC/OS-II操作系统的移植结合起来,增强学生对所学知识的实际应用能力和以及与当前专业的前沿知识结合,达到对μC/OS-II操作系统的学习和理解,为以后从事嵌入式工作的研究和开发打好基础。
三、设计内容
以51单片机为控制器,加上外围电路构成一控制系统,并在嵌入的OS-II为操作系统地基础上新建任务进行编程,要求能方便的进行人机交换。
四、设计要求
1、设计以51单片机为控制器的硬件系统。
2、将OS-II嵌入式操作系统移植到AT89C51。
3、用LCD进行显示该系统的基本功能参数,用键盘进行参数的输入。
4、编写程序。
5、对系统的进行综合和调试,使该同能稳定运行,实现其基本功能。
6、编写课程设计的总结
五、设计进度表
序号
设计内容
所用时间
1
布置任务,学习μC/OS-II原理、键盘、LED或LCD并进行硬件电路的设计
5天
2
完成键盘、显示和功能程序设计
4天
3
制作电路板
2天
4
答辩、撰写设计报告书
4天
合计
15天
第二部分课程设计
一、整体功能要求
1.1设计要求
(1)以单片机为核心,并移植μC/OS-II嵌入式操作系统到单片机,建立程序任务,设计一个键盘输入的人机交换的智能电子产品。
(2)用键盘输入相应的字符,则液晶显示相应的字符。
二、整体方案设计
按下电源开关,电路开始导通,用键盘输入相应的字符到51单片机内,再通过液晶显示电路将该号按键显示出来。
在判断是哪号按键被按下时,单片机不断进行按键扫描,来判断按键是否按下。
三、设计框图
四、硬件设计
1.工作原理
电源接通,程序开始运行,与此同时锁存器打开,当键盘输入模块任意一按键按下,按键信号通过锁存器将P1口相应的位拉低,通过与门与P1口相接的控制电路的输出也会输出低电平,在没有按键按下的情况下P1口为高电平,这样当有按键按下时,控制电路实现了一个从高电平到低电平的跳变,由于控制电路的输出接到外部中断0并且中断0被配置为下降沿触发,这样一旦有按键按下立即触发中断,进而程序转向中断服务子程序,在中断服务子程序中第一条指令就是关闭锁存器,从而屏蔽在这个按键之后按下的按键,此外中断程序中将读取P1口的状态,进而决定按下的是几号键,并将按键的结果显示在LCD上。
2.STC89C51单片机工作原理
STC89C51单片机具有片内E2PROM,是真正的单片机,由于不需要外接EPROM,所以应用非常普遍。
Stc89c51引脚图
STC89C51的主要工作特性如下:
片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为10000次;
片内数据存储器内含256字节的RAM;
具有32根可编程I/O口线;
具有3个可编程定时器;
中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;
串行口是具有一个全双工的可编程串行通信口;
具有一个数据指针DPTR;
低功耗工作模式有空闲模式和掉电模式;
具有可编程的3级程序锁定位;
单片机STC89C51工作电源电压为5(1+0.2)V,且典型值为5V;
单片机STC89C51最高工作频率为24MHz,单片机正常工作时,都需要有一个时钟电路和一个复位电路。
STC89C52的内部结构图如下图所示:
STC89C51内部结构图
(1)时钟电路
时钟电路用于产生单片机工作所需要的时钟信号。
设计中采用了比较典型的内部时钟方式,如图6所示:
其工作原理是:
片内高增益反向放大器XTAL1、XTAL2外接作为反馈元件的晶体(呈感性)与电容组成的并联谐振回路构成一个自激振荡器向内部时钟电路提供振荡时钟。
振荡器的频率主要取决于晶体的振荡频率,一般晶体可以在1.2-12MHz之间任选。
电容的大小影响振荡器电路的稳定性和快速性,其值有微调作用,通常取30pF左右。
在设计电路板时,晶振和电容应尽可能的靠近芯片,以减小分布电容,保证振荡器振荡的稳定性.
单片机外接晶体的接法
(2)复位电路
复位是单片机的初始化操作,其主要功能是将程序计数器PC初始化为0000H,使单片机从0000H单元开始执行程序。
复位操作不影响片内RAM的内容,但是对SFR中的一些寄存器有影响。
各种复位电路
3.电路模块实现
(1)74ls373锁存电路
74LS373为三态输出的八D透明锁存器,其主要电器特性的典型值如下
引脚图
74LS373的输出端O0~O7可直接与总线相连。
当三态允许控制端OE为低电平时,O0~O7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平。
当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
引出端符号:
D0~D7数据输入端
OE三态允许控制端(低电平有效)
LE锁存允许端
O0~O7输出端
真值表:
Dn
LE
OE
On
H
H
L
H
L
H
L
L
X
L
L
Q0
X
X
H
高阻态
(2)键盘输入模块
当键盘按键模块任意一按键按下,按键信号通过锁存器将P1口相应的位拉低,通过与门与P1口相接的控制电路的输出也会输出低电平,后将其状态送入p3口,在经过锁存器,将其通过LCD1602显示出来。
(3)RAM扩展模块
在80C51单片机系统中,
51单片机片内部存储空间为256B,实际应用中,其内部存储空间往往不能满足需求,常常会在片外进行扩展,用一片6264(8KB)扩展8K字节RAM,仅用P0口和各个存储器的地址线、数据线连接,组成地址总线和数据总线,单片机的PO口具备地址总线、数据总线及控制线的功能。
6264芯片引脚图
(4)LCD1602显示电路
1602为工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
注:
为了表示的方便,后文皆以1表示高电平,0表示低电平。
编辑本段管脚功能
引脚说明
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线
VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
低4位三态、双向数据总线0位(最低位)
8
DB1
低4位三态、双向数据总线1位
9
DB2
低4位三态、双向数据总线2位
10
DB3
低4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)(也是busyflag)
15
BLA
背光电源正极
16
BLK
背光电源负极
寄存器选择控制表
RS
R/W
操作说明
0
0
写入指令寄存器(清除屏等)
0
1
读busyflag(DB7),以及读取位址计数器(DB0~DB6)值
1
0
写入数据寄存器(显示各字型等)
1
1
从数据寄存器读取数据
注:
关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0.
busyflag(DB7):
在此位为被清除为0时,LCD将无法再处理其他的指令要求。
编辑本段字符集
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。
以下是1602的16进制ASCII码表:
(图片打开是大图)
读的时候,先读上面那列,再读左边那行,如:
感叹号!
的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
五、软件设计
1.程序流程图
2.μC/OS-II介绍
μC/OS-II是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列)和内存管理等功能。
它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。
μC/OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。
μC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。
至今,从8位到64位,μC/OS-II已在超过40种不同架构上的微处理器上运行。
μC/OS-II已经在世界范围内得到广泛应用,包括很多领域,如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。
实际上,μC/OS-II已经通过了非常严格的测试,并且得到了美国航空管理局(FederalAviationAdministration)的认证,可以用在飞行器上。
这说明μC/OS-II是稳定可靠的,可用于与人性命攸关的安全紧要(safetycritical)系统。
除此以外,μC/OS-II的鲜明特点就是源码公开,便于移植和维护。
3.主程序
voidmain(void)
{
OSInit();
InitTimer0();
InitSerial();
InitSerialBuffer();
KeyInit();
OSTaskCreate(TaskStartyya,(void*)0,&TaskStartStkyya[0],2);
OSTaskCreate(TaskStartyyb,(void*)0,&TaskStartStkyyb[0],3);
OSTaskCreate(TaskStartyyc,(void*)0,&TaskStartStkyyc[0],4);OSTaskCreate(TaskStartyyd,(void*)0,&TaskStartStkyyd[0],5);
OSTaskCreate(TaskStartyye,(void*)0,&TaskStartStkyye[0],6);
OSStart();
}
voidTaskStartyya(void*yydata)reentrant//任务1
{
yydata=yydata;
clrscr();
PrintStr("\n\t\t*******************************\n");
PrintStr("\t\t*Hello!
Theworld.*\n");
PrintStr("\t\t*******************************\n\n\n");
for(;;){
PrintStr("\tAAAAAA111111isactive.\n");
OSTimeDly(OS_TICKS_PER_SEC);//延时1mS
}
}
voidTaskStartyyb(void*yydata)reentrant//任务2
{
yydata=yydata;
i++;
for(;;){
PrintStr("\tBBBBBB222222isactive.\n");
//OSTimeDly(3*OS_TICKS_PER_SEC);
OSTimeDly(OS_TICKS_PER_SEC);
}
}
voidTaskStartyyc(void*yydata)reentrant//任务3
{
//INT8Ukey;
yydata=yydata;
for(;;)
{
OSTimeDlyHMSM(0,0,0,50);
PrintStr("\tCCCCCC333333333isactive.\n");
OSTimeDly(OS_TICKS_PER_SEC);
}
}
voidTaskStartyyd(void*yydata)reentrant//任务4
{
yydata=yydata;
for(;;){
i++;
da=!
da;
OSTimeDly(OS_TICKS_PER_SEC);
}
}
voidTaskStartyye(void*yydata)reentrant//任务5
{
INT8Ux;
yydata=yydata;
lcd_init();
for(;;)
{
/*
if(i<10)
{lcd_goto(4);//第一行第4位置,位置0--15
lcd_puts("wellcome!
");//显示字符串
lcd_goto(64+4);//第二行第四位置
lcd_putch(shu[i]);//显示0
lcd_goto(64+9);//第二行第9位置
lcd_putch(0x34);}//显示4
else
i=0;
*/
OSTimeDlyHMSM(0,0,0,50);
if(KeyHit())
{
lcd_goto(4);
x=KeyGetKey(0);
lcd_putch(shu[x]);
}
OSTimeDly(OS_TICKS_PER_SEC);//
//OSTimeDly(OS_TICKS_PER_SEC);
}
}
六、调试
1建立工程和仿真图
(1)打开proteus软件,新建一个工程,然后在工作窗口内画好原理图并保存。
(2)打开keil软件新建一个工程,选择所用单片机的型号,然后新建一个文件保存为.c文件并添加到工程中去,开始写源程序,写好后编译生成Hex文件。
(3)将生成的Hex文件下载到单片机内,观察结果,并调试,观察数码管上是否有相应正确的变化。
若结果不正确,思考问题的所在,修改源程序,继续调试,直到观察到正确的运行结果。
2.keil软件调试结果
3.proteus软件仿真结果
MAX232与串口连接图
七、实物的组装与调试
1.实物的组装
由于班上每组同学设计题目,设计电路都不一样,所以制作pcb板的想法也就给抹杀了,采取的是手工焊接。
而对于我们本组来说,电路模块还是比较复杂的,而选取的电路板对我们来说,就小了很多。
这是我们组对元器件的摆放及布局增添了很大的难度。
(1).首先是对元器件的认知。
按键检测
弹性小按键被按下时闭合,松手后自动断开;将数字万用表置于二极管档,接按键任意两个脚,听到响声,则证明两脚是导通的。
按键有四个脚,分别两组导通。
在焊接时,应只将一组中任意的一个脚接地,另一组的一脚接入电路。
。
(2).实物焊接
小小的板,芯片勉强给装上去了,但是焊接的确是个很大的难题。
因此我们采用的是在芯片附近连接上排针,在利用跳线来完成电路的连接。
焊接电路如下图。
焊接实物图
2.调试
电路焊接完成后,利用跳线完成电路的全部连接。
加上5v电压,只有单片机工作的指示灯亮着,而LCD没有任何反应。
于是,开始排查电路中那个模块出现了问题。
首先当然想到的是数码管总存在着虚焊的点。
利用万用表,测着每个引脚与接地短的电压,发现了果然有几个点存在着虚焊现象。
排除这一问题后,加上电压,LCD亮了。
但当按键按下,LCD却没开始工作,继续排查原因。
结果发现在锁存器u3与其连接时,引脚接错。
将其改正后,电路基本上实现了我们所需功能。
八、心得体会
本次课程设计和以往的两次都不同,实现的项目,只需用单片机来实现,对于做什么,完全可以自己决定。
在实习过程中发现了这学期课程中所学的单片机知识只是其中的冰山一角,很多都需要我们学着去扩展。
在设计过程中,我们学的用到的都是我们常用的器件,锁存器74hc573,LCD。
这在之前的频率计中对这些芯片已经有了一定的了解了。
调试过程是一个考验人耐心的过程。
而自己的马虎大意,导致在电路仿真时,停留了很长时间。
仿真时,LCD就是不亮,在修改了n次电路问题之后,还是没能驱动它。
最终在请教同学后,才知道是自己的程序的问题——While语句后直接添加了“;”。
这个问题我曾在看书时,书中还特意强调了while语句的作用,果自己还是把它抛到脑后了。
在制作实物的时候,我们也遇到了不少问题。
但在大家的耐心讨论下,这些问题我们都一一解决了。
最终,我们的实物也成功制作出来了。
这次实习,让我们懂得了要熟练地掌握课本上的知识,这样才能对实验中出现的问题进行分析解决。
同时,我们也学到了团结合作的精神。
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
通过这次模具设计,本人在多方面都有所提高。
通过这次模具设计,综合运用本专业所学课程的理论和生产实际知识进行一次冷冲压模具设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了冷冲压模具设计等课程所学的内容,掌握冷冲压模具设计的方法和步骤,掌握冷冲压模具设计的基本的模具技能懂得了怎样分析零件的工艺性,怎样确定工艺方案,了解了模具的基本结构,提高了计算能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。
附录
1.电路原理图
2.子程序
(1)延时程序
voiddelay_ms(ucharxms)
{uchari,j;
for(i=0;i<=xms;i++)
for(j=0;j<=110;j++);
}
(2)显示程序
#ifndef_LCD_H_
#define_LCD_H_
LCDinterfaceheaderfile
Seelcd.cformoreinfo
sbitLCD_RS=P1^6;
sbitLCD_EN=P1^7;
/*writeabytetotheLCDin4bitmode*/
voidlcd_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 课程设计