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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3116|回復: 5
打印 上一主題 下一主題
收起左側

STC15W4K58S4與1602,12864顯示失敗解決方案之一

[復制鏈接]
跳轉到指定樓層
樓主
ID:586048 發(fā)表于 2019-7-23 20:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我遇到的是時序圖那個時間不對應,因為15w快89  6——12倍,所以那些時間也要快6——12倍,引腳也要相應的看原理圖改。

下面是我的問題:
我的屏幕很暗,調了板子上的可調電阻還是很暗,又沒有大佬幫幫我





延時測試.zip

699.63 KB, 下載次數(shù): 28

1602與stc15w

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:586048 發(fā)表于 2019-7-23 20:59 | 只看該作者
/*
**********************************************************************
*                         頭文件包含
**********************************************************************
*/
#define         MAIN_Fosc                12000000UL        //定義主時鐘  22.1184M晶振
//u8,u16,u32已在"STC15Fxxxx.h"定義
#include "STC15Fxxxx.h"

/*
**********************************************************************
*                         本地宏定義
**********************************************************************
*/
/*
void main(void)
{
        P0M1 = 0;        P0M0 = 0;        //設置為準雙向口
        P1M1 = 0;        P1M0 = 0;        //設置為準雙向口
        P2M1 = 0;        P2M0 = 0;        //設置為準雙向口
        P3M1 = 0;        P3M0 = 0;        //設置為準雙向口
        P4M1 = 0;        P4M0 = 0;        //設置為準雙向口
        P5M1 = 0;        P5M0 = 0;        //設置為準雙向口
        P6M1 = 0;        P6M0 = 0;        //設置為準雙向口
        P7M1 = 0;        P7M0 = 0;        //設置為準雙向口
       
        while(1);
}*/
/*
RS  RW E 引腳要自己定義
因為15W系列快89系列 6——12倍,時序圖上面的時間也要
相應的加倍,具體多少要具體測試,我的大概快了8倍(IAP15W4K584S)
可以作為參考
*/

sbit LCD_RS=P5^0;//定義引腳
sbit LCD_RW=P5^1;
sbit LCD_E=P5^2;
sbit ledL = P5^5;
#define LCD_Data P4
#define Busy    0x80 //用于檢測LCD狀態(tài)字中的Busy標識



void WriteDataLCD(unsigned char WDLCD);
void WriteCommandLCD(unsigned char WCLCD,BuysC);
unsigned char ReadDataLCD(void);
unsigned char ReadStatusLCD(void);
void LCDInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
void Delay4us(void);


unsigned char code uctech[] = {"ic2012.taobao.co"};
unsigned char code net[] = {"Happy every day!"};

void main(void)
{
        P0M1 = 0;        P0M0 = 0;        //設置為準雙向口
        P1M1 = 0;        P1M0 = 0;        //設置為準雙向口
        P2M1 = 0;        P2M0 = 0;        //設置為準雙向口
        P3M1 = 0;        P3M0 = 0;        //設置為準雙向口
        P4M1 = 0;        P4M0 = 0;        //設置為準雙向口
        P5M1 = 0;        P5M0 = 0;        //設置為準雙向口
        P6M1 = 0;        P6M0 = 0;        //設置為準雙向口
        P7M1 = 0;        P7M0 = 0;        //設置為準雙向口
        //上面這些是必要的,除非用到PWM
       
        ledL = 0;
Delay400Ms(); //啟動等待,等LCD講入工作狀態(tài)
LCDInit(); //LCM初始化
Delay5Ms(); //延時片刻(可不要)

DisplayListChar(0, 0, uctech);
DisplayListChar(0, 5, net);
ReadDataLCD();//測試用句無意義
while(1);{}
       
}

//寫數(shù)據(jù)
void WriteDataLCD(unsigned char WDLCD)
{
ReadStatusLCD(); //檢測忙
LCD_Data = WDLCD;
LCD_RS = 1;
        Delay4us(); //延時  約4.25微秒
       
LCD_RW = 0;       
        Delay4us(); //延時
       
LCD_E = 0; //若晶振速度太高可以在這后加小的延時
        Delay4us();  //延時
       
LCD_E = 1;
}

//寫指令
void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC為0時忽略忙檢測
{
if (BuysC) ReadStatusLCD(); //根據(jù)需要檢測忙
LCD_Data = WCLCD;
LCD_RS = 0;
        Delay4us();  //延時
       
LCD_RW = 0;
        Delay4us();  //延時
       
LCD_E = 0;
        Delay4us();
       
LCD_E = 1;
}

//讀數(shù)據(jù)
unsigned char ReadDataLCD(void)
{
LCD_RS = 1;
        Delay4us();  //延時
       
LCD_RW = 1;
        Delay4us(); ; //延時
       
LCD_E = 0;
        Delay4us();
       
LCD_E = 1;
return(LCD_Data);
}

