显示各种图像和汉字但要更改相应部分(用单片机和12864绝对能用)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

/*******************************************************项目名称:显示各种图像的程序作者所在单位:电子科技大学作者:吴鉴鹰*******************************************************/#includestdio.h#includereg52.h#includemath.h#includeintrins.hsbitRS=P0^0;sbitRW=P0^1;sbitE=P0^2;sbitPSB=P0^3;sbitRES=P0^4;E=1;byReturnValue=Lcd_Bus;E=0;returnbyReturnValue;}/*增加画点子程序函数功能:在坐标为(x,y)点画一个点参数意义X:12864屏幕的横坐标,范围是0到128(从左到右)Y:12864的纵坐标,范围是0到64(从上到下)Color:为1的时候表示为黑点*/voidDrawPoint(unsignedcharX,unsignedcharY,unsignedcharColor){unsignedcharRow,Tier,Tier_bit;unsignedcharReadOldH,ReadOldL;write_com(0x34);write_com(0x36);Tier=X4;Tier_bit=X&0x0f;if(Y32){Row=Y;}else{Row=Y-32;Tier+=8;}write_com(Row+0x80);write_com(Tier+0x80);ReadByte();ReadOldH=ReadByte();ReadOldL=ReadByte();write_com(Row+0x80);write_com(Tier+0x80);if(Tier_bit8){switch(Color){case0:ReadOldH&=(~(0x01(7-Tier_bit)));break;case1:ReadOldH|=(0x01(7-Tier_bit));break;case2:ReadOldH^=(0x01(7-Tier_bit));break;default:break;}write_data(ReadOldH);write_data(ReadOldL);}else{switch(Color){case0:ReadOldL&=(~(0x01(15-Tier_bit)));break;case1:ReadOldL|=(0x01(15-Tier_bit));break;case2:ReadOldL^=(0x01(15-Tier_bit));break;default:break;}write_data(ReadOldH);write_data(ReadOldL);}write_com(0x30);}voidmain(void){uchari,j,colour=1,T=0;RW=0;lcdreset();ceshi();clrgdram();delay(2000);clrscreen();while(1){for(i=0;i128;i++){j=32-32*sin(2*i*3.14/(64+T));DrawPoint(i,j,colour);}//T+=4;delay(5000);}while(1);}#defineLCD12864_DatePortP2bitLCD12864_CheckBusy()//读忙碌状态{biti;RS=0;RW=1;E=1;LCD12864_DatePort=0xff;delay_ms(1);i=(bit)(LCD12864_DatePort&0x80);E=0;return(i);}voidLCD12864_DrawPoint(unsignedcharX,unsignedcharY,unsignedcharColor){unsignedcharRow,Tier,Tier_bit;unsignedcharReadOldH,ReadOldL;LCD12864_WriteCmd(0x34);LCD12864_WriteCmd(0x36);Tier=X4;Tier_bit=X&0x0f;if(Y32){Row=Y;}else{Row=Y-32;Tier+=8;}LCD12864_WriteCmd(Row+0x80);LCD12864_WriteCmd(Tier+0x80);LCD12864_ReadByte();ReadOldH=LCD12864_ReadByte();ReadOldL=LCD12864_ReadByte();LCD12864_WriteCmd(Row+0x80);LCD12864_WriteCmd(Tier+0x80);if(Tier_bit8){switch(Color){case0:ReadOldH&=(~(0x01(7-Tier_bit)));break;case1:ReadOldH|=(0x01(7-Tier_bit));break;case2:ReadOldH^=(0x01(7-Tier_bit));break;default:break;}LCD12864_WriteDate(ReadOldH);LCD12864_WriteDate(ReadOldL);}else{switch(Color){case0:ReadOldL&=(~(0x01(15-Tier_bit)));break;case1:ReadOldL|=(0x01(15-Tier_bit));break;case2:ReadOldL^=(0x01(15-Tier_bit));break;default:break;}LCD12864_WriteDate(ReadOldH);LCD12864_WriteDate(ReadOldL);}LCD12864_WriteCmd(0x30);}voidLCD12864_DrawLine_X(unsignedcharX0,unsignedcharX1,unsignedcharY,unsignedcharColor){unsignedcharTemp;if(X0X1){Temp=X1;X1=X0;X0=Temp;}for(;X0=X1;X0++)LCD12864_DrawPoint(X0,Y,Color);}voidLCD12864_DrawLine_Y(unsignedcharX,unsignedcharY0,unsignedcharY1,unsignedcharColor){unsignedcharTemp;if(Y0Y1){Temp=Y1;Y1=Y0;Y0=Temp;}for(;Y0=Y1;Y0++)LCD12864_DrawPoint(X,Y0,Color);}voidLCD12864_DrawLine(unsignedcharStartX,unsignedcharStartY,unsignedcharEndX,unsignedcharEndY,unsignedcharColor){intt,distance;/*根据屏幕大小改变变量类型(如改为int型)*/intx=0,y=0,delta_x,delta_y;charincx,incy;delta_x=EndX-StartX;delta_y=EndY-StartY;if(delta_x0){incx=1;}elseif(delta_x==0){LCD12864_DrawLine_Y(StartX,StartY,EndY,Color);return;}else{incx=-1;}if(delta_y0){incy=1;}elseif(delta_y==0){LCD12864_DrawLine_X(StartX,EndX,StartY,Color);return;}else{incy=-1;}delta_x=abs(delta_x);//求绝对值delta_y=abs(delta_y);if(delta_xdelta_y){distance=delta_x;}else{distance=delta_y;}LCD12864_DrawPoint(StartX,StartY,Color);/*DrawLine*/for(t=0;t=distance+1;t++){LCD12864_DrawPoint(StartX,StartY,Color);x+=delta_x;y+=delta_y;if(xdistance){x-=distance;StartX+=incx;}if(ydistance){y-=distance;StartY+=incy;}}}voidLCD12864_DrawCross(){LCD12864_DrawLine_X(0,127,0,1);LCD12864_DrawLine_X(0,127,7,1);LCD12864_DrawLine_X(0,127,15,1);LCD12864_DrawLine_X(0,127,23,1);LCD12864_DrawLine_X(0,127,31,1);LCD12864_DrawLine_X(0,127,39,1);LCD12864_DrawLine_X(0,127,47,1);LCD12864_DrawLine_X(0,127,55,1);LCD12864_DrawLine_X(0,127,63,1);LCD12864_DrawLine_Y(0,0,63,1);LCD12864_DrawLine_Y(15,0,63,1);LCD12864_DrawLine_Y(31,0,63,1);LCD12864_DrawLine_Y(47,0,63,1);LCD12864_DrawLine_Y(63,0,63,1);LCD12864_DrawLine_Y(79,0,63,1);LCD12864_DrawLine_Y(95,0,63,1);LCD12864_DrawLine_Y(111,0,63,1);LCD12864_DrawLine_Y(127,0,63,1);}voidLCD12864_Draw_ObliqueLine(){LCD12864_DrawLine(0,0,127,63,1);LCD12864_DrawLine(0,63,127,0,1);LCD12864_DrawLine(12,0,127,63,1);LCD12864_DrawLine(52,63,127,0,1);LCD12864_DrawLine(32,63,98,0,1);LCD12864_DrawLine(67,0,127,63,1);}voidLCD12864_DisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharData){switch(Y){case0:Y=0X80;break;//根据行数来选择相应地址case1:Y=0X90;break;case2:Y=0X88;break;case3:Y=0X98;break;}LCD12864_WriteCmd(Y+X);//这里不检测忙信号,发送地址码LCD12864_WriteDate(Data);}voidLCD12864_DisplayListChar(unsignedcharX,unsignedcharY,unsignedchar*Data){switch(Y){case0:Y=0X80;break;//根据行数来选择相应地址case1:Y=0X90;break;case2:Y=0X88;break;case3:Y=0X98;break;}LCD12864_WriteCmd(Y+X);//这里不检测忙信号,发送地址码X=X*2;Y=0;while(Data[Y]!=0)//若到达字串尾则退出{if(X=0x0F)//X坐

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功