东北大学ARM课程设计.docx

上传人:b****2 文档编号:551701 上传时间:2023-04-29 格式:DOCX 页数:22 大小:17.83KB
下载 相关 举报
东北大学ARM课程设计.docx_第1页
第1页 / 共22页
东北大学ARM课程设计.docx_第2页
第2页 / 共22页
东北大学ARM课程设计.docx_第3页
第3页 / 共22页
东北大学ARM课程设计.docx_第4页
第4页 / 共22页
东北大学ARM课程设计.docx_第5页
第5页 / 共22页
东北大学ARM课程设计.docx_第6页
第6页 / 共22页
东北大学ARM课程设计.docx_第7页
第7页 / 共22页
东北大学ARM课程设计.docx_第8页
第8页 / 共22页
东北大学ARM课程设计.docx_第9页
第9页 / 共22页
东北大学ARM课程设计.docx_第10页
第10页 / 共22页
东北大学ARM课程设计.docx_第11页
第11页 / 共22页
东北大学ARM课程设计.docx_第12页
第12页 / 共22页
东北大学ARM课程设计.docx_第13页
第13页 / 共22页
东北大学ARM课程设计.docx_第14页
第14页 / 共22页
东北大学ARM课程设计.docx_第15页
第15页 / 共22页
东北大学ARM课程设计.docx_第16页
第16页 / 共22页
东北大学ARM课程设计.docx_第17页
第17页 / 共22页
东北大学ARM课程设计.docx_第18页
第18页 / 共22页
东北大学ARM课程设计.docx_第19页
第19页 / 共22页
东北大学ARM课程设计.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

东北大学ARM课程设计.docx

《东北大学ARM课程设计.docx》由会员分享,可在线阅读,更多相关《东北大学ARM课程设计.docx(22页珍藏版)》请在冰点文库上搜索。

东北大学ARM课程设计.docx

东北大学ARM课程设计

#include

#include"710defs.h"

#include"HB_it.h"

#include"main.h"

#include"lcd_pattern.h"

unsignedintL;

U8wchar[50];

U8wchar1[46]="0123456789星期一二三四五六天:

年月日";

U32temp=0;

U32i=0x3c0;

U32key=9;

U32a;

voidswitch1(intm,intn)

{

switch(m){

case0:

wchar[n]=wchar1[0];

wchar[n+1]=wchar1[1];

break;

case1:

wchar[n]=wchar1[2];

wchar[n+1]=wchar1[3];

break;

case2:

wchar[n]=wchar1[4];

wchar[n+1]=wchar1[5];

break;

case3:

wchar[n]=wchar1[6];

wchar[n+1]=wchar1[7];

break;

case4:

wchar[n]=wchar1[8];

wchar[n+1]=wchar1[9];

break;

case5:

wchar[n]=wchar1[10];

wchar[n+1]=wchar1[11];

break;

case6:

wchar[n]=wchar1[12];

wchar[n+1]=wchar1[13];

break;

case7:

wchar[n]=wchar1[14];

wchar[n+1]=wchar1[15];

break;

case8:

wchar[n]=wchar1[16];

wchar[n+1]=wchar1[17];

break;

case9:

wchar[n]=wchar1[18];

wchar[n+1]=wchar1[19];

break;

default:

break;

}

Delay(10000);

}

//--------------------------------------------------------------

voidswitch2(intm,intn)

{

switch(m){

caseMONDAY:

wchar[n]=wchar1[24];

wchar[n+1]=wchar1[25];

break;

caseTUESDAY:

wchar[n]=wchar1[26];

wchar[n+1]=wchar1[27];

break;

caseWEDNESDAY:

wchar[n]=wchar1[28];

wchar[n+1]=wchar1[29];

break;

caseTHURSDAY:

wchar[n]=wchar1[30];

wchar[n+1]=wchar1[31];

break;

caseFRIDAY:

wchar[n]=wchar1[32];

wchar[n+1]=wchar1[33];

break;

caseSATURDAY:

wchar[n]=wchar1[334];

wchar[n+1]=wchar1[35];

break;

caseSUNDAY:

wchar[n]=wchar1[36];

wchar[n+1]=wchar1[37];

break;

default:

break;

}

Delay(10000);

}

intmain(void)

