嵌入式系统原理及应用课程设计Word文档格式.docx

上传人:b****6 文档编号:15959363 上传时间:2022-11-17 格式:DOCX 页数:14 大小:173.46KB
下载 相关 举报
嵌入式系统原理及应用课程设计Word文档格式.docx_第1页
第1页 / 共14页
嵌入式系统原理及应用课程设计Word文档格式.docx_第2页
第2页 / 共14页
嵌入式系统原理及应用课程设计Word文档格式.docx_第3页
第3页 / 共14页
嵌入式系统原理及应用课程设计Word文档格式.docx_第4页
第4页 / 共14页
嵌入式系统原理及应用课程设计Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

嵌入式系统原理及应用课程设计Word文档格式.docx

《嵌入式系统原理及应用课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式系统原理及应用课程设计Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

嵌入式系统原理及应用课程设计Word文档格式.docx

优良中及格不及格

2012年2月25日

•课程设计目的

通过该课程设计将嵌入式系统原理及应用课程中所学的处理器和接口等技术应用于实际设计中。

通过中断、PWM定时器、串口、SIO、GPIO等技术在实验平台上进行综合设计,在理论和实验的基础上进一步提高综合设计能力。

二.课程设计内容及功能要求

1.通过一个PWM定时计数器,采用定时中断的功能,设计能够在LED上进行时分秒显示的时钟;

2.通过键盘实现对钟的功能;

3.实现闹钟的功能,闹钟的时间由键盘输入进行设定;

4.将时钟在超级终端上显示;

时间的设定可以通过超级终端实现;

三•功能实现

1.总体功能框图

开始

设置中断

2.详细设计:

(将所设计的各部分的功能程序框图及相关程序代码进行

详细的描述)

1.

#include"

uhal.h"

#include"

myuart.h"

KeyBoard.h"

Timer.h"

lsr.h"

44b.h"

#include"

Zlg7289.h"

def.h"

#include"

lcd320.h"

intTimer3INTCount=0;

inthour=0;

intminute=0;

#pragmaimport__use_no_semihosting_swi)//ensurenofunctionsthatusesemihostingintmain(void)

{

intclock_h=23;

intclock_m=59;

intclock_s=0;

intkey;

intval=0;

ARMTargetInit();

//开发版初始化

Zlg7289_Reset();

Init_Timer3(100,16,40000,20000);

INTS_OFF();

//DisableinterruptinPSR

SetlSR」nterrupt(INT_TIMER3_OFFSET,Timer3_ISR,0);

Open_INT_GLOBAL();

Open_INT(BIT_TIMER3);

INTS_ON();

//EnableinterruptinPSR

Start_Timer3();

Uart_Printf("

\n"

);

LCD」nit();

LCD_ChangeMode(DspTxtMode);

//转换LCD显示模式为文本显示模式

while

(1)

//延时让数码管频率显示可见。

Delay(1000);

Timer3INTCount=Timer3INTCount+1;

if(Timer3INTCount>

59)

Timer3INTCount=0;

}

if(key==10)//秒设置,键盘2按下时扫描值为10

//延时让数码管频率显示可见。

//分钟加一

〃分钟大于59时清零

//秒清零

//原理同分钟

minute=minute+1;

if(minute>

59)minute=0;

//Timer3INTCount=0;

}

if(key==2)

hour=hour+1;

if(hour>

23)

hour=0;

Delay(IOOO);

LED_Display(Timer3INTCount,minute,hour);

//在数码管显示时分

%d:

%d\n"

hour,minute,Timer3INTCount);

〃在超级终端显示时

分秒

闹钟设^置***************

〃原理参照对钟设置

//闹钟设^置*************闹钟设^置****************

elseif(key==1key==9|key==17)

if(key==1)

clock_h=clock_h+1;

if(clock_h>

clock_h=0;

if(key==9)

clock_m=clock_m+1;

if(clock_m>

59)

clock_m=0;

if(key==17)

LED_Display(clock_s,clock_m,clock_h);

hour,minute,Timer3INTCount);

else;

 

//Start_Timer3();

while(hour==clock_h&

minute==clock_m&

key!

=1&

key!

=9&

=17&

=2&

=10&

=18)//闹钟时间到且闹钟启动时,进入下面的

闹钟显示

//Uart_Printf("

timeisover!

getingupnow!

!

\n"

LCD_printf("

getingupnow!

//Uart_Printf("

\r%d"

rTCNTO3);

Delay(1000);

2.

#inelude"

ZLG7289.h"

externTimer3INTCount,hour,minute;

voidInit_Timer3(U8prescaler1,U8divider3,U16countb3,U16compb3){U8div;

switch(divider3)

{case2:

div=0x00;

break;

case4:

div=0x01;

case8:

div=0x02;

case16:

div=0x03;

default:

〃prescaler1isfortimer2&

3〃Fre(Timer)=MCLK/(prescaler+1)/dividerrTCFGO&

=~(0xff<

<

8);

rTCFG0|=(prescaler1<

//Allinterrupt,selectMUXinputforTimerNrTCFG1&

=~(0x0f<

24|0x0f<

12);

rTCFG1|=(div<

rTCMPB3=compb3;

rTCNTB3=countb3;

rTCON|=(0x01<

19);

//Autoreload

voidStart_Timer3(void)

{rTCON|=(OxO1<

17);

//ManualUpdate

rTCON&

=~(0x01<

18);

//lnverteroffrTCON|=(OxO1<

16);

//StartTimer3

//MustclearManualupdatebit}

voidStop_Timer3(void)

{rTCON&

//StopTimer3

voidTimer3_ISR(void)

Timer3INTCount++;

if(Timer3INTCount>

59)//秒累加到59时清零

Timer3INTCount=O;

minute=minute+1;

if(minute>

59)//分钟累加到59时清零

minute=0;

if(hour>

23)〃小时累加到23时清零

hour=0;

//LED_Display(Timer3INTCount,minute,hour);

Timer3INTCount);

3.

zlg7289.h"

intZlg7289SIOBand;

intZlg7289SIOCtrl;

voidZlg7289_Reset()

ZLG7289_ENABLE();

WriteSDIO(ZLG7289_CMD_RST);

ZLG7289_DISABLE();

Delay(20);

unsignedintZlg7289_ReadKey()

unsigned

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

当前位置:首页 > 法律文书 > 调解书

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

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