完整word版msp430单片机实验报告.docx

上传人:b****8 文档编号:9683054 上传时间:2023-02-05 格式:DOCX 页数:15 大小:471.97KB
下载 相关 举报
完整word版msp430单片机实验报告.docx_第1页
第1页 / 共15页
完整word版msp430单片机实验报告.docx_第2页
第2页 / 共15页
完整word版msp430单片机实验报告.docx_第3页
第3页 / 共15页
完整word版msp430单片机实验报告.docx_第4页
第4页 / 共15页
完整word版msp430单片机实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

完整word版msp430单片机实验报告.docx

《完整word版msp430单片机实验报告.docx》由会员分享,可在线阅读,更多相关《完整word版msp430单片机实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

完整word版msp430单片机实验报告.docx

完整word版msp430单片机实验报告

实验报告

课程名称:

单片机原理及应用

 

实验题目:

实用多功能定时器

学生姓名:

谢照

学号:

2014110144

专业班级:

自动化

二零一六年五月七日

一、课程实验目的...................................................................................1

二、实验要求..............................................................................................1

三、课程实验硬件电路.............................................................................2

3.1、硬件电路结构....................................................................................2

3.2、电路原理............................................................................................2

3.2.1、显示电路.........................................................................................2

3.2.2、按键检测电路.................................................................................3

四、实验步骤..............................................................................................6

五、软件设计..............................................................................................6

5.1、倒计时主程序.....................................................................................6

5.2、中断程序设计......................................................................................7

六、调试与结论..........................................................................................7

七、附录........................................................................................................8

 

一、目的

(1)熟练运用CCS开发环境和Proteus仿真软件,巩固和加深单片机原理课程知识的理解和运用。

(2)综合本学期所学的按键检测以及液晶的动态显示原理,设计出以MSP430G2553为核心的以LCD1602为显示的倒计时系统。

(3)熟悉各元器件的性能和设置元件参数,进一步提高学生单片机应用系统的设计能力。

(4)培养学生综合分析问题、发现问题和解决问题的能力。

二、实验要求

(1)设计一个倒计时器,定时范围99分60秒,用液晶作为显示器。

4个按键控制,分别是分钟加一、秒钟加一、清零和开始停止键。

按分钟加一键时,分钟显示值加1,最大99;按秒钟加一键时,秒钟显示值加1,最大60;按清零键时,分钟、秒钟显示值都清零;按开始键,则开始倒计时。

显示值为零时停止倒计时,且报警器报警,直到按停止键报警器停止报警。

按开始键后,分钟加一、秒钟加一、清零键不起作用。

按停止键可以暂停。

倒计时为零后,按停止键,显示值恢复设定值,按开始键又可以工作。

(2)总体要求如下:

1、方案论证,确定总体电路原理图。

2、画硬件仿真电路图。

3、绘制程序流程图,编写C语言源程序。

4、安装调试,实现倒计时器的基本功能。

三、硬件电路

3.1、电路结构图:

多功能定时器主要由三个最基本模块组成,一是以LCD1602液晶为基础的显示电路,二是以四个按键为核心的控制电路,三是以MSP430G2553为核心的信号发生电路。

 

3.2、电路原理:

3.2.1显示电路

(1)LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。

因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)

(2)由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。

驱动模块具有八位数据总线,外加一些电源接口和控制信号。

而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。

由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。

LCD1602采用标准的14引脚(无背光)或16引脚(带背光)接口,各引脚接口说明如表:

(3)LCD1602共有11条控制指令如表:

3.2.2按键检测电路

按键检测电路

(1)单片机IO口独立按键检测原理:

由电路原理图可以看出,按键的一端与电源地相连,另一端与单片机的P1口相连,这也就意味着当按键按下的时候与按键相连单片机IO口将被拉低,换句话说,当单片机检测到与按键相连的IO口被拉低就证明此按键被按下,那门我们将此功能上一个层次来说呢,按键就是一个人机接口。

那么按键的操作并没有我们想象的“按下松开”那么简单,在实际应用中,手动操作需要消抖。

(2)按键的消抖:

通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。

由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。

抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。

这是一个很重要的时间参数,在很多场合都要用到。

按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。

键抖动会引起一次按键被误读多次。

为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。

在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。

按键的抖动,可用硬件或软件两种方法。

(3)按键按下产生的波形图

(3)硬件与非消抖

图中两个“与非”门构成一个RS触发器。

当按键未按下时,输出为1;当键按下时,输出为0。

此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),只要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。

也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。

这一点通过分析RS触发器的工作过程很容易得到验证。

(4)软件延时消抖

如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~20ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。

当检测到按键释放后,也要给5ms~20ms的延时,待后沿抖动消失后才能转入该键的处理程序。

本实验中采用软件延时消抖。

 

四、实验步骤:

1.用Proteus设计1602液晶显示接口电路;

2.在CCS中编写液晶显示控制语言C程序,编译通过后,与Proteus联合调试;

3.在Proteus中仿真模拟。

实验电路图:

五、软件设计

5.1倒时计器主程序

程序的的开始时先设定延时时间,检测按键是否按下,如果有按键按下,进入相应的按键处理函数。

每当进入定时中断一次变量秒钟自动减一,当秒钟等于0时即为计时一分,此时分钟减一,秒钟重新赋初值,并且之前设定的倒计时初值自动减一,同时进行相关的显示

5.2中断程序设计

