搜索
bottom↓
回复: 4

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

[复制链接]

出0入0汤圆

发表于 2009-11-6 16:42:49 | 显示全部楼层 |阅读模式
画四个点速度很慢,并且出现原理程序里写的点,请各位帮我分析下程序,不胜感激!!!
#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);
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2009-11-29 01:48:52 | 显示全部楼层
貌似要先 清除杂点~~~~

出0入0汤圆

发表于 2009-12-18 09:47:02 | 显示全部楼层
将GDRAM的所有单元写入“00H”,才能彻底清屏

出0入0汤圆

发表于 2010-6-8 20:11:28 | 显示全部楼层
写图片情屏

出0入0汤圆

发表于 2013-8-9 02:10:53 | 显示全部楼层
andywyt 发表于 2009-11-29 01:48
貌似要先 清除杂点~~~~

程序之前有显示的,但是在画点的时候出现很多杂点是啥原因?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 08:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表