清达光电5.7寸320240液晶RA8835描点划线程序
#include<>
#include <>
#include <>
#include<>
#define uchar unsigned char
#define uint unsigned int
#define DATA P1
#define AP 40
#define LF 240
#define CUR_WR 0x46 //光标————写;
#define CUR_RD 0x47 // 光标————读;
#define CUR_U 0x4e // 光标————上;
#define CUR_D 0x4f // 光标———下;
#define CUR_L 0X4d //光标————左;
#define CUR_R 0x4c //光标————右;
#define DATA_WR 0x42//数据————写;
#define DATA_RD 0x43//数据————读;
sbit XT0=P3^2;
sbit CD= P3^3;
sbit WR1= P3^5;
sbit RD1= P3^0;
sbit CS= P3^1;
sbit RESET= P3^4;
/*********************************************************************
/******************************************************************
延时子程序
*****************************************************************/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=124;y>0;y--);
}
/*********************************************************************
写入指令和数据
************************************************************************/
void wait(void) // 忙等待;
{
CS=0;
DATA=0xff;
CD=0;
RD1=0;
while(DATA&0x40) ;
RD1=1;
_nop_();
CS=1;
}
void wr_data(uchar b) //写数据 ;
{
wait();
CS=0;
CD=0;
DATA=b;
WR1=0;
WR1=1;
_nop_();
CS=1;
}
void wr_com(uchar com) //写命令;
{
wait();
CS=0;
CD=1;
DATA=com;
WR1=0;
WR1=1;
_nop_();
CS=1;
}
uchar rd_data(void) //读数据 ;
{
uchar temp;
wait();
CS=0;
DATA=0xff;
CD=1;
RD1=0;
temp=DATA;
RD1=1;
_nop_();
CS=1;
return temp;
}
定位地址
x--> 水平方向的字节数(0~AP-1) ;y--> 垂直方向字节数;
flag-->1~4代表显示一区到四区;
************************************************************************/
void dot(uchar x,uchar y,uchar flag)
{
uchar b1,b2;
uint b;
switch(flag)
{
case 1: b=0x0000; break;
case 2:b=0x1000; break;
case 3: b=0x0800; break;
case 4:b=0x4000; break;
default: break;
}
b=y*AP+x+b;
b2=b/256;
b1=b%256;
wr_com(CUR_WR);
wr_data(b1);
wr_data(b2);
}
/*********************************************************************
图形模式下;实现对单独像素点的描和消;
X--> x轴方向的点数(0~line_char*8-1),Y-->y轴方向的点数,z-->1为描,0为消;flag-->显示区;
************************************************************************/
void pix(uchar X,uchar Y,uchar z,uchar flag)
{
uchar temp1,temp2,temp3;
temp1=X/8;
temp2=X%8;
temp2=0x80>>temp2;
dot(temp1,Y,flag);
wr_com(DATA_RD);
temp3=rd_data();
if(z) temp3=temp2|temp3;
else temp3=~temp2&temp3;
dot(temp1,Y,flag);
wr_com(DATA_WR);
wr_data(temp3);
}
void draw_line(int x0,uchar y0,int x1,uchar y1,uchar flag,uchar qu)
{
int m,dx,dy,i;
float x,y,deltax,deltay;
dx=x1-x0;
dy=y1-y0;
x=(float)x0;y=(float)y0;
m = abs(dx) > abs(dy) ? abs(dx) : abs(dy) ;
deltax = (float)dx / m , deltay = (float)dy / m ;
for ( i = 0 ; i <=m ; i ++ )
{
pix ((uint)(x+0.5),(uchar)(y+0.5),flag,qu);
x += deltax ;
y += deltay ;
}
}
我司在杭州生产液晶模块十多年,质量稳定,价格优惠!欢迎来电咨询或加微信联系!

版权提示】一步电子网倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本网站的内容。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至web@kuyibu.com,我们将及时沟通与处理。
相关阅读
猜你喜欢
住宅建筑电气火灾原因与预防策略
2024/6/26 16:18:39

低压线路常见电气火灾原因及对应的预防措施
2024/6/26 13:38:30
BIM+GIS在管廊机电监控与运维管控系统中的应用
2024/6/26 9:17:20
高校电能消耗管理存在的问题和解决方案
2024/6/25 14:41:50
开关柜无线测温系统的应用研究
2024/6/24 16:38:21
智能仪表与网关在水厂中的应用
2024/6/24 16:33:51

智能网关的校园电能能耗监测系统设计与应用
2024/6/24 16:31:20
如何加强电能计量管理
2024/6/24 16:26:21

红外触发相机的性能
2024/6/24 14:09:51

红外相机的区别
2024/6/24 14:06:47

消防救援多功能搜救装备为什么需要高清免调焦望远镜呢
2024/6/18 17:38:14

欧尼卡0-2000米测距、测高无盲区零米起测的激光测距仪2000B--可覆盖图帕斯200
2024/6/18 17:36:34









发表评论 点击 登录 微信,亮头像秀观点,已发布 0 条