本程序以中断加查询的方法来检测按键是否按下,中断大约每秒钟查询一次,当有按键按下时,程序进入中断服务函数,清零中断标志位,并进入按键查询函数,判断按键功能,然后执行相应的操作,达到设定时间和清零的效果。

六、调试与结论

调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。

程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等.最后逐步将各子程序连接起来进行联调。

本系统的程序的编写就是在CCS软件中用C语言完成的。

在程序中用到了一个中断,为了使倒计时的时间准确,必须计算延时时间,当程序完成之后,生成HEX文件。

再利用Proteus软件进行仿真。

经过仿真和测试,程序在运行时完全没有闪烁。

在程序中,每一秒钟检测中断一次,变量秒自减。

电路中的四个个按键可以分别用来设定倒计时的计数范围,经过测试与分析,此系统稳定可用,满足设计要求。

 

附录:

程序

#include

#include"string.h"

#defineucharunsignedchar

#defineuintunsignedint

voidP24_Onclick();

voidP25_Onclick();

voidP26_Onclick();

voidP27_Onclick();

voiddisplay();

voidwrite_dat(uchardat);

voidwrite_com(ucharcom);//写命令函数

#defineCPU_F((double)1100000)

#definedelay_us(x)__delay_cycles((long)(CPU_F*(double)x/1000000.0))

#definedelayms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0))

constuchartable1[]="TIME:

";

constuchartable2[]="00:

00";

constuchartable3[]="0123456789";

#defineSET_RSP2OUT|=BIT0

#defineRST_RSP2OUT&=~BIT0

#defineSET_RWP2OUT|=BIT1

#defineRST_RWP2OUT&=~BIT1

#defineSET_EP2OUT|=BIT2

#defineRST_EP2OUT&=~BIT2

ucharconstled_tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

ucharkey,flag=0;

unsignedchardisp_buf[4];

intfen=0,miao=0;

voidwrite_com(ucharcom)//写命令函数

{

RST_RS;

RST_RW;

P1OUT=com;

SET_E;

delay_us

(1);

RST_E;

}

voidwrite_dat(uchardat)

{

SET_RS;

RST_RW;

P1OUT=dat;

SET_E;

delay_us

(1);

RST_E;

}

voidsystem_Initial(void)

{

P1DIR=0xFF;

P1SEL=0x00;

P1OUT=0x00;

P2IE|=(BIT4+BIT5+BIT6+BIT7);

P2IES|=(BIT4+BIT5+BIT6+BIT7);

P2IFG&=~(BIT4+BIT5+BIT6+BIT7);

//液晶初始化

P2DIR=BIT0+BIT1+BIT2;

RST_E;

write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口

delay_us(5);

write_com(0x01);//显示清屏

delay_us(5);

write_com(0x0C);//显示开关,光标设置

delay_us(5);

write_com(0x06);//显示开关,光标设置

delay_us(5);

_EINT();

}

voidP2_IODect()

{

unsignedintPush_Key=0;

Push_Key=P2IFG&(~P2DIR);

__delay_cycles(10000);

if((P2IN&Push_Key)==0)

{

switch(Push_Key){

//caseBIT0:

P10_Onclick();break;

//caseBIT1:

P11_Onclick();break;

//caseBIT2:

P12_Onclick();break;

//caseBIT3:

P13_Onclick();break;

caseBIT4:

P24_Onclick();break;

caseBIT5:

P25_Onclick();break;

caseBIT6:

P26_Onclick();break;

caseBIT7:

P27_Onclick();break;

default:

break;

}

}

}

voidP24_Onclick()

{

if(flag==1)flag=0;

elseflag=1;

}

voidP25_Onclick()

{

fen=0;

miao=0;

display();

}

voidP26_Onclick()

{

fen++;

display();

}

voidP27_Onclick()

{

miao++;

display();

}

voiddisplay()

{

unsignedchari;

disp_buf[3]=fen/10;

disp_buf[2]=fen%10;

disp_buf[1]=miao/10;

disp_buf[0]=miao%10;

write_com(0x80);//数据指针设置,第一行显示

delay_us(5);

for(i=0;i

write_dat(table1[i]);

write_com(0x80+0x40);//数据指针设置,第二行显示

delay_us(5);

write_dat(table3[disp_buf[3]]);

write_com(0x80+0x41);//数据指针设置,第二行显示

delay_us(5);

write_dat(table3[disp_buf[2]]);

write_com(0x80+0x42);//数据指针设置,第二行显示

delay_us(5);

write_dat(table2[2]);

write_com(0x80+0x43);//数据指针设置,第二行显示

delay_us(5);

write_dat(table3[disp_buf[1]]);

write_com(0x80+0x44);//数据指针设置,第二行显示

delay_us(5);

write_dat(table3[disp_buf[0]]);

}

#pragmavector=PORT2_VECTOR

__interruptvoidPort_2(void)

{

P2_IODect();

P2IFG=0;

}

 

voidmain(void)

{

P4DIR=0xFF;

P4OUT&=~BIT0;

WDTCTL=WDTPW+WDTHOLD;

system_Initial();

flag=0;

while

(1)

{

if(flag==1)

{

if(fen==0)

{

if(miao>0)miao--;

else

{

do

{

P4OUT^=BIT0;

delayms

(1);

}

while(flag==1);

}

}

else

{

if(miao>0)miao--;

else{miao=59;fen--;}

}

display();

}

else

{

display();

P4OUT&=~BIT0;

}

delayms(1000);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1