ili9325心得体会.docx

上传人:wux****ua 文档编号:8354618 上传时间:2020-03-28 格式:DOCX 页数:15 大小:77.09KB
返回 下载 相关 举报
ili9325心得体会.docx_第1页
第1页 / 共15页
ili9325心得体会.docx_第2页
第2页 / 共15页
ili9325心得体会.docx_第3页
第3页 / 共15页
点击查看更多>>
资源描述
9325TFT320*240触摸屏学习总结(2011-02-27 14:51:23) 转载标签: 杂谈分类: 学习笔记 一、图片显示液晶显示最重要的是了解TFT320*240的工作原理。TFT320*240顾名思义就是有一行中320个点,而总共有240行,即共有320*240个点。每个点的颜色由两位U8的数据(Image2Lcd产生的是8位的数组,如果图片是320*240的,则输出同样类型的图片产生的数组个数是320*240*2)决定,也可以说一个点显示在液晶上,对它的描述是一个U16的数。遇到的问题:arm79中有关于关于Image2LCD软件的设置。真彩色LCD设置: C语言数组 水平扫描 16位真彩色 320 240图片的容量需小于:37KB使用代码:address_set(0,0,239,319); for(i=0;i73280;i+) dd=(0x00|gImage_picturei*2+1)8; dd=dd|gImage_picturei*2; LCD_WriteRAM(dd); 我用这种方式显示图片时发现图片显示过后,屏幕就马上变为白色,相当于显示了就马上清屏。用while(1)让以上程序不断循环时发现,屏幕处于显示图片和清屏交替的状态。后来修改了显示程序:address_set(0, 0,239,319); / i,j, for(i=0; i240; i+) for(j=0; j320; j+) dd=(unsigned int)gImage_mmi*320*2+j*2+18; dd=dd|(unsigned int)gImage_mmi*320*2+j*2; LCD_WriteRAM(dd); LCD_WriteRAM_Ready();图片显示正常。其中除了一些关于寄存器的初始化工作外,地址的设置也是很重要的,void address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2) LCD_WriteReg(0x0020,x1);/设置X坐标位置 地址计数器初始值x LCD_WriteReg(0x0021,y1);/设置Y坐标位置 地址计数器初始值y LCD_WriteReg(0x0050,x1); /开始XLCD_WriteReg(0x0052,y1); /开始Y LCD_WriteReg(0x0051,x2); /结束XLCD_WriteReg(0x0053,y2); /结束Y LCD_WriteRAM_Prepare(); / 写数据准备地址设置出现问题或与原来图片的尺寸有差别时会导致图片无法正常显示。FSMC地址设置问题:奋斗STM32MINI版中TFT的RS接到了地址STM32的A16,为什么地址是这样定义的,不懂#defineBank1_LCD_D(uint32_t)0x60020000)/dispDataADDR#defineBank1_LCD_C(uint32_t)0x60000000) /dispRegADDR如果选择地址16的话我感觉应该是#defineBank1_LCD_D(uint32_t)0x60010000)/dispDataADDR#defineBank1_LCD_C(uint32_t)0x60000000) /dispRegADDRSTM32FSMC设置为16位时,并不是A0无效,而是A0当A1用.那么A16就当A17用了.所以是20000.有些CPU则是16或32位时,A0,A1无效.这样.地址不变.二、彩条显示程序void ili9320_Test()u16 i,j;address_set(0,0,239,319); for(i=0;i240;i+) for(j=0;j199)LCD_WriteRAM(0x07e0); else if(i159)LCD_WriteRAM(0x07ff); else if(i119)LCD_WriteRAM(0xf800); else if(i79)LCD_WriteRAM(0xf81f); else if(i39)LCD_WriteRAM(0xffe0); else LCD_WriteRAM(0xffff);三、在屏幕上显示12张80*80的图片for(j=0;j3;j+) for(k=0;k4;k+) address_set(80*j,80*k,80*j+79,80*k+79);for(i=0; i80; i+) for(m=0; m80; m+) dd=(unsigned int)gImage_1i*80*2+m*2+18; dd=dd|(unsigned int)gImage_1i*80*2+m*2; LCD_WriteRAM(dd); 四、显示ASCII字符8*16点阵的ASCII字符表示液晶屏上的一个字符由8列16行的点阵构成。一个字符也就需要16个U8。一般我们可以输入所需要的字符,在液晶屏上会根据ascii_8x16显示相应的字符。ascii_8x16就是一连串8为数组的组成。相关的程序:(1)先定义自己要显示的字符串,也可以是字符,如const unsigned char tab=wo shi wu hong sheng;(2)再在main()函数中调用相应的显示函数void test(void) LCD_Clear(Green); ili9320_PutChars(0,0,tab,0xF800,0x1fff); 在第一行显示字符串void ili9320_PutChars(u16 x,u16 y,uc8 *z,u16 charColor,u16 bkColor) u16 i=0; u16 j=0; u16 w=0; unsigned char c=0; unsigned char tmp_char=0; address_set(0,0,239,319); for (w=0;w20;w+) c=*z;z=z+; for (i=0;i16;i+) tmp_char=ascii_8x16(c-0x20)*16)+i; for (j=0;j 7-j) & 0x01 = 0x01) ili9320_SetPoint(x+j,y+i,charColor); / 字符颜色 (注意此处是给第x+j列,第y+i行对应的点设置颜色) else ili9320_SetPoint(x+j,y+i,bkColor); / 背景颜色/ x=x+8; void ili9320_SetPoint(u16 x,u16 y,u16 point) LCD_WriteReg(32, y); LCD_WriteReg(33, x); LCD_WriteIndex(34); LCD_WriteRAM(point);五、显示文字一般的字模软件产生的都是8bit的数组,所以在参考别人的程序上,将显示文字的程序做了一点小小的改动。取模软件很多像晓奇工作室,或者其他什么的都可以。产生的数组如下:extern const uc16 ASCII_Table =0x06,0x40,0x38,0x50,0x08,0x48,0x08,0x48,0x08,0x40,0xFF,0xFE,0x08,0x40,0x08,0x48,0x0E,0x28,0x38,0x30,0xC8,0x20,0x08,0x50,0x09,0x92,0x08,0x0A,0x28,0x06,0x10,0x02,显示程序:void ili9320_PutCharz(u16 x,u16 y,unsigned char z,u16 charColor,u16 bkColor)u16 i=0;u16 j=0;u16 m=0;u16 tmp_char=0;uc16 *hz;hz=ASCII_Table;address_set(0,0,239,319);while(z-)for (i=0;i16;i+) for(m=0;m2;m+) tmp_char=*hz; for (j=0;j 7-j) & 0x01 = 0x01) ili9320_SetPoint(x+j+8*m,y+i,charColor); / 字符颜色 else ili9320_SetPoint(x+j+8*m,y+i,bkColor); / 背景颜色/ hz=hz+; x=x+16; 六、FSMC问题:在FSMC的配置中,FSMC的访问模式有四种,请问有人知道这四种模式都有什么区别?,在什么情况下该启用那种模式 如:FSMC_AccessMode=FSMC_AccessMode_B;答:下列内容来自参考手册FSMC章节:模式A SRAM/PSRAM(CRAM) OE翻转 模式A与模式1的区别是NOE的变化和相互独立的读写时序。模式2/B NOR闪存 模式2/B与模式1相比较,不同的是NADV的变化,且在扩展模式下(模式B)读写时序相互独立。(只有当设置了扩展模式时(模式B),FSMC_BWTRx才有效,否则该寄存器的内容不起作用。)模式C NOR闪存 - OE翻转 模式C与模式1不同的是,NOE和NADV的翻转变化,以及独立的读写时序。模式D 带地址扩展的异步操作 模式D与模式1不同的是NADV的翻转变化,NOE的翻转出现在NADV翻转之后,并且具有独立的读写时序复用模式 地址/数据复用的NOR闪存异步操作 复用模式与模式D不同的是地址的低16位出现在数据总线上程序:void FSMC_LCD_Init(void) FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef FSMC_TimingInitStructure; /FSMC_TCRx位域 FSMC_TimingInitStructure.FSMC_AddressSetupTime = 0x02; /地址建立时间 多少个AHB时钟周期 FSMC_TimingInitStructure.FSMC_AddressHoldTime = 0x00; /地址保持时间 FSMC_TimingInitStructure.FSMC_DataSetupTime = 0x05; /数据建立时间 FSMC_TimingInitStructure.FSMC_BusTurnAroundDuration = 0x00;/总线恢复时间 FSMC_TimingInitStructure.FSMC_CLKDivision = 0x00; / 时钟分频因子 FSMC_TimingInitStructure.FSMC_DataLatency = 0x00; / 数据产生时间 :突发模式下产生第一个数据所需的时钟数目 FSMC_TimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_B; /访问模式B NOR闪存 模式 FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; /选择Bank1 FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;/0:地址/数据不复用 FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR; /存储器类型:NOR闪存 FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; /存储器数据总线宽度16位 FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;/禁用成组访问模式;这是复位后的默认状态 FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;/NWAIT等待信号为低时有效;这是复位后的默认状态 FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;/不允许直接的非对齐成组操作;这是复位后的默认状态 FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;/NWAIT信号在等待状态前的一个数据周期有效;这是复位后的默认状态 FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;/允许FSMC对存储器的写操作;这是复位后的默认状态 FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; /禁用NWAIT信号,在设置的闪存保持周期之后不会检测NWAIT信号插入等待状态 FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; /EXTMOD:扩展模式使能 0:不使用FSMC_BWTR寄存器,这是复位后的默认状态 FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; /成组写使能位 0:写操作始终处于异步模式 FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &FSMC_TimingInitStructure; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &FSMC_TimingInitStructure; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); 七、9999计数void test(void)vu16 time;LCD_Clear(White);LCD_SetTextColor(Blue);LCD_SetBackColor(White);address_set(0,0,239,319);LCD_WriteRAM_Ready();Delay(0xfffff);Delay(0xfffff);ili9320_PutChars(0,0,tab,7,0xF800,0x1fff);Delay(0xaffff);while(1)for(time=0;time10000;time+)Delay(0xaffff);Delay(0xaffff);table0=time/1000+ 0x30;table1=time/100+ 0x30;table2=time/10+ 0x30;table3=time+ 0x30;GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_8);ili9320_PutChars(57,0,table,4,0xF800,0x1fff);
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!