欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 有大哥能幫我看看為啥液晶點不亮嗎?兩周了,難受死我了 [打印本頁]

作者: 智能羊羊    時間: 2021-8-4 15:30
標題: 有大哥能幫我看看為啥液晶點不亮嗎?兩周了,難受死我了
#include "ior5f10wmg.h"
#include "ior5f10wmg_ext.h"
#define CGC_SUBWAITTIME         185U
#include "stdint.h"
#define NOP     (__no_operation)

__intrinsic void __no_operation(void);
#define DI     (__disable_interrupt)

__intrinsic void __disable_interrupt(void);
#define DI      (__disable_interrupt)
#define EI      __enable_interrupt



void  R_LCD_Create (void)
{
    volatile uint16_t wt_count; //定義計數變量,延時用
   __intrinsic void __no_operation(void);
    LCDON = 0;           //讓數據寄存器的數據與0相與,關閉LCD
    LCDM1 = 0x00;       //LCD模式寄存器1的初始化設定
    LCDM0 = 0x0D;       //LCD模式寄存器0的初始化設定,外部升壓,A波形,4時間片,1/3偏壓

    ISCLCD &= 0x02;      //LCD輸入切換寄存器初始化設定
                         //怎么設定要看相應的引腳是否有參與LCD的功能
    LCDC0 = 0x07;        //LCD時鐘控制寄存器0,其作用是控制幀頻率,而幀頻率由波形時間片等因素決定
                     //此處是fSUB/2^8 or fIL/2^8

    VLCON=0;
    VLCD = 0x04;         //LCD升壓控制電平寄存器,在外部電阻分壓方式下, VLCD 寄存器必須為初始值04H

    for (wt_count = 0; wt_count <= 1000; wt_count++)  //延時
    {
        NOP();
    }

   VLCON = 1;      
    for (wt_count = 0; wt_count <= 1000; wt_count++)
    {
        NOP();
    }

    SCOC = 1;           //允許LCD顯示
}


void R_CGC_Create(void)//初始化時鐘
{
volatile uint16_t i;
__intrinsic void __no_operation(void);
    OSMC = 0x80;   //超低消耗電流運行
    //設置時鐘運行模式控制寄存器CMC
    CMC = 0x10;   // 副時鐘系統XT1震蕩模式,使震蕩電路運行 ,且震蕩模式為低功耗震蕩
    //設置系統時鐘控制器CKC

    //設置時鐘運行狀態控制寄存器
    CSC = 0x80;   //將XTSTOP位清零,使XT1震蕩電路開始震蕩
    //等待副時鐘系統所需要的的時間
      for( i=0; i<=CGC_SUBWAITTIME; i++ )
    {
        NOP();
    }
    CKC = 0x40;  //通過CKC寄存器的CSS位將XT1振蕩時鐘設定為CPU/外圍硬件時鐘

}
void R_PORT_Create(void)
{
   PFSEG0 = 0x30;
   PFSEG1 = 0x35;
   PFSEG4 = 0xFF;
   PFSEG5 = 0x07;//根據用到的引腳設定
   //段輸出引腳總共由端口模式控制寄存器(0),端口模式寄存器(0),端口寄存器(0)以及上面的LCD端口功能寄存器(1)決定,
   //所以下面還需設定端口模式寄存器,端口寄存器以及端口模式控制寄存器,原因是復用了端口
   PMC1 = 0xF0;//設置端口模式控制寄存器
   PMC2 = 0x0F;
   PMC4 = 0x00;

   //相應的端口模式寄存器需要置為0,默認復位后全為1
   PM1 = 0;
   PM2 = 0;
   PM5 = 0;
   PM7 = 0;

   PU12=0x00;
   P12=0x00;
   //相應的端口寄存器復位后都為零,所以可以不用設置?
   P1=0;
   P2=0;
   P5=0;
   P7=0;
}
void R_DISPLAY_ON (void)
{

    SEG0 = 0x0f;
    SEG1 = 0x0f;
    SEG2 = 0x0f;
    SEG3 = 0x0f;
    SEG4 = 0x0f;
    SEG5 = 0x0f;

    SEG8 = 0x0f;

    SEG10 = 0x0f;

    SEG12 = 0x0f;
    SEG13 = 0x0f;
    SEG30 = 0x0f;
    SEG31 = 0x0f;
    SEG32 = 0x0f;
    SEG33 = 0x0f;
    SEG34 = 0x0f;
    SEG35 = 0x0f;
    SEG36 = 0x0f;
    SEG37 = 0x0f;
    SEG38 = 0x0f;
    SEG39 = 0x0f;
    SEG40 = 0x0f;
    SEG41 = 0x0f;

}
void R_LCD_Start(void)
{

  LCDON = 1;  
}
int main( int argc, char **argv )
{
  R_CGC_Create();
    R_PORT_Create();
  R_LCD_Create();



  R_LCD_Start();


  while(1)
  {

    R_DISPLAY_ON ();
  }
}



1628062154310_DB09F92A-9D56-420c-A81E-D952F59D271D.png (105.77 KB, 下載次數: 53)

1628062154310_DB09F92A-9D56-420c-A81E-D952F59D271D.png

作者: 名字不是重點    時間: 2021-8-4 17:31
這 個什么MCU?
作者: zyluglugl    時間: 2021-8-4 22:59
找個邏輯分析儀,看看有沒有數據,時鐘對不對。還有建議你發帖時,先說明你的單片機的型號,連接折方式。LCD的型號。還有代碼要有注釋,這樣人家才能看出你哪里有問題。
還有非常重要的就是你買個開發板,開發板會帶有例程的,至少,你能知道你的LCD接線對不對,LCD或MCU是不是好的。
作者: Y_G_G    時間: 2021-8-5 00:15
LCD什么驅動的?如果有驅動,先用8051寫代碼,能顯示一個字母符號之類的就可以了,這樣你就知道這個驅動要怎么去控制了
如果是LCD沒驅動,那么,它是要交流驅動的,(但我并不知道直流會不會不亮,反正一直是用交流的)
如果你那是用導電條接觸的測試板,去馬云家買一個金屬引腳的吧,隨便一個簡單點的,先保證硬件電路不會出問題,然后,用8051先點亮,先了解LCD是怎么工作的
然后再去用你這單片機寫,你用的單片機在這很少有人用的......
作者: wwh2382    時間: 2021-8-5 08:40
提供的信息太少,mcu、lcd是什么型號?大家幫不上忙,也難受死了
作者: rayin    時間: 2021-8-5 08:51
最少要貼出來MCU對接LCD部分的原理圖,LCD是單色還是彩色,接口是MIPI,LVDS,MPU8bit,16bit的? 有最基本的信息,別人才能幫你分析啊
作者: design003    時間: 2021-8-5 09:14
兩周時間足夠你看完器件手冊了  還沒解決,看你貼出來的CPU 支持的液晶是段碼式的   SEG 和COM都沒連對你就做蠟了
作者: fhsgjsgjsfgjsfj    時間: 2021-8-5 11:11
提出問題也是一門學問,如何能清晰的表述,是解決問題的關鍵
作者: pcf2000    時間: 2021-8-5 11:26
語焉不詳、去頭掐尾也是愛莫能助的了。。。
作者: zheng_he    時間: 2021-8-5 11:29
原理圖可以貼全一點,有可能是硬件設計的問題哦
作者: 0x00000000    時間: 2021-8-5 13:08
樓主這樣提問對回答者的要求太高了,回答者得猜對你的所用的芯片,然后才能根據手冊查看你的初始化代碼是否正確。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1