//讀狀態(tài)
unsigned char ReadStatusLCD(void)
{
LCD_Data = 0xFF;
LCD_RS = 0;
        Delay4us();  //延時
       
LCD_RW = 1;
        Delay4us();  //延時
       
LCD_E = 0;
        Delay4us(); //約4.25微秒
        Delay4us();        //兩個約8微秒,自己測試一下
LCD_E = 1;
while (LCD_Data & Busy); //檢測忙信號
return(LCD_Data);
}

void LCDInit(void) //LCM初始化
{
LCD_Data = 0;
WriteCommandLCD(0x38,0); //三次顯示模式設置,不檢測忙信號
Delay5Ms();
WriteCommandLCD(0x38,0);
Delay5Ms();
WriteCommandLCD(0x38,0);
Delay5Ms();

WriteCommandLCD(0x38,1); //顯示模式設置,開始要求每次檢測忙信號
WriteCommandLCD(0x08,1); //關閉顯示
WriteCommandLCD(0x01,1); //顯示清屏
WriteCommandLCD(0x06,1); // 顯示光標移動設置
WriteCommandLCD(0x0C,1); // 顯示開及光標設置
}

//按指定位置顯示一個字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //當要顯示第二行時地址碼+0x40;
X |= 0x80; // 算出指令碼
WriteCommandLCD(X, 0); //這里不檢測忙信號,發(fā)送地址碼
WriteDataLCD(DData);
}

//按指定位置顯示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength;

  ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while (DData[ListLength]>=0x20) //若到達字串尾則退出
  {
   if (X <= 0xF) //X坐標應小于0xF
    {
     DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字符
     ListLength++;
     X++;
    }
  }
}

//5ms延時
void Delay5Ms(void)
{
        unsigned char i, j;

        i = 59;
        j = 90;
        do
        {
                while (--j);
        } while (--i);
}

//400ms延時
void Delay400Ms(void)
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 19;
        j = 62;
        k = 43;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void Delay4us()                //@12.000MHz  精準延時4微妙
{
        unsigned char i;

        _nop_();
        _nop_();
        i = 9;   //必須i>=8,大約6微秒(在229——237測試)實際上是3.9微秒
        while (--i);
}




回復

使用道具 舉報

板凳
ID:480680 發(fā)表于 2019-7-25 11:22 | 只看該作者
電位器調節(jié)顯示對比度!沒有顯示有三種能:
1、顯示屏壞了
2、信號線沒有連接好
3、程序問題
回復

使用道具 舉報

地板
ID:586048 發(fā)表于 2019-7-26 14:34 | 只看該作者
周濤1331 發(fā)表于 2019-7-25 11:22
電位器調節(jié)顯示對比度!沒有顯示有三種能:
1、顯示屏壞了
2、信號線沒有連接好

顯示屏沒有壞,信號線也沒有問題,如果是程序問題會出在那里?
電位器也調過了,也是沒有什么用,求大佬解答
回復

使用道具 舉報

5#
ID:586048 發(fā)表于 2019-7-26 14:38 | 只看該作者
周濤1331 發(fā)表于 2019-7-25 11:22
電位器調節(jié)顯示對比度!沒有顯示有三種能:
1、顯示屏壞了
2、信號線沒有連接好

可能說的不是很清楚,程序能過正常顯示,但是屏幕很暗
回復

使用道具 舉報

6#
ID:419264 發(fā)表于 2019-7-27 20:55 | 只看該作者
那個P5^5改為P5^4
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品日本中文字幕 | 中文字幕成人在线 | 欧美一区二区三区四区五区无卡码 | 欧美videosex性极品hd | 毛片1| 亚洲免费视频在线观看 | 久久久国产一区二区三区四区小说 | 羞羞网站免费 | 91在线观| 久久久久久国产精品免费免费 | 久久99精品久久久水蜜桃 | 国产精品一区二区三区四区 | 一区二区三区四区免费观看 | 亚洲电影一区二区三区 | 91激情电影 | 久热精品在线观看视频 | 精品一级 | 99这里只有精品视频 | 中文字幕一区二区三区四区五区 | 欧美极品一区二区 | a级免费观看视频 | 亚洲精品成人av久久 | 亚洲福利在线视频 | 亚洲巨乳自拍在线视频 | 国产精品成人av | 国内精品一区二区 | 成人黄色网址大全 | 91麻豆精品国产91久久久久久 | 荷兰欧美一级毛片 | 久久久91精品国产一区二区三区 | 成年免费大片黄在线观看一级 | 一区二区视屏 | 成人av网站在线观看 | 亚洲成人久久久 | 亚洲综合一区二区三区 | 中文字幕在线视频免费观看 | 久久精品亚洲精品国产欧美 | 日本激情视频中文字幕 | 欧美日韩久久久 | 中文字幕视频在线 | 91成人在线 |