还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计报告多路抢答器的设计November2011学号姓名组员目录1概述
1.1简介本作品以MSP430为主要模块、数码管和液晶作为显示模块本抢答器主要是通过16个按键开关来十六路选手的抢答,开始键按下,则进入到十六个按键的扫描中,同时显示倒计时时间.同时该抢答器还有时间的递减、清零、超时报警功能;通过液晶来显示抢答选手的号数本作品造价便宜,硬件比较简单关键字MSP430,抢答器,显示
1.2硬件简介MSP430系列单片机是一种16位超低功耗、具有精简指令集http://baike.baidu.com/view/
981569.htm(RISChttp://baike.baidu.com/view/
23531.htm)的混合信号处理器(MixedSignalProcessor)称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路http://baike.baidu.com/view/
635021.htm、数字电路http://baike.baidu.com/view/
635019.htm模块和微处理器http://baike.baidu.com/view/
1125.htm集成在一个芯片上,以提供“单片”解决方案MSP430单片机的特点
1、运算速度快
2、超低功耗
3、片内资源丰富
4、方便高效的开发环境2MSP430部分模块原理图
2.1主芯片电路
2.24*4矩阵键盘
2.3复位电路
2.4数码管电路
2.5液晶显示控制电路
2.6蜂鸣器3软件设计//数码管7位段码0--funsignedcharscandata
[16]={0xc00xf90xa40xb00x990x920x820xf80x800x900x880x830xc60xa10x860x8e};//显示缓存unsignedcharDispbuf
[2];//引用外部变量的声明externunsignedcharkey_Pressed;externunsignedcharkey_val;externunsignedcharkey_Flag;#includemsp430x14x.htypedefunsignedcharuchar;typedefunsignedintuint;/***************全局变量***************/ucharkey_Pressed;//按键是否被按下:1--是,0--否ucharkey_val;//存放键值ucharkey_Flag;//按键是否已放开1--是,0--否//设置键盘逻辑键值与程序计算键值的映射ucharkey_Map[]={12345678910111213141516};/*******************************************函数名称Init_Keypad功能初始化扫描键盘的IO端口参数无返回值无********************************************/voidInit_Keypadvoid{P1DIR=0xf0;//P
1.0~P
1.3设置为输入状态P
1.4~P
1.7设置为输出状态P1OUT|=0xf0;//P
1.4~P
1.7输出高电平key_Flag=0;key_Pressed=0;key_val=0;}/**********************************************Check_Key检查按键,确认键值*********************************************//*******************************************函数名称Check_Key功能扫描键盘的IO端口,获得键值参数无返回值无********************************************/voidCheck_Keyvoid{ucharrowcoltmp1tmp2;tmp1=0x80;forrow=0;row4;row++//行扫描{P1OUT=0xf0;//P
1.4~P
1.7输出全1P1OUT-=tmp1;//P
1.4~p
1.7输出四位中有一个为0tmp1=1;ifP1IN0x0f0x0f//是否P1IN的P
1.0~P
1.3中有一位为0{tmp2=0x01;//tmp2用于检测出那一位为0forcol=0;col4;col++//列检测{ifP1INtmp2==0x00//是否是该列等于0为是{key_val=key_Map[row*4+col];//获取键值return;//退出循环}tmp2=1;//tmp2右移1位}}}}/*******************************************函数名称delay功能延时约15ms,完成消抖功能参数无返回值无********************************************/voiddelay{uinttmp;fortmp=12000;tmp0;tmp--;}voidDELAY{doubletmp;fortmp=2800;tmp0;tmp--;}/*******************************************函数名称Key_Event功能检测按键,并获取键值参数无返回值无********************************************/voidKey_Eventvoid{uchartmp;P1OUT=0x00;//设置P1OUT全为0,等待按键输入tmp=P1IN;//获取p1INifkey_Pressed==0x00tmp0x0f0x0f//如果有键按下{key_Pressed=1;//如果有按键按下,设置key_Pressed标识delay;//消除抖动Check_Key;//调用check_Key获取键值}elseifkey_Pressed==1tmp0x0f==0x0f//如果按键已经释放{key_Pressed=0;//清除key_Pressed标识key_Flag=1;//设置key_Flag标识}else{_NOP;}}#includemsp430x14x.h#includecry
1602.htypedefunsignedcharuchar;typedefunsignedintuint;/**************宏定义***************/#defineDataDirP4DIR#defineDataPortP4OUT#defineBusy0x80#defineCtrlDirP3DIR#defineCLR_RSP3OUT=~BIT0;//RS=P
3.0#defineSET_RSP3OUT|=BIT0;#defineCLR_RWP3OUT=~BIT1;//RW=P
3.1#defineSET_RWP3OUT|=BIT1;#defineCLR_ENP3OUT=~BIT2;//EN=P
3.2#defineSET_ENP3OUT|=BIT2;/***********************************************函数名称DispStr功能让液晶从某个位置起连续显示一个字符串参数x--位置的列坐标y--位置的行坐标ptr--指向字符串存放位置的指针返回值无***********************************************/voidDispStrucharxucharyuchar*ptr{uchar*temp;ucharin=0;temp=ptr;while*ptr++!=\0n++;//计算字符串有效字符的个数fori=0;in;i++{Disp1Charx++ytemp[i];ifx==0x0f{x=0;y^=1;}}}/*******************************************函数名称DispNchar功能让液晶从某个位置起连续显示N个字符参数x--位置的列坐标y--位置的行坐标n--字符个数ptr--指向字符存放位置的指针返回值无********************************************/voidDispNCharucharxucharyucharnuchar*ptr{uchari;4调试
4.1程序设计对于MSP430我们并不是很熟悉,在编程时对于MSP430的各功能模块、寄存器的使用不了解,要先查找相应资料,在编程中遇到了很多问题
4.2调试中出现的问题
(1)数码管不能正常倒计时在程序调试时发现,数码管倒计时不正常,数字显示的位置也经常移位,对于这个问题我们再次检查了数据线的连接,后发现是数据线的输入端、输出端的连接错误
(2)抢答者号码显示不稳定开始选用中断方式,当两个选手按键时间间隔很短时,不能正常显示,后选用查询方式,可避免此类问题5实验总结与展望本次课程设计将理论与实践有机地结合,锻炼了我们对知识的综合运用以及创新设计思维能力对于课程题目《多路抢答器》,一开始还没有头绪,我们这组都没参加过电子设计大赛的培训,不会运用所学知识进行有效设计,但通过上网查阅各种类似的设计,查阅芯片的功能模块,确定基本设计方案,又通过仿真验证试验方案的可实行性通过这次实验让我们认识到
1、设计思路是整个设计的灵魂拿到每个课题能有一个非常清晰的设计思路是至关重要的只有对课题的充分理解,各芯片的熟练掌握,才能为后续的设计工作提供扎实的基础翻阅各种资料,上网查询填补知识的空缺是必要的
2、调试调试是个精细的工作,在调试过程中,线路连接错误、芯片本身损坏、程序的缺陷等问题的排查需要耐心
3、不足我们的作品只是大概的展示了一下抢答器的工作形式,对于细节方面并没有做得很完善,例如如何为主持人单独设置一个控制键,数码管上显示倒计时的位置要更精确等有时对于不算很复杂的程序,我们要研究很久,有时三节课下来也没有头绪,实验效率不是很高
4、展望这学期课程设计只是让我们对电子设计有初步的了解,并通过自身的实践,把理论知识运用到实践,培养了设计思维能力,增强了动手能力,在让我体会程序设计艰辛的同时,更让我体会到了成功的喜悦和快乐同时也发现自己的很多不足之处,在设计过程中我发现自己考虑问题不全面,自己的专业知识掌握得很不牢固,希望自己的这些的不足之处能在今后的工作和学习中得到改善而且,也懂得了学习的重要性,我将会在以后的生活和工作中继续学习1615。