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

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

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

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

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

优良中及格不及格

2月25日

一.课程设计目的

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

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

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

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

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

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

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

时间的设定能够经过超级终端实现;

三.功能实现

1.总体功能框图

N

YY

2.详细设计:

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

①.

#include"

uhal.h"

myuart.h"

KeyBoard.h"

Timer.h"

Isr.h"

44b.h"

#include"

Zlg7289.h"

def.h"

lcd320.h"

intTimer3INTCount=0;

inthour=0;

intminute=0;

#pragmaimport(__use_no_semihosting_swi)//ensurenofunctionsthatusesemihosting

intmain(void)

{

intclock_h=23;

intclock_m=59;

intclock_s=0;

intkey;

intval=0;

ARMTargetInit();

//开发版初始化

Zlg7289_Reset();

Init_Timer3(100,16,40000,0);

INTS_OFF();

//DisableinterruptinPSR

SetISR_Interrupt(INT_TIMER3_OFFSET,Timer3_ISR,0);

Open_INT_GLOBAL();

Open_INT(BIT_TIMER3);

INTS_ON();

//EnableinterruptinPSR

Start_Timer3();

Uart_Printf("

\n"

);

//lcd屏*************lcd屏*****************lcd屏**********

LCD_Init();

LCD_ChangeMode(DspTxtMode);

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

while

(1)

{

//****************对钟************************//

while(!

(rPDATG&

ZLG7289_KEY))//有按键按下时进入while死循环,松开时跳出

{

key=Zlg7289_ReadKey();

//按键值赋给key。

//Stop_Timer3();

//防止中断影响键盘扫描,关掉中断。

Delay(100);

//延时防止时序错误。

if(key==18|key==10|key==2)//对钟键按下是。

{

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

Delay(1000);

Delay(1000);

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

Timer3INTCount=Timer3INTCount+1;

if(Timer3INTCount>

59)

Timer3INTCount=0;

}

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

minute=minute+1;

//分钟加一

if(minute>

59)//分钟大于59时清零

minute=0;

//Timer3INTCount=0;

//秒清零

if(key==2)//原理同分钟

hour=hour+1;

if(hour>

23)

hour=0;

}

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);

else;

//Start_Timer3();

//闹钟判断*************闹钟判断****************闹钟判断***************

while(hour==clock_h&

minute==clock_m&

key!

=1&

=9&

=17&

=2&

=10&

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

//Uart_Printf("

timeisover!

getingupnow!

!

\n"

LCD_printf("

\r%d"

rTCNTO3);

}

②.

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)/divider

rTCFG0&

=~(0xff<

<

8);

rTCFG0|=(prescaler1<

//Allinterrupt,selectMUXinputforTimerN

rTCFG1&

=~(0x0f<

24|0x0f<

12);

rTCFG1|=(div<

rTCMPB3=compb3;

rTCNTB3=countb3;

rTCON|=(0x01<

19);

//Autoreload

voidStart_Timer

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

当前位置:首页 > IT计算机

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

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