kingt001 发表于 2009-11-6 16:42:49

请教:12864画点出现杂点的问题(ST7920控制芯片)

画四个点速度很慢,并且出现原理程序里写的点,请各位帮我分析下程序,不胜感激!!!
#include<reg52.h>
#include<stdlib.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int



sbit LCD_RS=P3^0;//存储器选择输入
sbit LCD_RW=P3^1;//液晶读写控制
sbit LCD_EN=P3^2;//液晶使能控制
sbit LCD_PSB=P3^3;//串并方式控制
sbit RST=P3^4;

#define LCD_BUS P2


void delay_1ms(int x)
{
uint i,j;
for(j=0;j<x;j++)
   for(i=0;i<80;i++);
}
/*写指令到LCD*/
/*RS=L,RW=L,E=H脉冲,D0--D7=指令码。*/
void Send_Cmd(uchar cmd)
{
   LCD_RS=0;
   LCD_RW=0;
   LCD_EN=0;
   LCD_BUS=cmd;
   delay_1ms(2);
   LCD_EN=1;
   delay_1ms(2);
   LCD_EN=0;
}


/*写数据到LCD*/
/*RS=H,RW=L,E=H脉冲,D0--D7=指令码。*/

void Send_Data(uchar dat)
{
   LCD_RS=1;
   LCD_RW=0;
   LCD_EN=0;
   LCD_BUS=dat;
   delay_1ms(2);
   LCD_EN=1;
   delay_1ms(2);
   LCD_EN=0;
}

/*LCD初始化*/
void Lcd_Init()
{
   RST=0;
   delay_1ms(20);
   RST=1;
   delay_1ms(500);
   LCD_PSB=1;//并口方式
   Send_Cmd(0x30);//基本操作
   delay_1ms(2);
   Send_Cmd(0x0c);//开显示,关光标
   delay_1ms(2);
   Send_Cmd(0x01);//清屏
   delay_1ms(2);
}


void CheckBusy( void )          //忙检测函数
{
    uint nTimeOut = 0 ;
        LCD_BUS= 0x80 ;
        LCD_RW=1;
        LCD_RS=0;
        LCD_EN=0;
        LCD_EN=1;
        while( ( LCD_BUS== 0x80 ) && ( ++nTimeOut != 0 ) ) ;
        LCD_EN=0;
}

// 数据读函数
uchar RdData()
{
    uchar DData;
    CheckBusy();
    LCD_RW = 1;
    LCD_RS=1;
    LCD_BUS=0xff;
    LCD_EN = 1;
    DData = LCD_BUS;
    LCD_EN = 0;
    return(DData);
}

void Draw_Dot(uint x,y)
//(x,y) 绘点位置坐标,x,y均以像素点为单位
{
uchar m,n;
uint k;
if(y>=32)                  // 如果y>32,则修改地址
   {
    y=y-32;
    x=x+128;
    }
Send_Cmd(y|0x80);            // 设置垂直地址
k=x/16;                   // 计算x的地址(字单位)
Send_Cmd(k|0x80);            // 设置水平地址
k=0x8000;
k=k>>x%16;
m=RdData();               // 空读
m=RdData()|k>>8;          // 读第一字节
n=RdData()|k;             // 读第二字节
k=x/16;
Send_Cmd(y|0x80);            // 设置垂直地址
Send_Cmd(k|0x80);            // 设置水平地址
Send_Data(m);                // 写入第一字节
Send_Data(n);                // 写入第二字节
}

void main()
{
       Lcd_Init();
               
           Send_Cmd(0x01);
       delay_1ms(5);
        Send_Cmd(0x34);
        Send_Cmd(0x36);
            Draw_Dot(6,3);
        Draw_Dot(7,3);
        Draw_Dot(6,4);
        Draw_Dot(7,4);
while(1);
}

andywyt 发表于 2009-11-29 01:48:52

貌似要先 清除杂点~~~~

fish215 发表于 2009-12-18 09:47:02

将GDRAM的所有单元写入“00H”,才能彻底清屏

chenxikeng 发表于 2010-6-8 20:11:28

写图片情屏

zhangzike 发表于 2013-8-9 02:10:53

andywyt 发表于 2009-11-29 01:48 static/image/common/back.gif
貌似要先 清除杂点~~~~

程序之前有显示的,但是在画点的时候出现很多杂点是啥原因?
页: [1]
查看完整版本: 请教:12864画点出现杂点的问题(ST7920控制芯片)