东北大学ARM课程设计.docx
- 文档编号:14453277
- 上传时间:2023-04-23
- 格式:DOCX
- 页数:22
- 大小:17.83KB
东北大学ARM课程设计.docx
《东北大学ARM课程设计.docx》由会员分享,可在线阅读,更多相关《东北大学ARM课程设计.docx(22页珍藏版)》请在冰豆网上搜索。
东北大学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 ********************************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 ARM 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)