24小时热门版块排行榜    

Znn3bq.jpeg
汕头大学海洋科学接受调剂
查看: 1099  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

yushasha11

金虫 (著名写手)

[求助] 求助:320240液晶屏的驱动!

最近在做320240液晶屏的驱动,用PIC18单片机,始终清不了屏,好像除了复位都不好用呀。我在网上下了两个C的程序,移植到PIC上都不好用。总线端口的数据是对的,所以分析是没有写到寄存器里面。而且无论程序怎么变化,都是显示各种横条纹,和几个竖条纹,一条一条的变化,不能按点动。希望有调此类型液晶屏的高手们,帮帮小女子吧。部分程序贴出来,可以QQ我,加好友时写明PIC或液晶屏都行。小女子在此多谢了,如有帮助,另送金币100。
程序中的SystemSet等指令代码在程序最前面已经定义,贴太长了怕不容易看。需要的话可以贴出。
void LCD_initial()  //液晶初始化
{
        unsigned char i;
        TRISF=0x00;                             //用到的端口设为输出状态
        TRISCbits.TRISC2 = 0;              //A0_dr
        TRISEbits.TRISE1 = 0;        //WR_dr
        TRISEbits.TRISE0 = 0;        //RD_dr
        TRISAbits.TRISA1 = 0;        //RES_dr
        TRISAbits.TRISA0 = 0;        //SEL_dr
        TRISEbits.TRISE5 = 0;              //选8080时序
        PORTEbits.RE5 = 0;
        delay(60);                             //上机延时一会儿 60对应250us
                 RES_dr = 1;
            delay(60);
            RES_dr = 0;                             //复位
            delay(60);
            RES_dr = 1;
            delay(60);

        write_cmd( SystemSet );                     //硬件初始化SystemSet
            for (i=0;i<8;i++)
        {
                write_data( code_ParaSysTable8 );
            }

            write_cmd( Scroll );
            for (i=0;i<10;i++)
            {
                write_data( code_ParaScrTable10 );
            }
            write_cmd( HdotScr );   //点位移量设置
            write_data( 0x00 );                //不移动
           write_cmd( Ovlay );                //显示合成设置
            write_data( 0x00 );                //二重合成
         write_cmd(DispOff);              //显示状态关闭
         write_data(0x57);                 
        screen_clear(0);          //液晶清屏,32KB RAM 清零
        write_cmd(DispOn);    //显示状态开启
         write_data(0x54);      //
}

void screen_clear(uchar part)      //清屏子函数
{
        uint i = 10240;       //10240 = 0x2800  10KB RAM
        write_cmd(CsrW);      //写入光标地址
        write_data(0x00);      //先写低八位
         write_data(0x00);      //高八位
        write_cmd(CsrDirR);   //光标向右方向移动
      if(part == 1) write_data(0x00);     //显示区1
else if(part == 2) write_data(BasePart2);//显示区2
else if(part == 3) write_data(BasePart3);//显示区3
else if(part == 4) write_data(BasePart4);//显示区4
else {i = 32768;   write_data(0x00);}    //所有显示区 32KB RAM
        write_cmd(mWrite);    //显示数据写入
         while(i--)
        {
        write_data(0x00);                   //写入0
        }
}

void write_cmd(unsigned char cmdcode)   //写指令
{
         CS_dr = 0;
         A0_dr = 1;    //指令
         RD_dr = 1;
         databus = cmdcode;
         WR_dr = 0;
         WR_dr = 1;  
         CS_dr = 1;
         databus =0xff;
}

void write_data(unsigned char Di_drspdata)     //写数据
{
         CS_dr = 0;
         A0_dr = 0;    //数据  
         RD_dr = 1;  
         databus = Di_drspdata;
         WR_dr = 0;
         WR_dr = 1;
         CS_dr = 1;
         databus =0xff;
}
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mvpyqz

至尊木虫 (知名作家)

【答案】应助回帖


jjdg: 金币+1, 感谢参与 2013-09-29 09:57:26
哦,是这几句。你的液晶驱动器清屏的指令寄存器是这个程序中的csrw指代值不?还有向这个指令寄存器输入0x0000是表示清屏吗?还有这个时序控制,高低电平有效等等都是你的液晶驱动器那样的时序不?这些你再看看使用说明书,确认一下!

