#include "2440addr.h"
#include "Phoenix_lib.h"
/////////////////////////////////////////////////////////////
//From here,the followed are common functions //
////////////////公共函数////////////////
/////////////////////////////////////////////////////////////
void delay(unsigned int time)
{
while(time--);
}
/////////////////////////////////////////////////////////////
//From here,the followed functions are for getting RTC time//
////////////////RTC函数////////////////
/////////////////////////////////////////////////////////////
void rtc_init(void)
{
rRTCCON=0x1;//使RTC可操作
}
char get_year(void)
{
return (rBCDYEAR/16*10+rBCDYEAR%16);
}
char get_month(void)
{
return (rBCDMON/16*10+rBCDMON%16);
}
char get_day(void)
{
return (rBCDDAY/16*10+rBCDDAY%16);
}
char get_week(void)
{
return (rBCDDATE/16*10+rBCDDATE%16);
}
char get_hour(void)
{
return (rBCDHOUR/16*10+rBCDHOUR%16);
}
char get_min(void)
{
return (rBCDMIN/16*10+rBCDMIN%16);
}
char get_sec(void)
{
return (rBCDSEC/16*10+rBCDSEC%16);
}
/////////////////////////////////////////////////////////////
//From here,the followed functions are for LCD//
////////////////LCD函数////////////////
/////////////////////////////////////////////////////////////
volatile unsigned short LCD_BUF1[240][320];//LCD_BUF1
//LCD_NUM[0-15][*]=0-F,LCD_NUM[16][*]="/",
//LCD_NUM[17][*]=":",LCD_NUM[18][*]="X",LCD_NUM[19][*]="Y"
unsigned char LCD_NUM[20][16]={ //0-f CODE
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,
0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,
0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,
0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,
0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,
0x00,0x00,0x00,0x10,0x10,0x18,0x28,0x28,0x24,0x3C,0x44,0x42,0x42,0xE7,0x00,0x00,
0x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x78,0x44,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,
0x00,0x00,0x00,0x3E,0x42,0x42,0x80,0x80,0x80,0x80,0x80,0x42,0x44,0x38,0x00,0x00,
0x00,0x00,0x00,0xF8,0x44,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,
0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x42,0x42,0xFC,0x00,0x00,
0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x40,0x40,0xE0,0x00,0x00,
//"/" CODE
0x00,0x00,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x00,
//: CODE
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,
//X CODE
0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00,
//Y CODE
0x00,0x00,0x00,0xEE,0x44,0x44,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00};
void Lcd_Init()//这个不多说了,参考LCD试验的注释、initialize
{
rGPCUP=0x0;
rGPCCON=0xaaaa56a9;// 0xaaaa02a9;
rGPDUP=0x0;
rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]
rLCDCON1=(7<<8)|(0<<7)|(3<<5)|(12<<1)|0;
rLCDCON2=(3)|(15<<24)|((240-1)<<14)|(12<<6); //VFPD
rLCDCON4=(13<<8)|30;
rLCDCON3=(36<<19)|((320-1)<<8)|(20);//HFPD=20
rLCDCON5=(0<<7)|(1<<11)|(0<<1)|(0<<3)|(1)|(1<<9)|(1<<8)|(0<<6)|(1<<10)|(0<<4);
rLCDSADDR1=(((unsigned int)LCD_BUF1>>22)<<21)|(((unsigned int)LCD_BUF1>>1)&0x1fffff);
rLCDSADDR2=((((unsigned int)LCD_BUF1+(320*2*240))>>1)&0x1fffff);
rLCDSADDR3=(0<<11)|320;
rLCDINTMSK|=3; // MASK LCD Sub Interrupt
rTPAL=0; // Disable Temp Palette
rLCDCON1|=1; // ENVID=ON;控制信号输出使能
}
void Lcd_Paint(unsigned char Red,unsigned char Green,unsigned char Blue)
{
int i,j;
for(i=0;i<240;i++)
for(j=0;j<320;j++)
LCD_BUF1[i][j]=(Red<<11)|(Green<<6)|(Blue);
}
//x、y为像素值,0-9直接写,"/"=10,":"=11,"x"=12,"y"=13.大小8X16像素
void Draw_Char(int x,int y,unsigned char num)
{
int i,j;
for(i=y*16;i<y*16+16;i++)
for(j=x*8;j<x*8+8;j++)
{
if((LCD_NUM[num][i-y*16])&(1<<(7-(j-x*8)%8)))
LCD_BUF1[i][j]=30<<11;
else
LCD_BUF1[i][j]=20;
}
}
/////////////////////////////////////////////////////////////
//From here,the followed functions are for ADC////////
////////////////ADC函数////////////////
/////////////////////////////////////////////////////////////
void adc_init(unsigned char channel)
{
rADCCON=(1<<14)|(24<<6)|((channel&7)<<3)|(1<<1)|(1);
}
int adc_read()
{
return (rADCDAT0&0x3ff);
}
/////////////////////////////////////////////////////////////
//From here,the followed functions are for Touch panel//
////////////////触摸板函数////////////////
/////////////////////////////////////////////////////////////
int x_data,y_data,x_ad,y_ad;//前两个存坐标值,后两个存得到的ad值
//这四个存坐标转换用的AD值,这是大概值,随时更新,有更到边缘的就更新。
int x_min=135,y_min=80,x_max=910,y_max=950;
//从ad值到坐标转换
void ad_to_coordinate()
{
x_data=240*(x_ad-135)/(910-135);
y_data=320*(y_ad-80)/(950-80);
}
//触摸屏中断,触摸中断和ad转换中断
void __irq touch_int()
{
if(rSUBSRCPND&(BIT_SUB_TC))//for touch interrupt
{
rADCTSC=0x0c;//触摸中断后,转为连续xy坐标转换
rADCCON|=0x1;//开始
ClearSubPending(BIT_SUB_TC);//请中断,注意顺序,参看我的寄存器分析
}
else//for ad change interrupt
{//ad转换完了
x_ad=(rADCDAT0&0x3ff);
y_ad=(rADCDAT1&0x3ff);
//更新最值
if(x_ad>x_max)
x_max=x_ad;
if(x_ad<x_min)
x_min=x_ad;
if(y_ad>y_max)
y_max=y_ad;
if(y_ad<y_min)
y_min=y_ad;
ad_to_coordinate();
rADCTSC=0xd3;//回等待模式
ClearSubPending(BIT_SUB_ADC);
}
ClearPending(0x80000000);//清除中断标志SRCPND
}
void touch_adc_init()
{
pISR_ADC=(unsigned int)touch_int;//触摸屏中断函数
rADCCON=(1<<14)|(24<<6)|(1);
rADCDAT0=0x0&(1<<14);
rADCDAT1=0x0&(1<<14);
rADCTSC=0xd3;
rADCDLY=65000;//delay some time when pen down;
rINTMSK &=0x7fffffff;//the ADC interrupt is enabled
rINTSUBMSK &=~((1<<9)|(1<<10));
}
没有合适的资源?快使用搜索试试~ 我知道了~
很丰富的ADS1.2环境下S3C2440裸机例程
共71个文件
tdt:12个
inc:12个
h:10个
需积分: 10 11 下载量 125 浏览量
2011-10-28
22:18:52
上传
评论 1
收藏 328KB ZIP 举报
温馨提示
F:\ads\myarm\很丰富的ADS1.2环境下S3C2440裸机例程 有mmu+触摸屏+nand flash+interrup
资源推荐
资源详情
资源评论
收起资源包目录
mmu+触摸屏+nand flash+interrup.zip (71个子文件)
mmu+触摸屏+nand flash+interrup
interrupt
2440addr.inc 4KB
Option.inc 4KB
2440addr.h 40KB
test.c 740B
2440init.s 18KB
Option.h 1KB
Memcfg.inc 3KB
test_Data
Release
TargetDataWindows.tdt 52KB
CWSettingsWindows.stg 3KB
Debug
TargetDataWindows.tdt 53KB
DebugRel
ObjectCode
test.o 28KB
2440init.o 9KB
2440init.s.lst 81KB
TargetDataWindows.tdt 86KB
test.bin 2KB
test.axf 11KB
test.mcp 191KB
Nand_1
Phoenix_lib.c 6KB
2440addr.inc 4KB
Option.inc 4KB
2440addr.h 40KB
2440init.s 18KB
Option.h 1KB
Phoenix_lib.h 2KB
Nand_1_Data
Release
TargetDataWindows.tdt 52KB
CWSettingsWindows.stg 3KB
Debug
TargetDataWindows.tdt 53KB
DebugRel
ObjectCode
2440init.o 9KB
Nand_1.o 28KB
Phoenix_lib.o 35KB
Nand_1.bin 5KB
Nand_1.axf 22KB
TargetDataWindows.tdt 86KB
Memcfg.inc 3KB
Nand_1.mcp 193KB
Nand_1.c 2KB
MMU
2440addr.inc 4KB
Option.inc 4KB
2440addr.h 40KB
2440init.s 18KB
Option.h 1KB
mmu.c 2KB
MMU_Data
Release
TargetDataWindows.tdt 52KB
CWSettingsWindows.stg 3KB
Debug
TargetDataWindows.tdt 53KB
DebugRel
ObjectCode
mmu.o 5KB
2440init.o 9KB
MMU.bin 2KB
MMU.axf 11KB
TargetDataWindows.tdt 62KB
Memcfg.inc 3KB
MMU.mcp 191KB
Touch_Panel
Phoenix_lib.c 4KB
2440addr.inc 4KB
Option.inc 4KB
2440addr.h 40KB
2440init.s 18KB
Option.h 1KB
Toutch_Panel.c 3KB
Touch_Panel_Data
Release
TargetDataWindows.tdt 53KB
CWSettingsWindows.stg 3KB
Debug
TargetDataWindows.tdt 54KB
DebugRel
ObjectCode
Toutch_Panel.o 33KB
2440init.o 9KB
Phoenix_lib.o 31KB
Touch_Panel.axf 22KB
TargetDataWindows.tdt 75KB
Touch_Panel.bin 5KB
Phoenix_lib.h 1KB
Memcfg.inc 3KB
Touch_Panel.mcp 193KB
共 71 条
- 1
资源评论
ab1007063309
- 粉丝: 0
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功