嵌入式技术及应用实验报告模板4.docx
- 文档编号:16974533
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:13
- 大小:641.48KB
嵌入式技术及应用实验报告模板4.docx
《嵌入式技术及应用实验报告模板4.docx》由会员分享,可在线阅读,更多相关《嵌入式技术及应用实验报告模板4.docx(13页珍藏版)》请在冰点文库上搜索。
嵌入式技术及应用实验报告模板4
年级
班级
学号
专业
姓名
题目名称
实验四、LCD实验
实验设计要求
设计要求
在TFT液晶屏幕上显示文本及图形,包括显示16×16的汉字和显示8×16的ASCII码。
实
验
设
计
思
路
(1)硬件电路设计
(2)软件程序设计
1)TFT屏幕的初始化:
本液晶屏幕使用SPI总线与STM32微控制器相连。
使用STM32的SPI控制器,将其配置为SPI主模式,双向传输,8BIT数据位,时钟空闲高,上升沿触发,最高有效位优先传输。
实
验
步
骤
与
结
果
分
析
/*******************************************************************************
*FunctionName:
LCD_DrawLine
*Description:
Displaysaline.
*Input:
-Xpos:
specifiestheXposition.
*-Ypos:
specifiestheYposition.
*-Length:
linelength.
*-Direction:
linedirection.
*Thisparametercanbeoneofthefollowingvalues:
Vertical
*orHorizontal.
*Output:
None
*Return:
None
*******************************************************************************/
voidLCD_DrawLine(u8Xpos,u16Ypos,u16Length,u8Direction)画直线程序
{
u32i=0;
//LCD_Display_Color(BackColor);
if(Direction==Horizontal)
{
for(i=0;i { LCD_DisplayPoint(Xpos+i,Ypos,TextColor); } } else { for(i=0;i { LCD_DisplayPoint(Xpos,Ypos+i,TextColor); } } } /******************************************************************************* *FunctionName: LCD_DrawRect *Description: Displaysarectangle. *Input: -Xpos: specifiestheXposition. *-Ypos: specifiestheYposition. *-Height: displayrectangleheight. *-Width: displayrectanglewidth. *Output: None *Return: None *******************************************************************************/ voidLCD_DrawRect(u8Xpos,u16Ypos,u8Height,u16Width) { LCD_DrawLine(Xpos,Ypos,Width,Horizontal); LCD_DrawLine(Xpos,(Ypos+Height),Width,Horizontal); LCD_DrawLine(Xpos,Ypos,Height,Vertical); LCD_DrawLine((Xpos+Width),Ypos,Height,Vertical); } /******************************************************************************* *FunctionName: LCD_DrawPict *Description: Displaysa16bitpicture. *Input: -Pict: pointertothepicturearray. *Output: None *Return: None *******************************************************************************/ voidLCD_DrawPict(constu8*Pict) { u32index=0,i=0; constu8*pu8Temp=Pict; LCD_SelectRegion(0,0,0x7f,0xff); for(index=0;index<160;index++) { for(i=0;i<128;i++) { LCD_WriteDat(*(pu8Temp+1)); LCD_WriteDat(*pu8Temp); pu8Temp+=2; } } } /******************************************************************************* *DisplaybargraphonLCDdisplay* *Parameter: pos_x: horizontalpositionofbargraphstart* *pos_y: verticalpositionofbargraph* *value: sizeofbargraphactivefield(inpixels)* *Return: * *******************************************************************************/ voidLCD_DrawBarGraph(intpos_x,intpos_y,intvalue)画曲线程序 { inti,j; intiPosX=pos_x*XPIXES; intiPosY=pos_y*YPIXES; LCD_ClearLine(pos_y); //value0~16*8 for(i=0;i<26;i++)//26*5~128 { if(value>5) { //lcd_putchar(0x05); LCD_SelectRegion(iPosX,iPosY,iPosX+4,iPosY+YPIXES-1); for(j=0;j { LCD_WriteDat(TextColor>>8); LCD_WriteDat(TextColor&0xff); } iPosX+=8; value-=8;//5; } else { if(value<0) { break; } LCD_SelectRegion(iPosX,iPosY,iPosX+value-1,iPosY+YPIXES); for(j=0;j { LCD_WriteDat(TextColor>>8); LCD_WriteDat(TextColor&0xff); } break; } } } /********************************************************************************************* *name: Lcd_DspHz16 *func: display16x16ChineseSymbolonLcd *para: u8Line--Thelinenumberwhichwilldisplaythecharacter. *u8Column--TheColumnnumberwhichwilldisplaythecharacter. *u8*Pu8FontStr--stringtodisplay *ret: none *modify: *comment: *********************************************************************************************/ voidLcd_DspHz16(u8Line,u8Column,u8*Pu8FontStr) { u16i,j,k,x,y,xx,iOffStr; u8qm,wm,x0,y0; u32ulOffset; u8u8Mode; 显示艺术“杨”的编码u8hzbuf[410]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00, 0x01,0xFF,0xE0,0x00,0x00,0x00,0x00,0x03,0xE1,0xF3,0xFF,0xFF,0x00,0x00,0x07,0x00, 0x77,0xFF,0xFF,0x00,0x00,0x0E,0x00,0x7F,0x00,0x00,0x00,0x00,0x0E,0x00,0x7C,0x00, 0x00,0x00,0x00,0x0C,0x00,0xF8,0x00,0x00,0x00,0x00,0x1C,0x00,0xF8,0x00,0x00,0x00, 0x00,0x1C,0x00,0xF0,0x00,0x00,0x00,0x03,0xF8,0x01,0xF0,0x00,0x00,0x00,0x07,0xF8, 0x01,0xF0,0x00,0x00,0x00,0x0F,0x00,0x00,0x30,0x00,0x00,0x00,0x0E,0x00,0x00,0x38, 0x00,0x00,0x00,0x1C,0x00,0x00,0x3F,0xFE,0x00,0x00,0x1C,0x00,0x00,0x3F,0xFC,0x00, 0x00,0x38,0x00,0x00,0x30,0xF0,0x00,0x00,0x38,0x00,0x00,0x73,0xE0,0x01,0x00,0x30, 0x00,0x00,0x77,0x80,0x03,0x00,0x70,0x00,0x00,0xFF,0x00,0x0F,0x00,0x70,0x00,0x78, 0xFC,0x00,0x1F,0x00,0x7F,0x01,0xFF,0xF0,0x00,0x00,0x00,0x7F,0x87,0xFF,0xC0,0x00, 0x00,0x00,0x3F,0x0F,0x8F,0x80,0x00,0x00,0x00,0x0E,0x1E,0x0F,0x00,0x00,0x00,0x00, 0x1E,0x38,0x07,0x00,0x00,0x00,0x00,0x3C,0x38,0x07,0x00,0x00,0x00,0x00,0x78,0x30, 0x07,0x00,0x00,0x00,0x00,0xF0,0x30,0x07,0x00,0x00,0x00,0x01,0xE0,0x38,0x03,0xC0, 0x33,0x80,0x03,0xC0,0x38,0x03,0xC0,0x73,0x00,0x03,0x80,0x38,0x07,0x00,0xE3,0x00, 0x07,0x00,0x18,0x0E,0x01,0xC7,0x00,0x0E,0x00,0x1C,0x1E,0x03,0x86,0x00,0x0E,0x00, 0x0E,0xF8,0x07,0x0E,0x01,0x0E,0x00,0x0F,0xF0,0x1E,0x0E,0x01,0x0E,0x00,0x07,0xC0, 0x38,0x0C,0x01,0x0E,0x00,0x07,0x00,0x70,0x1C,0x03,0x0F,0x00,0x0C,0x01,0xE0,0x18, 0x03,0x0F,0xC0,0x1C,0x03,0xC0,0x38,0x03,0x07,0xE0,0x18,0x0F,0x00,0x38,0x07,0x03, 0xE0,0x38,0x1E,0x03,0xF0,0x07,0x01,0xC0,0x38,0x78,0x07,0xF0,0x0F,0x01,0xC0,0x38, 0xF0,0x0F,0xE0,0x0E,0x01,0xC0,0x1D,0xC0,0x1C,0x00,0x1E,0x03,0x80,0x1F,0xC0,0x1C, 0x00,0x1C,0x03,0x80,0x1F,0x80,0x38,0x00,0x1C,0x03,0x80,0x1F,0x00,0x38,0x00,0x38, 0x07,0x00,0x3B,0x00,0x30,0x00,0x38,0x07,0x00,0x3B,0x80,0x70,0x00,0x70,0x07,0x00, 0x73,0x80,0xF0,0x00,0xF0,0x07,0x00,0x73,0xC3,0xF8,0x03,0xE0,0x07,0xC3,0xE1,0xFF, 0xBF,0xFF,0xC0,0x07,0xFF,0xC0,0xFF,0x3F,0xFF,0x80,0x03,0xFF,0x80,0x78,0x1F,0xFE, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,}; x0=Column*16;//xcoordinateofstartpoint y0=Line*16;//ycoordinateofstartpoint for(iOffStr=0;iOffStr { x0=iOffStr*8; if(((u8)(*(Pu8FontStr+iOffStr)))<161)//? ? asciicoding? { if((u8)(*(Pu8FontStr+iOffStr))>127) { break; } LCD_DisplayChar(y0,x0,*(Pu8FontStr+iOffStr)); iOffStr++;//asciionlyoccupyonebyte } else { //getthezoneandtheposition. qm=*(Pu8FontStr+iOffStr)-160;//161; wm=*(Pu8FontStr+iOffStr+1)-160; ulOffset=(u32)((qm-1)*94+wm-1)*32; //counttheoffsetinspiflash.thenreadone32Bytefromspiflash,putinfointohzbuf //SPI_FLASH_BufferRead(hzbuf,HZAdsInSpiFlash+ulOffset,HZbuffsize); //diaplayalltheinfo. for(i=0;i<58;i++) { for(j=0;j<7;j++) { u8Mode=hzbuf[i*7+j];//getthefontmode for(k=0;k<8;k++) { if(u8Mode&(0x80>>k)) { LCD_DisplayPoint(x0+j*8+k,y0+i,TextColor); } } } } iOffStr+=2; } } } /*******************(C)COPYRIGHT2007STMicroelectronics*****ENDOFFILE****/ Lcd_DspHz16(0,0,"****************");//显示文字程序 Lcd_DspHz16(1,0,"**"); Lcd_DspHz16(2,0,"英蓓特教学仪器组"); Lcd_DspHz16(3,0,"**"); Lcd_DspHz16(4,0,"*EduKit-M3*"); Lcd_DspHz16(5,0,"**"); Lcd_DspHz16(6,0,"*教学实验平台*"); Lcd_DspHz16(7,0,"****************"); Lcd_DspHz16(0,0,"******************");//显示文字程序 Lcd_DspHz16(1,0,"**"); Lcd_DspHz16(2,0,"*姓名: *"); Lcd_DspHz16(3,0,"*杨胜提*"); Lcd_DspHz16(4,0,"*学号: *"); Lcd_DspHz16(5,0,"*11064029*"); Lcd_DspHz16(6,0,"*教学实验平台*"); Lcd_DspHz16(7,0,"****************"); voidLCD_DrawCircle(u8Xpos,u8Ypos,u8Radius)//画圆程序 { s32D;/*DecisionVariable*/ u32CurX;/*CurrentXValue*/ u32CurY;/*CurrentYValue*/ D=3-(Radius<<1); CurX=0; CurY=Radius; //LCD_Display_Color(BackColor); while(CurX<=CurY) { LCD_DisplayPoint(Xpos+CurX,Ypos+CurY,TextColor); LCD_DisplayPoint(Xpos+CurX,Ypos-CurY,TextColor); LCD_DisplayPoint(Xpos-CurX,Ypos+CurY,TextColor); LCD_DisplayPoint(Xpos-CurX,Ypos-CurY,TextColor); LCD_DisplayPoint(Xpos+CurY,Ypos+CurX,TextColor); LCD_DisplayPoint(Xpos+CurY,Ypos-CurX,TextColor); LCD_DisplayPoint(Xpos-CurY,Ypos+CurX,TextColor); LCD_DisplayPoint(Xpos-CurY,Ypos-CurX,TextColor); if(D<0) { D+=(CurX<<2)+6; } else { D+=((CurX-CurY)<<2)+10; CurY--; } CurX++; } } (写不完时,可另加附页。 ) 心 得 体 会 (这部分内容要手写) 成 绩 评 定 教师签名: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 技术 应用 实验 报告 模板