您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > msp430设计数字秒表
“最小系统设计实验答辩”“第七组”“万事屋”“队员:范昊洋周云浩姚冠”“数字秒表系统设计”整体简述1思考过程2作品技术实现展示3作品完整度展示4团队协作展示5录目整体简述:设计作品本次试验制作的是一个数字秒表。根据题目要求,设计一个有暂停,清零功能的数字秒表设备。如右图即为硬件系统框图Msp430单片机Oled屏幕LED灯定时器A按键控制控制整体简述:设计作品采取的技术路线:在主函数中,对硬件进行初始化操作,然后循环检测按键输入和显示当前计数值的操作。设置定时器的频率为1Hz,每次中断计数值自加一,以实现要求。Msp430单片机Oled屏幕LED灯定时器A按键控制控制程序分析设计目的:检测按键情况,并进行相应操作。1.当清零按键按下后,延时消抖,数据清零,然后清空当前屏幕上的显示值。2.当暂停按键按下时,改变模式(当其为0时让它变为1,是1时让它变为0)。按键部分程序分析:voidkeyscan(){if(!(P2IN&BIT1)==1){delay(10);num=0;LCD_CLS();}if(!(P1IN&BIT1)==1){delay(10);if(mode)mode=0;elsemode=1;}}程序分析设计目的:检测按键情况,显示当前计数值,并让LED灯做出相应反应大部分语句是为了实现当显示数据长度不同时显示不同的长度。主程序循环部分程序分析:while(1){keyscan();if(num10)LCD_ShowNum(0,0,num,1,16);elseif(num100&&num9)LCD_ShowNum(0,0,num,2,16);elseif(num1000&&num99)LCD_ShowNum(0,0,num,3,16);elseif(num10000&&num999)LCD_ShowNum(0,0,num,4,16);elseLCD_ShowNum(0,0,num,5,16);//控制显示位数led(num);}程序分析设计目的:设置定时器和定时器中断设置部分:1.TACCR0是TA0定时器的重装载值,当计数器值达到该值的时候溢出产生中断。2.TA0CCTL0寄存器管理中断使能3.TA0CTL控制寄存器的挂在时钟线路,预分频,计数模式,自动清除中断标志等。定时器中断部分:每秒让计数值自加一。定时器部分程序分析:voidtimer_a_ioset(void){TA0CCR0=32768;//定义中断计数周期1s,时钟频率为32.768MHZ,32768/32768=1sTA0CCTL0=CCIE;//TA0CCR0捕获/比较中断寄存器中断使能TA0CTL|=TASSEL_1+MC_1+TACLR+ID_0;}#pragmavector=TIMER0_A0_VECTOR__interruptvoidTimer_A0(void)//定时器中断触发,P3输出口异或,电平翻转{if(mode==0)num=num+1;}程序分析#defineMC_0(0*0x10u)/*TimerAmodecontrol:0-Stop*/#defineMC_1(1*0x10u)/*TimerAmodecontrol:1-UptoCCR0*/#defineMC_2(2*0x10u)/*TimerAmodecontrol:2-Continuousup*/#defineMC_3(3*0x10u)/*TimerAmodecontrol:3-Up/Down*/#defineID_0(0*0x40u)/*TimerAinputdivider:0-/1*/#defineID_1(1*0x40u)/*TimerAinputdivider:1-/2*/#defineID_2(2*0x40u)/*TimerAinputdivider:2-/4*/#defineID_3(3*0x40u)/*TimerAinputdivider:3-/8*/#defineTASSEL_0(0*0x100u)/*TimerAclocksourceselect:0-TACLK*/#defineTASSEL_1(1*0x100u)/*TimerAclocksourceselect:1-ACLK*/#defineTASSEL_2(2*0x100u)/*TimerAclocksourceselect:2-SMCLK*/#defineTASSEL_3(3*0x100u)/*TimerAclocksourceselect:3-INCLK*/#defineTACLR(0x0004u)/*TimerAcounterclear*/#defineTAIE(0x0002u)/*TimerAcounterinterruptenable*/#defineTAIFG(0x0001u)/*TimerAcounterinterruptflag*/以下展示部分库文件中的设置:从左侧可看出,我们选择的设置TASSEL_1+MC_1+TACLR+ID_0操作为:时钟挂载ACLK,定时器计数器自动清除,预分频为1(不分频),逐增模式(计数到CCR0值时清零重新开始并产生中断)程序分析程序流程图初始化硬件IO口,OLED屏,定时器设置使能中断判断num参数的值并显示判断按键是否按下判断按下的按键是哪个改变模式,暂停计数值增加清零计数值是清零按键是暂停按键是否定期器中断标志位置1判断是否处于暂停状态计数值自加1中断结束是否作品完整度展示:实物图团队协作展示队员能力及团队分工队员:范昊洋:算法设计与程序编写周云浩:查阅相关资料并debug姚冠:基础部分驱动程序编写
本文标题:msp430设计数字秒表
链接地址:https://www.777doc.com/doc-5531987 .html