資源簡介
基礎程序,便于學習proteus這一軟件和仿真單片機中的12864顯示

代碼片段和文件信息
/**********************************?LCD12864曲線顯示*******************************************/
/*********作者:王勝文。QQ:95201972??email:nunk@163.com?希望與大家交流2007。08。03**********/
#include
#include
#include
#include
//#include
#define?Graphic_Clear?0x01???//檫除點
#define?Graphic_Not?0x02?????//反相點
#define?Graphic_Draw?0x03 ?//畫點
uchar?j=0i=0;
uchar?r=32;
/***********************在LCD上任意坐標畫點********************************/
void?DrawPoint(uchar?Xuchar?Yuchar?Type)?
{? //X,Y化點的坐標Type畫點的類型:反相點,檫除點,畫點
????????????????????????????????????????????????????
???uchar?DX?=?(Y?>>?3);???????????????//計算出屬于哪個字節?
???uchar?BX?=?Y?-?(DX?<3);???????????//計算出屬于字節哪一位?
???uchar?TempData?=?0;?
????
????
???if?(X?>?63)?
???{?
????chip_select=2;
??????X?-=?64;?
???}?
???else?
???{?
??????chip_select=1;?
???}?
???SetPage(DX);?????????????//設行地址
???SetColumn(X);? //設列地址
????
???TempData?=?ReadData();???//讀出所畫點所在字節的內容
????
???switch?(Type)????????????//對該字節進行相應操作
???{?
???????case?Graphic_Clear:
?????????? TempData?&=?~(1< ????????? break;?
??????case?Graphic_Not:
????????? TempData?^=?(1?<?????????? break;?
??????case?Graphic_Draw:?
?????????? TempData?|=?(1?< break;
??default: break;
???}?
????
???SetPage(DX);????????????//設置行地址
???SetColumn(X);?? //設置列地址
???WriteData(TempData);? //把修改后的字節送回LCD,達到畫點目的
}?
/********插值法畫任意兩點之間直線的函數,函數中只用加減法,程序運行效率很高**********/
DrawLine(uchar?x1uchar?y1uchar?x2uchar?y2)
{???????????????????????????//x1y1起點坐標;x2y2終點坐標;
????uchar?xy;?
????uchar?d_xd_y;?????
????char?err=0;
????uchar?temp=0;
????if(y2 ????d_y=y2-y1;
????if?(d_y==0)
????????{
????????if?(x1>x2)?{x=x1;x1=x2;x2=x;}
????????for?(?x=x1;x<=x2;x++?)?DrawPoint(xy1Graphic_Draw);
????????}
????else
????????{
????if(x2>=x1){temp=1;d_x=x2-x1;}else?d_x=x1-x2;
????x=x1;y=y1;DrawPoint(xyGraphic_Draw);
????if(temp&&(d_y<=d_x))
????????while(x!=x2)
????????????{if(err<0){x=x+1;err=err+(y2-y);}
????????????else?{x=x+1;y=y+1;err=err+(y2-y)-(x2-x);}
????????????DrawPoint(xyGraphic_Draw);
????????????}
????else?if(temp&&(d_y>d_x))
????????while(y!=y2)
????????????{d_x=x2-x;d_y=y2-y;?
????????????if(err<0){x=x+1;y=y+1;err=err+d_y-d_x;}
????????????else?{y=y+1;err=err-d_x;}
????????????DrawPoint(xyGraphic_Draw);
????????????}
????else?if(!temp&&(d_y<=d_x))
????????while(x!=x2)
????????????{d_x=x-x2;d_y=y2-y;?
????????????if(err<0){x=x-1;err=err+d_y;}
????????????else?{x=x-1;y=y+1;err=err+d_y-d_x;}
????????????DrawPoint(xyGraphic_Draw);
????????????}
????else?if(!temp?&&(d_y>d_x))
????????while(y!=y2)
????????????{d_x=x-x2;d_y=y2-y;?
????????????if(err<0){x=x-1;y=y+1;err=err+d_y-d_x;}
????????????else?{y=y+1;err=err-d_x;}
????????????DrawPoint(xyGraphic_Draw);
????????????}
????????}????
}??????????????????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????106689??2007-11-13?10:26??Proteus中單片機89C51在LCD12864上畫曲線\draw.DSN
?????文件???????1412??2007-11-13?10:26??Proteus中單片機89C51在LCD12864上畫曲線\draw.PWI
?????文件??????20150??2007-11-13?09:38??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line
?????文件???????5241??2007-11-15?15:29??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line.c
?????文件???????8460??2007-11-13?09:38??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line.hex
?????文件?????????41??2007-11-13?09:38??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line.lnp
?????文件??????10007??2007-11-15?15:29??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line.LST
?????文件??????22088??2007-11-13?09:38??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line.M51
?????文件??????22446??2007-11-15?15:29??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line.OBJ
?????文件???????1070??2007-11-21?09:16??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line.Opt
?????文件????????219??2007-11-21?09:16??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line.plg
?????文件???????2004??2007-11-09?19:04??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line.Uv2
????.......??????1370??2007-11-15?18:51??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line_Opt.Bak
????.......??????2005??2007-11-09?11:00??Proteus中單片機89C51在LCD12864上畫曲線\drawing_line_Uv2.Bak
?????文件???????3728??2007-08-16?14:10??Proteus中單片機89C51在LCD12864上畫曲線\drive_functions.h
?????文件???????1051??2007-08-08?09:47??Proteus中單片機89C51在LCD12864上畫曲線\get_keys.h
?????文件?????106850??2007-08-27?13:09??Proteus中單片機89C51在LCD12864上畫曲線\Last?Loaded?draw.DBK
?????目錄??????????0??2007-11-21?09:16??Proteus中單片機89C51在LCD12864上畫曲線
-----------?---------??----------?-----??----
???????????????314831????????????????????18
評論
共有 條評論