久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4559|回復: 9
收起左側

STM32F103RCT6串行控制LCD12864,一直不能點亮屏幕是怎么回事呀

[復制鏈接]
ID:520172 發表于 2019-6-3 13:13 | 顯示全部樓層 |閱讀模式
仿照并行的參考程序該成了串行,也參考了論壇里面各種大神的程序?墒俏业腖CD一直沒有被點亮,請問有可能是什么原因造成的呢,要怎么檢查一下呀?
編了一個電腦通過串口發送數據的程序做通信檢測,串口調試助手一直能看到數據接收,然后用示波器測量LCD的RE、RW、E都能測到波形,屏幕就是不亮
回復

使用道具 舉報

ID:520172 發表于 2019-6-4 14:07 | 顯示全部樓層
現在終于點亮可以顯示了,但是一堆亂碼,都是痧痧。。
回復

使用道具 舉報

ID:83349 發表于 2019-6-4 15:45 | 顯示全部樓層
沒配置好
回復

使用道具 舉報

ID:520172 發表于 2019-6-6 13:20 | 顯示全部樓層

請問具體是哪里呀,我拿51單片機并行通信改的stm32串行通信,應該從哪里著手檢查錯誤
回復

使用道具 舉報

ID:520172 發表于 2019-6-6 13:53 | 顯示全部樓層
void SendByte(u8 Dbyte)
{       
        u16 i;
        for(i=0;i<8;i++)
        {
                LCD_SCLK_1;
               
                if((Dbyte<<i)&0x80)
                        LCD_SID_1;   
                else         
                        LCD_SID_0;  
               
                Delay5Ms();
                LCD_SCLK_0;
                Delay5Ms();               
        }
}

u8 ReadDataLCD(void)
{
        u8 i,temp1=0,temp2=0;

        LCD_CS_1;
        Delay5Ms();
       
        for(i=0;i<8;i++)
        {
                temp1=temp1<<1;
                LCD_SCLK_0;
                Delay5Ms();
                Delay5Ms();
                Delay5Ms();
                LCD_SCLK_1;
                Delay5Ms();
                Delay5Ms();
                Delay5Ms();               
                LCD_SCLK_0;
                Delay5Ms();
                Delay5Ms();
                Delay5Ms();
                if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8))
                  temp1++;
        }
        for(i=0;i<8;i++)
        {
                temp2=temp2<<1;
                LCD_SCLK_0;
                Delay5Ms();
                Delay5Ms();
                Delay5Ms();
                LCD_SCLK_1;
                Delay5Ms();
                Delay5Ms();
                Delay5Ms();               
                LCD_SCLK_0;
                Delay5Ms();
                Delay5Ms();
                Delay5Ms();
                if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8))
                  temp2++;
        }
        LCD_CS_0;
        return ((0xf0&temp1)+(0x0f&temp2));//
}

void CheckBusy( void ) //
{
        do
        {       
                        LCD_CS_1;//RS = 1;
        Delay5Ms();
                SendByte(0xfc);         //
        }
                while((ReadDataLCD()&0x80)==0x80);  
        LCD_CS_0;//RS = 1;
        Delay5Ms();       
}

void WriteCommandLCD(u8 Cbyte ,u8 BuysC)
{       
        if(BuysC)
          CheckBusy();
        LCD_CS_1;//RS = 1;
        Delay5Ms();
        SendByte(0xf8);              //11111,RW(0),RS(0),0;
        SendByte(0xf0&Cbyte);        //DDDD0000
        SendByte((0xf0&Cbyte)<<4);   //0000DDDD
        LCD_CS_0;//RS = 0;
                Delay5Ms();
}