{charLED;

charLED_temp;

chari;

chartemp1=0x0f;

LCD_IMAGE_TLCD_Size;

LCD_LOCATION_TLCD_Location;

LCDShowParameterLSP;

RTC_TIMErtc_data,rtc_data2;

LCD_Size.width=480;

LCD_Size.height=240;

LCD_Location.StartX=0;

LCD_Location.StartY=0;

LCD_Location.EndX=960;

LCD_Location.EndY=240;

LCDInit();

LCDShow(LCD_Size,LCD_Location);

LCDFIFOBufferSet(gImage_123);

LCDDisplayOn();

LSP.StartX=6;

LSP.StartY=0;

LSP.LibPlace=0x400000;

LSP.Color=0x07ff;

LSP.LetterChar=wchar;

LSP.LCDBuffer=gImage_123;

REG_RTC_INIR=0xa5eb1357;

RTCInit();

rtc_data.tm_year=2011;

rtc_data.tm_mon=06;

rtc_data.tm_mday=25;

rtc_data.tm_hour=00;

rtc_data.tm_min=00;

rtc_data.tm_sec=00;

rtc_data.tm_week=00;

L=rtc_data.tm_year;

rtcwrite(rtc_data,1);

Timing_Value();

wchar[8]=wchar1[40];

wchar[9]=wchar1[41];

wchar[14]=wchar1[42];

wchar[15]=wchar1[43];

wchar[20]=wchar1[44];

wchar[21]=wchar1[45];

wchar[26]=wchar1[38];

wchar[27]=wchar1[39];

wchar[32]=wchar1[38];

wchar[33]=wchar1[39];

wchar[38]=wchar1[38];

wchar[39]=wchar1[39];

wchar[38]=wchar1[38];

wchar[39]=wchar1[39];

wchar[40]=wchar1[20];

wchar[41]=wchar1[21];

wchar[42]=wchar1[22];

wchar[43]=wchar1[23];

KPIInit();

printf("Pleasepresskeys.\n");

Init_EBILED(0xff);

nIRQ3_INT();

while

(1)

{

rtcread(&rtc_data2);

Display_RTC_Time(rtc_data2);

Delay(1000000);

LCDOutputShow(LSP,23);

switch(key)

{

case3:

LCDFIFOBufferSet(gImage_1);

temp=(U32)gImage_1;

LCDDisplayOn();

Delay(2000000);

for(i=0;i<8;i++)

{

temp1=(temp1<<4)|(temp1>>4);

Set_EBILED(temp1);

Delay(1000000);

}break;

case2:

for(LED=0;LED<8;LED++)

{

LED_temp=0x1<

Set_EBILED(LED_temp);

Delay(1000000);

}

break;

case0:

LCDFIFOBufferSet(BlackBoard);

temp=(U32)BlackBoard;

LCDDisplayOn();

Delay(2000000);

break;

case1:

LCDFIFOBufferSet(gImage_123);

temp=(U32)gImage_123;

LCDDisplayOn();

Delay(2000000);break;

}

}

return0;

}

/*******************************************************************************

*FunctionName:

LCDInit

*Description:

LCD初始化

*Input:

None

*Output:

None

*Return:

None

*******************************************************************************/

voidLCDInit(void)

{

REG_GPIO_CFG6=0x555555;

REG_LCD_LCDCON=0x30c05;

REG_LCD_FIFO1PRM=0xa;

REG_LCD_F1DREQCNT=0x1e000f0;

REG_LCD_FIFO1RELACOLCNT=0x1e0;

//LCDCLK

REG_LCD_LCDTCON1=0x3b166;

REG_LCD_LCDTCON2=0x3bf00f1;

REG_LCD_LCDTCON3=0x105401;

REG_LCD_LCDTCON4=0x20101;

REG_LCD_LCDTCON5=0xe;

}

/*******************************************************************************

*FunctionName:

LCDShow

*Description:

设置LCD显示位置

*Input:

None

*Output:

None

*Return:

None

*******************************************************************************/

voidLCDShow(LCD_IMAGE_TSize,LCD_LOCATION_TLocation)

{

REG_LCD_F1DREQCNT=(Size.width<<15)+Size.height;

REG_LCD_FIFO1RELACOLCNT=(Size.width>>1);

REG_LCD_DISPWINS=(Location.StartY<<16)+Location.StartX;

REG_LCD_DISPWINE=(Location.EndY<<16)+Location.EndX;

}

/*******************************************************************************

*FunctionName:

LCDShow

*Description:

设置LCD显示位置

*Input:

None

*Output:

None

*Return:

None

*******************************************************************************/

voidLCDFIFOBufferSet(PUINT8Buffer)

{

REG_LCD_F1SADDR=(U32)Buffer;

}

/*******************************************************************************

*FunctionName:

LCDDisplayOn

*Description:

打开LCD

*Input:

None

*Output:

None

*Return:

None

*******************************************************************************/

voidLCDDisplayOn(void)

{

lcdIoctl(1,1,0);

}

