[其他] 芯圣样品开发板 试用小记, 点个ST7567的12864点阵屏

[复制链接]
590|2
 楼主 | 2018-3-8 21:08 | 显示全部楼层 |阅读模式
摸索中........不习惯51的方式写程序...
搞了一下午....一直都点不亮这屏,  换着方法找坛友的例程LED跑一下, 结果也不亮...晕死....
难怪我搞一下午都不行..........肯定那搞错了............特么的是我脑抽了, 没拔对供电方式....


程序初始化部份如下, 详细 见附件中的程序代码

#define ALLOCATE_EXTERN
#include "lcd.h"


void main()
{

        WDTCCR = 0x00;                                                //关闭看门狗

        while((CLKCON & 0x20) != 0x20);                        //等待内部高频RC起振

        CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz

        while((CLKSWR & 0xC0) != 0x40);                        //等待内部高频切换完成

        CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz

        P0M1 = P0M1 & 0xF0 | 0x08;          //P02推挽输出 MISO_DC_A0
        P0M0 = P0M0 & 0xF0 | 0x08;          //P00推挽输出 MOSI_SDI_SDA
        P2M0 = P2M0 & 0xF0 | 0x08;          //P20推挽输出 SCK_SCL
        P0M3 = P0M3 & 0x0F | 0x80;                                //P07推挽输出 CS
        P2M0 = P2M0 & 0x0F | 0x80;                                //P21推挽输出 BL_LED
        P2M1 = P2M1 & 0xF0 | 0x08;                                //P22推挽输出 LCD_RST

        LCD_Init();

        LCD_Print(32, 8, "芯圣MCU", TYPE16X16, TYPE8X16);
        LCD_Print(24, 24, "HC89S003F4", TYPE16X16, TYPE8X16);
        LCD_Print(24, 40, "By: SkyGz", TYPE16X16, TYPE8X16);
        while (1)
        {

        }
}





点屏效果如图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-3-9 11:51 | 显示全部楼层
不错,收藏了
| 2018-3-30 21:18 | 显示全部楼层
我的现在也遇到问题了,写数据的时候使用for循环就出现错误,直接写数据就可以的
char LCD12864_Write16Data(unsigned char x,unsigned char y,unsigned char j, unsigned char mod)
{
        unsigned char k, x1, x2 ;
        if(y>7)
        {
                return 0;
        }
        if(x>98)
        {
                return 0;
                }       
        y = y+ 0xB0;  //ÇóYµÄ×ø±ê
        LcdSt7565_WriteCmd(y);   ///дYµÄ×ø±êÖµ
       
        x1 = (x >> 4) & 0x0F;   //ÓÉÓÚX×ø±êÒªÁ½¾äÃüÁ·Ö¸ßµÍ4룬ËùÒÔÕâÀïÏÈÈ¡³ö¸ß4λ
    x2 = x & 0x0F;          //È¥µÍËÄλ
     //--ÉèÖÃX×ø±ê--//
    LcdSt7565_WriteCmd(0x10 + x1);   //¸ß4λ
    LcdSt7565_WriteCmd(0x00 + x2); //µÍ4λ  
    for(k=0;k<16;k++)
    {
            if(k==8)    //ÓÉÓÚ8 X16Óõ½Á½¸öY×ø±ê£¬µ±´óÓÚµÈÓÚ16ʱ£¬Çл»×ø±ê   Õâ¸ö´¦ÀíÓÐÎÊÌâ
            {
              
               LcdSt7565_WriteCmd(y+1);    //--ÉèÖÃX×ø±ê--//   
               LcdSt7565_WriteCmd(0x10 + x1);   //¸ß4λ   
               LcdSt7565_WriteCmd(0x00 + x2); //µÍ4λ  }        

            }
                        if(mod == 1)
                        {
       LcdSt7565_WriteData( DATA1[j][k] );  
                        }
                        if(mod ==0)
                        {
                                LcdSt7565_WriteData(~DATA1[j][k] );
      }

    }       
        return 1;
}
这样写数据就不好用,直接写16个 LcdSt7565_WriteData( DATA1[j][k] );  就可以
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

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