skygz 发表于 2018-3-8 21:08

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

本帖最后由 芯圣电子官方QQ 于 2023-7-25 14:27 编辑

摸索中........不习惯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)
      {

      }
}





点屏效果如图



海迹天涯 发表于 2018-3-9 11:51

不错,收藏了

mochunhan 发表于 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 );
                        }
                        if(mod ==0)
                        {
                                LcdSt7565_WriteData(~DATA1 );
      }

    }       
        return 1;
}
这样写数据就不好用,直接写16个 LcdSt7565_WriteData( DATA1 );就可以

dqqqqqq 发表于 2019-3-27 15:33

赞一个

抹茶妹妹 发表于 2019-4-30 23:45

看看,路过顶一下!
页: [1]
查看完整版本: 芯圣样品开发板 试用小记, 点个ST7567的12864点阵屏