/*******************************************************************************

*FunctionName:

LCDDisplayOff

*Description:

关闭LCD

*Input:

None

*Output:

None

*Return:

None

*******************************************************************************/

voidLCDDisplayOff(void)

{

lcdIoctl(1,2,0);

}

/*******************************************************************************

*FunctionName:

Delay

*Description:

用于不精确延时

*Input:

延时时间

*Output:

None

*Return:

None

*******************************************************************************/

voidDelay(U32t)

{

do

{

t--;

}while(t);

}

/*******************************************************************************

*FunctionName:

KPIInit

*Description:

KPI初始化

*Input:

None

*Output:

None

*Return:

None

*******************************************************************************/

voidKPIInit(void)

{

REG_GPIO_CFG2|=0x000aaaaa;//将GPIO设置为KPI模式

REG_GPIO_CFG2&=0xfffaaaaa;

REG_AIC_SCR29=0x00000045;//将KPI中断设置为高电平有效,优先级为5

REG_AIC_MECR=0x20000000;

REG_KPICONF=0x00142fff;

}

voidInit_EBILED(charcValue)

{

REG_EXT0CON=EBI_EXT0_VALUE;

Set_EBILED(cValue);

}

/*******************************************************************************

*FunctionName:

Set_EBILED

*Description:

LED显示

*Input:

LED每一位的亮灭

*Output:

None

*Return:

None

*******************************************************************************/

voidSet_EBILED(charcValue)

{

EBILED_ADDRESS=~cValue;

}

/*******************************************************************************

*FunctionName:

nIRQ3_INT

*Description:

nIRQ3中断初始化

*Input:

*Output:

None

*Return:

None

*******************************************************************************/

voidnIRQ3_INT(void)

{

REG_AIC_SCR5=0x00000005;

REG_AIC_MECR=0x20;

}

/*******************************************************************************

*FunctionName:

rtcwrite

*Description:

写入时间信息

*Input:

对应内容结构体及显示方式(12/24)

*Output:

None

*Return:

None

*******************************************************************************/

voidrtcwrite(RTC_TIMErtc_data,intTSSR)

{

U32temp,TLR,CLR,DWR;

TLR=((rtc_data.tm_hour/10)<<20)+((rtc_data.tm_hour%10)<<16)+((rtc_data.tm_min/10)<<12)+((rtc_data.tm_min%10)<<8)+((rtc_data.tm_sec/10)<<4)+(rtc_data.tm_sec%10);

CLR=(((rtc_data.tm_year%100)/10)<<20)+((rtc_data.tm_year%10)<<16)+((rtc_data.tm_mon/10)<<12)+((rtc_data.tm_mon%10)<<8)+((rtc_data.tm_mday/10)<<4)+(rtc_data.tm_mday%10);

DWR=rtc_data.tm_week;

do

{REG_RTC_AER=0xa965;

temp=(REG_RTC_AER&0x10000);

if(temp==0x10000)

{

REG_RTC_FCR=0x00000734;

REG_RTC_TLR=TLR;

REG_RTC_CLR=CLR;

REG_RTC_TSSR=TSSR;

REG_RTC_DWR=DWR;

REG_RTC_RIER=0x2;

break;

}

}while

(1);

}

/*******************************************************************************

*FunctionName:

rtcread

*Description:

读取显示信息

*Input:

要显示内容对应结构体的地址

*Output:

None

*Return:

None

*******************************************************************************/

voidrtcread(RTC_TIME*p)

{

U32YearH;

YearH=((L/1000)<<12)+(((L/100)%10)<<8);

(*p).tm_hour=((REG_RTC_TLR>>16)&0xff);

(*p).tm_min=((REG_RTC_TLR>>8)&0xff);

(*p).tm_sec=(REG_RTC_TLR&0xff);

(*p).tm_year=YearH+((REG_RTC_CLR&0x00ff0000)>>16);

(*p).tm_mon=((REG_RTC_CLR&0x0000ff00)>>8);

(*p).tm_mday=(REG_RTC_CLR&0x000000ff);

(*p).tm_week=REG_RTC_DWR;

}

/*******************************************************************************

*FunctionName:

Timing_Value

*Description:

定时设置

*Input:

None

*Output:

None

*Return:

None

*******************************************************************************/

voidTiming_Value(void)

{

REG_RTC_CAR=0x980301;

REG_RTC_TAR=0x0;

REG_RTC_RIER=0x1;

}

/*******************************************************************************

*FunctionName:

Display_RTC_Time

*Description:

控制台显示

*Input:

要显示内容对应结构体

*Output:

None

*Return:

None

********************************************************************

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2