void WriteDataLCD(u8 Dbyte )
{
        CheckBusy();
       
        LCD_CS_1;//RS = 1;
        Delay5Ms();
        SendByte(0xfa);              //11111,RW(0),RS(1),0;
        SendByte(0xf0&Dbyte);        //
        SendByte((0xf0&Dbyte)<<4);   
        LCD_CS_0;//RS = 0;
        Delay5Ms();       
}
void LCDInit(void)
{
WriteCommandLCD(0x30,1);
WriteCommandLCD(0x01,1);
WriteCommandLCD(0x06,1);
WriteCommandLCD(0x0C,1);  
WriteCommandLCD(0x02,1);
WriteCommandLCD(0x80,1);
}
void LCDClear(void)
{
        u8 i;
        WriteCommandLCD(0x01,1);
        WriteCommandLCD(0x34,1);
        WriteCommandLCD(0x30,1);
        WriteCommandLCD(0x80,1);
        for(i=0;i<64;i++)
          {
          WriteCommandLCD(0x20,1);
          }
}
void LCDFlash(void)       
{
WriteCommandLCD(0x08,1);
Delay400Ms();
WriteCommandLCD(0x0c,1);
Delay400Ms();
WriteCommandLCD(0x08,1);
Delay400Ms();
WriteCommandLCD(0x0c,1);
Delay400Ms();
WriteCommandLCD(0x08,1);
Delay400Ms();
}
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
        if(Y<1)
                Y=1;
        if(Y>4)
                Y=4;
        X &= 0x0F;
        switch(Y)
        {
                case 1:X|=0X80;break;
                case 2:X|=0X90;break;
                case 3:X|=0X88;break;
                case 4:X|=0X98;break;
        }
        WriteCommandLCD(X, 0);
        WriteDataLCD(DData);
}
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData)
{       
  unsigned char ListLength;
        DisplayOneChar( X, Y,  *DData);
   for(ListLength=0;DData[ListLength]!='\0';ListLength++)
        {
                WriteDataLCD(DData[ListLength] );
        }
}
void DisplayImage (const u8  *DData)
{
        unsigned char x,y,i;
        unsigned int tmp=0;
        for(i=0;i<9;)
        {               
                for(x=0;x<32;x++)
                {                                //32DD
                WriteCommandLCD(0x34,1);
                WriteCommandLCD((0x80+x),1);
                WriteCommandLCD((0x80+i),1);
                WriteCommandLCD(0x30,1);               
                for(y=0;y<16;y++)       
                        WriteDataLCD(DData[tmp+y]);
                tmp+=16;               
                }
        i+=8;
        }
        WriteCommandLCD(0x36,1);       
        WriteCommandLCD(0x30,1);
}
void Delay5Ms(void)
{
unsigned int TempCyc = 50;
while(TempCyc--);
}

//400ms
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
  TempCycB=7269;
  while(TempCycB--);
};
}
回復

使用道具 舉報

ID:425825 發表于 2019-6-6 14:59 | 顯示全部樓層
你好!并行和串行控制時序要求不一樣,還是找一個 51 的串行程序來改吧
回復

使用道具 舉報

ID:520172 發表于 2019-6-10 09:08 | 顯示全部樓層
來51學習 發表于 2019-6-6 14:59
你好!并行和串行控制時序要求不一樣,還是找一個 51 的串行程序來改吧

我是需要拿STM32做串行控制,核心部分的代碼已經貼出,但是功能一直無法實現
回復

使用道具 舉報

ID:499930 發表于 2019-6-10 10:20 | 顯示全部樓層
單獨屏幕接個電源是不是屏幕壞了
回復

使用道具 舉報

ID:562525 發表于 2019-6-14 14:48 | 顯示全部樓層
如果屏幕不亮的話,可以嘗試這樣做
1.RS/CS片選可以直接接VCC以方便測試
2.12864初始化以后要加(例如100毫秒)延時,每發送完一個數據或指令后要加(例如5毫秒)延時
3.注意,程序有一個錯誤:12864是在SCLK上升沿輸入數據,而不是下降沿。
  1. void SendByte(u8 Dbyte)
  2. {        
  3.    u16 i;
  4.    for(i=0;i<8;i++)
  5.    {
  6.         if((Dbyte<<i)&0x80)  LCD_SID_1;   
  7.        else                         LCD_SID_0;  
  8.        LCD_SCLK_0;
  9.        LCD_SCLK_1;
  10.    }
  11. }
復制代碼
回復

使用道具 舉報

ID:277933 發表于 2020-6-11 16:42 | 顯示全部樓層
我也是一樣不知道怎么回事!求幫助
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久新视频 | 蜜臀网站 | 午夜视频一区二区 | 国产精品入口久久 | 成人午夜在线 | www.99热这里只有精品 | 秋霞电影院午夜伦 | 日韩一区二区三区精品 | 久夜精品| 欧美成人在线影院 | 日韩亚洲欧美综合 | 国产高清区 | 在线观看日韩 | 欧美群妇大交群中文字幕 | 国产成人一区二区三区 | aaa级片| 天天操天天插天天干 | 欧美日韩不卡 | 成人在线免费观看 | japanhd成人| 在线中文字幕视频 | 成人一区二区视频 | 国产丝袜av | 神马久久av | 免费一看一级毛片 | 亚洲一区导航 | 国产欧美一区二区三区日本久久久 | 日韩在线观看一区 | 国产精品一区久久久久 | 欧美精品一区二区三区在线 | 成人在线观看网址 | 国内精品久久久久久久影视简单 | 亚洲品质自拍视频网站 | 蜜桃av鲁一鲁一鲁一鲁 | 天天干在线播放 | 欧美一区二区三区 | 免费看国产精品视频 | 久久91 | 福利网址| 久草免费在线 | 久久久久久久久久久久亚洲 |