[ 发自手机版 http://muchong.com/3g ]
4楼2013-09-27 15:01:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

mvpyqz

至尊木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
你的液晶清屏的时候不用先写清屏寄存器地址,再写清屏指令吗?

[ 发自手机版 http://muchong.com/3g ]

» 本帖已获得的红花(最新10朵)

2楼2013-09-27 10:17:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yushasha11

金虫 (著名写手)

送红花一朵
引用回帖:
2楼: Originally posted by mvpyqz at 2013-09-27 10:17:17
你的液晶清屏的时候不用先写清屏寄存器地址,再写清屏指令吗?

你帮我看看,下面这几句算不算是呀
           write_cmd(CsrW);      //写入光标地址
        write_data(0x00);      //先写低八位
        write_data(0x00);      //高八位
3楼2013-09-27 13:53:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yushasha11

金虫 (著名写手)

引用回帖:
4楼: Originally posted by mvpyqz at 2013-09-27 15:01:19
哦,是这几句。你的液晶驱动器清屏的指令寄存器是这个程序中的csrw指代值不?还有向这个指令寄存器输入0x0000是表示清屏吗?还有这个时序控制,高低电平有效等等都是你的液晶驱动器那样的时序不?这些你再看看使用说 ...

CSRW的指令名称是光标地址设置,有CSRL和CSRH共16位。mWrite,是显示数据写入指令。该指令写入后允许MPU连续地向显示存储器内写入数据。写入的单元地址由光标指针CSR提供,写操作完成后光标指针自动根据所设置的光标指针移动方向进行修改。write_cmd(CsrDirR);   //光标向右方向移动
关于时序问题,我有个挺大的疑问,我选择的是8080时序,上面对时间的要求都是最低不少于多少ns,但是我的单片机最少一条指令走下去也要远大于它规定的值,所以我没有按照时序图,把每一个时间设置在要求的值那儿。
谢谢你,至少帮我打开了些思路!
5楼2013-09-27 16:02:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿211,化学310分,本科重点双非,求调剂 +24 努力奋斗112 2026-04-08 24/1200 2026-04-14 18:02 by lhj2009
[考研] 272分材料子求调剂 +41 Loy0361 2026-04-10 54/2700 2026-04-14 18:00 by lhj2009
[考研] 药学305求调剂 +10 玛卡巴卡boom 2026-04-10 10/500 2026-04-14 15:55 by zs92450
[考研] 271求调剂 +35 2261744733 2026-04-11 41/2050 2026-04-14 15:36 by zs92450
[考研] 085801电气专硕272求调剂 +14 电气李 2026-04-13 15/750 2026-04-14 14:58 by 逆水乘风
[考研] 一志愿西交机械专硕求调剂 +9 求上岸的小王 2026-04-10 9/450 2026-04-13 16:08 by jiangguiquan11
[考研] 求调剂288 +7 ioodiiij 2026-04-10 9/450 2026-04-13 08:33 by Hayaay
[教师之家] 山东双非院校考核超级无底线,领导幸灾乐祸,教师遭殃恐 +3 qut2026 2026-04-11 7/350 2026-04-12 20:24 by qut2026
[考研] 2本,初试303,0860求调剂 +6 floriea 2026-04-12 8/400 2026-04-12 18:13 by zhouxiaoyu
[考研] 343求调剂 +9 王国帅 2026-04-10 9/450 2026-04-11 20:31 by dongdian1
[考研] 296求调剂 +14 汪!?! 2026-04-08 15/750 2026-04-11 20:28 by dongdian1
[考研] 087100初试311求调剂 +4 任雅琴 2026-04-09 4/200 2026-04-11 10:33 by zhq0425
[考研] 农业管理302分求调剂 +3 xuening1 2026-04-10 3/150 2026-04-11 10:18 by zhq0425
[考研] 中药学调剂 初试324 +4 洋甘菊、 2026-04-10 6/300 2026-04-11 09:41 by gong120082
[考研] 292求调剂 +9 笑笑袁 2026-04-09 9/450 2026-04-10 10:05 by LHGeng
[考研] 初试分332,一志愿报考西北工业大学, +11 故人?? 2026-04-09 11/550 2026-04-09 21:54 by JineShine
[考研] 材料专硕(0856) 339分求调剂 +9 哈哈哈鹅哈哈哈 2026-04-09 10/500 2026-04-09 20:01 by Orcid
[考研] 调剂 +19 2261744733 2026-04-08 19/950 2026-04-09 19:11 by vgtyfty
[考研] 334求调剂 +16 Riot2025 2026-04-08 17/850 2026-04-09 09:28 by wdyheheeh
[考研] 296求调剂 +3 汪!?! 2026-04-08 3/150 2026-04-08 22:00 by zhouyuwinner
信息提示
请填处理意见