基于arm9-s3c2440的数字相框的设计(编辑修改稿)内容摘要:

0x0 _ (0x2020001) ROM( Nandflash): K9F2G08,128字节 ; K9F2G08,256字节。 并没有映射到总线空间,近似认为是个外接 U盘。 在 nandflash启动模式下,上电后只有前 4K代码会自动运行(一般远远大于 4K),所以,其余部分要用户写程序复制到内存运行。 移植 Linux操作系统后,就选择这种模式。 SDRAM连接:地址线并联,数据线串联, 2片芯片的 地址线 是并联后与 CPU连接。 2种 ROM有开关选择 应用扩展板 用户可以根据项目需要删减: 13 1) 、 TFT LCD接口: 、 7寸屏 2)、触摸屏: 4线制电阻触摸屏 3) 、 USB HOST: USB主机设备接口,读写 U盘, USB鼠标识别 4) 、 SD卡接口:读写 SD卡 5) 、 ADC接口:模数转换,测电压的接口,充电电流,电压接口 6) 、 CMOS摄像头接口: 7) 、 GPIO:手电筒控制、继电器控制,高低电平 0和 1( 0V和 ) 8) 、 RS232:和电脑通讯, GPS,短信模块, RS485 通信 9)、双声道立体声输出: MP3, MP4播放 10) 、 录音 11) 、 USB SLAVE: USB从机,模拟 U盘,模拟 USB鼠标,模拟 USB触摸板 12)、 10/100M自适应网络接口:国际互联网 13) 、 RTC:百年历 2020~2099年 名字满屏滚动源程序: /*********************************************************************** *****模块名: *****功 能: LCD显示字符测试程序 *****说 明: 本程序是用的屏是 X35 (索尼 ) 其他屏可能要修改个别参数。 ***********************************************************************/ include //包含头文件 ,它在 工程目录 /Include/ /**********************************************************************/ define U8 unsigned char define U16 unsigned short define U32 unsigned int define M5D(n) ((n) amp。 0x1fffff) //用于设置显示缓存区时,取低 21位地址 define LCD_WIDTH 320 //屏幕的宽 define LCD_HEIGHT 240 //屏幕的高 //垂直同步信号的脉宽、后肩和前肩 define VSPW (0) //垂直同步信号的脉宽 (X35屏只能是该值 ) define VBPD (11) //垂直同步信号的后肩 define VFPD (3) //垂直同步信号的前肩 //水平同步信号的脉宽、后肩和前肩 define HSPW (0) //水平同步信号的脉宽 define HBPD (68) //水平同步信号的后肩 define HFPD (1) //水平同步信号的前肩 //显示尺寸 define LINEVAL (LCD_HEIGHT1) define HOZVAL (LCD_WIDTH1) //for define CLKVAL_TFT 7 //设置时钟信号 define MVAL_USED 0 // 当屏是 TFT时设置为 0, STN屏时设置为 1 define PNRMODE_TFT 3 //选择显示模式 TFT型 LCD define BPPMODE_TFT 12 //16位 TFT型 LCD //for LCDCON5 define BPP24BL 0 //32位数据表示 24位颜色值时,低位数据有效,高 8位无效 define INVVCLK 1 //像素值在 VCLK下降沿有效 define INVVLINE 1 //翻转 HSYNC信号 define INVVFRAME 1 //翻转 VSYNC信号 define INVVD 1 //翻转 VD信号极性 define INVVDEN 1 //翻转 VDEN信号极性 define PWREN 1 //使能 PWREN信号 define BSWP 0 //颜色数据字节不交换 define HWSWP 1 //颜色数据半字不交换 (24BPP时不用交换 ) //定义显示缓存区 320 240 14 //注意这里是定义成 U16类型,如果想用 24BPP则要用 U32 volatile U16 LCD_BUFFER[LCD_HEIGHT][LCD_WIDTH]。 // 汉字表: //(取模方式,横向取模,字节正序) unsigned char const zhen[]= { 0x00,0x00,0x08,0x00,0x00,0x20,0xFE,0xFC,0x0B,0xF8,0x01,0x20,0x28,0x40,0x0A,0x08, 0xFD,0x20,0x28,0x40,0x12,0x08,0x11,0xFC,0xFE,0x40,0x12,0x08,0x11,0x20,0xAA,0x78, } unsigned char const bao[]= { 0x33,0xF8,0x12,0x20,0xAA,0x48,0x30,0x40,0x7C,0x20,0xFE,0x48,0x50,0x40,0x13,0xFE, 0x10,0xA8,0x97,0xFC,0x10,0x70,0x10,0x98,0x10,0xE0,0x10,0xA8,0xFE,0x88,0x11,0x50, } unsigned char const zhu[]= { 0x10,0xA8,0x10,0x88,0x12,0x48,0x1D,0x24,0x10,0xAA,0x14,0x44,0xE1,0x24,0x1E,0xCA, 0x18,0x42,0x42,0x22,0xF0,0x8A,0x10,0x40,0x00,0x20,0x40,0x06,0x10,0x40,0x00,0x20, } /************************************************************************** ***** 函数名: LCD_Init(void) ***** 功能: LCD初始化 ***** 参数: 无 ***** 返回值: 无 ****************************************************************************/ void LCD_Init(void) { rGPCUP = 0x00000000。 rGPCCON = 0xaaaa02a9。 rGPDUP = 0x00000000。 rGPDCON=0xaaaaaaaa。 //Initialize VD[15:8] rLCDCON1=(CLKVAL_TFT8)|(MVAL_USED7)|(PNRMODE_TFT5)|(BPPMODE_TFT1)|0。 rLCDCON2=(VBPD24)|(LINEVAL14)|(VFPD6)|(VSPW)。 rLCDCON3=(HBPD19)|(HOZVAL8)|(HFPD)。 rLCDCON4=(HSPW)。 rLCDCON5 = (111) |(INVVCLK10) | (INVVLINE9) | (INVVFRAME8) | (07) | (INVVDEN6) | (PWREN3) |(BSWP1) | (HWSWP)。 rLCDSADDR1=(((U32)LCD_BUFFER22)21)|M5D((U32)LCD_BUFFER1)。 //如果是 24BPP时是 M5D( ((U32)LCD_BUFFER+(LCD_WIDTH*LCD_HEIGHT*4))1 )。 因为24BPP一个字占 4字节 rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(LCD_WIDTH*LCD_HEIGHT*2))1 )。 rLCDSADDR3=LCD_WIDTH*2/2。 //如果是 24BPP时是 LCD_WIDTH*4/2 因为 24BPP一个字占 4字节 rLCDINTMSK|=(3)。 // MASK LCD Sub Interrupt LCD里应用一般用不到中断,关掉 rTCONSEL = 0。 // Disable LPC3480 rGPGUP=rGPGUPamp。 (~(14))|(14)。 // Pullup disable rGPGCON=rGPGCONamp。 (~(38))|(38)。 //GPG4=LCD_PWREN (设置 GPG4为 LCD电源管脚 ) rGPGDAT = rGPGDAT | (14)。 //10000 rLCDCON5=rLCDCON5amp。 (~(13))|(13)。 // PWREN(开电源使能 ) rLCDCON5=rLCDCON5amp。 (~(15))|(05)。 // INVPWREN(电源使能信号不反转 ) rLCDCON1|=1。 //开启 LCD显示这句不能少 } /*********************************************************************** ***** 函数名: PutPixel(void) ***** 功能: 绘制像素点 ***** 参数: x:横坐标 y:纵坐标 c颜色 ***** 返回值: 无 15 ***********************************************************************/ void PutPixel(U32 x,U32 y, U32 c ) { LCD_BUFFER[y][x] = c。 } /*********************************************************************** ***** 函数名: Draw_Text16(void) ***** 功能: 绘制大小为 16 16的中文字符 ***** 参数: x:横坐标 y:纵坐标 color文字颜色 backColor 文字背景颜色 ch:字模数组 ***** 返回值: 无 ***********************************************************************/ void Draw_Text16(U32 x,U32 y,U32 color,U32 backColor,const unsigned char ch[]) { unsigned short int i,j。 unsigned char mask,buffer。 for(i=0。 i16。 i++) { mask=0x80。 //掩码 1000 0000 buffer=ch[i*2]。 //提取一行的第一个字节 for(j=0。 j8。 j++) //左边 8点 { if(bufferamp。 mask) { PutPixel(x+j,y+i,color)。 //为笔画上色 } else { PutPixel(x+j,y+i,backColor)。 //填充背景色 } mask=mask1。 } mask=0x80。 //掩码 b。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。