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

標(biāo)題: 單片機(jī)ht1621驅(qū)動(dòng)問題 [打印本頁]

作者: LLL2022    時(shí)間: 2023-3-24 09:01
標(biāo)題: 單片機(jī)ht1621驅(qū)動(dòng)問題
問題:以下是我寫的ht1621驅(qū)動(dòng),驅(qū)動(dòng)后顯示屏顯示圖像不對(duì),目前懷疑send_bit函數(shù)不能準(zhǔn)確發(fā)送相應(yīng)數(shù)據(jù),求大家?guī)兔獯鹨幌拢x謝。PS附件為數(shù)據(jù)手冊(cè)

單片機(jī)源程序如下:
  1. #include "lcd.h"

  2. void delay(void)//延時(shí)10us
  3. {
  4.       int i;
  5.       for(i=0;i<10;i++)
  6.      {
  7.            __NOP();
  8.       }
  9. }

  10. void send_bit(uint8_t data,uint8_t cnt) //data為發(fā)送數(shù)據(jù),cnt為發(fā)送位數(shù)
  11. {
  12.        int i;
  13.        for(i=0;i<cnt;i++)
  14.      {
  15.           WR_L;
  16.           delay();
  17.            if(data&0x80)
  18.            {
  19.                DATA_H;
  20.             }
  21.            else
  22.            {
  23.                  DATA_L;
  24.             }
  25.             WR_H;
  26.             delay();
  27.             data<<=1;
  28.          }
  29. }

  30. void write_cmd(uint8_t data) //發(fā)送命令
  31. {
  32.         CS_L;
  33.        send_bit(0x80,3);
  34.        send_bit(data,9);
  35.        delay();
  36.        CS_H;
  37. }

  38. void write_data(uint8_t addr,uint8_t data)
  39. {
  40.           CS_L;
  41.          addr<<=2;
  42.           data<<=4;
  43.           send_bit(0xa0,3);
  44.            send_bit(addr,6);
  45.            send_bit(data,4);
  46.           delay();
  47.             CS_H;
  48. }

  49. void clean_screen(void)
  50. {
  51.       int i,temp=0;
  52.        for(i=0;i<32;i++)
  53.       {
  54.            write_data(temp,0);
  55.              temp++;
  56.        }
  57. }

  58. void show_all_screen(void)
  59. {
  60.         int i,temp=0;
  61.           for(i=0;i<32;i++)
  62.        {
  63.           write_data(temp,1);
  64.           temp++;
  65.         }
  66. }

  67. void LCD_init(void)
  68. {
  69.      write_cmd(SYS_EN);/ /打開系統(tǒng)振蕩器
  70.      write_cmd(RC256);//內(nèi)部時(shí)鐘
  71.      write_cmd(BIAS);//1/3duty  4com
  72.      write_cmd(LCD_ON);打開LCD偏壓
  73.      clean_screen();
  74. }
復(fù)制代碼
以下是頭文件里面一些定義
  1. #define COMMAND        0x80  // 命令碼-100
  2. #define WRITE_DATA     0xA0  //寫命令-101
  3. #define READ_DATA      0xC0  //讀命令-110

  4. #define BIAS           0X52  // 1/3duty  4com
  5. #define SYS_EN         0x02  // 打開系統(tǒng)振蕩器
  6. #define LCD_ON         0x06  // 打開LCD偏壓
  7. #define RC256          0x30  // 內(nèi)部時(shí)鐘

復(fù)制代碼





DJM6040規(guī)格書.pdf

3.26 MB, 下載次數(shù): 7


作者: yueguang3048    時(shí)間: 2023-3-24 09:01
1.代碼不會(huì)擼,你的send_bit就是高位在前的發(fā)送,看著跟時(shí)序能對(duì)上;
2.注意下這貨的ADDRESS和DATA發(fā)送數(shù)據(jù)不一樣,ADDRESS高位在前,DATA是低位在前。
3.沒有細(xì)細(xì)看手冊(cè),不行編不下去了...

作者: 大漠落日    時(shí)間: 2023-3-24 13:17
1621驅(qū)動(dòng)不難,主要難點(diǎn)在取顯示字模上,你要有實(shí)物才能更好進(jìn)行程序調(diào)試,我沒有實(shí)物,只能幫到這里
作者: LLL2022    時(shí)間: 2023-3-24 16:52
yueguang3048 發(fā)表于 2023-3-24 10:59
1.代碼不會(huì)擼,你的send_bit就是高位在前的發(fā)送,看著跟時(shí)序能對(duì)上;
2.注意下這貨的ADDRESS和DATA發(fā)送數(shù) ...

我是菜狗,我之前沒注意到,現(xiàn)在我重新寫了,但還是不行,現(xiàn)在什么都沒有顯示

  1. void write_cmd(uint8_t cmd)
  2. {
  3.         int i;
  4.         uchar j=0x80;
  5.         CS_L;
  6.         for(i=0;i<3;i++)
  7.         {
  8.                 if(j&0x80)
  9.                 {
  10.                         DATA_H;
  11.                 }
  12.                 else
  13.                 {
  14.                         DATA_L;
  15.                 }
  16.                 WR_L;
  17.                 delay();
  18.                 WR_H;
  19.                 delay();
  20.                 j<<=1;
  21.         }
  22.         for(i=0;i<9;i++)
  23.         {
  24.                 if(cmd&0x80)
  25.                 {
  26.                         DATA_H;
  27.                 }
  28.                 else
  29.                 {
  30.                         DATA_L;
  31.                 }
  32.                 WR_L;
  33.                 delay();
  34.                 WR_H;
  35.                 delay();
  36.                 cmd<<=1;
  37.         }
  38.         CS_H;
  39. }

  40. void write_data(uint8_t addr,uint8_t data)
  41. {
  42.         int i;
  43.         uchar j=0xa0;
  44.         CS_L;
  45.         for(i=0;i<3;i++)
  46.         {
  47.                 if(j&0x80)
  48.                 {
  49.                         DATA_H;
  50.                 }
  51.                 else
  52.                 {
  53.                         DATA_L;
  54.                 }
  55.                 WR_L;
  56.                 delay();
  57.                 WR_H;
  58.                 delay();
  59.                 j<<=1;
  60.         }
  61.         addr<<=2;
  62.         for(i=0;i<6;i++)
  63.         {
  64.                 if(addr&0x80)
  65.                 {
  66.                         DATA_H;
  67.                 }
  68.                 else
  69.                 {
  70.                         DATA_L;
  71.                 }
  72.                 WR_L;
  73.                 delay();
  74.                 WR_H;
  75.                 delay();
  76.                 addr<<=1;
  77.         }

  78.         for(i=0;i<4;i++)
  79.         {
  80.                 if(data&0x01)
  81.                 {
  82.                         DATA_H;
  83.                 }
  84.                 else
  85.                 {
  86.                         DATA_L;
  87.                 }
  88.                 WR_L;
  89.                 delay();
  90.                 WR_H;
  91.                 delay();
  92.                 data>>=1;
  93.         }
  94.         CS_H;
  95. }
復(fù)制代碼

作者: LLL2022    時(shí)間: 2023-3-24 16:55
大漠落日 發(fā)表于 2023-3-24 13:17
1621驅(qū)動(dòng)不難,主要難點(diǎn)在取顯示字模上,你要有實(shí)物才能更好進(jìn)行程序調(diào)試,我沒有實(shí)物,只能幫到這里

我有實(shí)物調(diào)試,但就是不行。明明感覺已經(jīng)跟住時(shí)序發(fā)送數(shù)據(jù)了
作者: 13510432506    時(shí)間: 2023-3-24 17:41
這個(gè)簡(jiǎn)單,我知道是哪里的問題,你關(guān)閉正常,點(diǎn)亮不正常
作者: LLL2022    時(shí)間: 2023-3-25 08:56
13510432506 發(fā)表于 2023-3-24 17:41
這個(gè)簡(jiǎn)單,我知道是哪里的問題,你關(guān)閉正常,點(diǎn)亮不正常

好像是關(guān)閉和點(diǎn)亮都不正常
作者: LLL2022    時(shí)間: 2023-3-25 08:59
謝謝大家!!問題已經(jīng)找出了,有兩個(gè)問題,第一個(gè)問題是像二樓說的ADDRESS和DATA發(fā)送數(shù)據(jù)不一樣,ADDRESS高位在前,DATA是低位在前,我改了代碼后發(fā)現(xiàn)不行,又去看了數(shù)據(jù)手冊(cè),發(fā)現(xiàn)第二個(gè)問題我的命令碼寫錯(cuò)了,現(xiàn)在已經(jīng)調(diào)試成功了。
作者: yueguang3048    時(shí)間: 2023-3-25 09:21
LLL2022 發(fā)表于 2023-3-25 08:59
謝謝大家!!問題已經(jīng)找出了,有兩個(gè)問題,第一個(gè)問題是像二樓說的ADDRESS和DATA發(fā)送數(shù)據(jù)不一樣,ADDRESS高 ...

下次調(diào)試時(shí),配個(gè)邏輯分析儀,會(huì)事半功倍的。
作者: j1ason    時(shí)間: 2024-1-2 23:01
我也調(diào)了很久了,按樓主以上代碼跑,還是沒有點(diǎn)亮。
樓主提及到的第二個(gè)問題命令代碼錯(cuò)誤,具體是怎么樣修正的?
我的命令代碼如下:
#define SYSEN      0x01
#define RC256K     0x18
#define BIAS       0x28|0x01 //0x52       //0x28
#define LCDON      0x03
#define SYSDIS     0x00
#define WDTDIS     0x0A
#define LCDOFF     0x02
作者: j1ason    時(shí)間: 2024-1-2 23:19
  1. void HT1621_1_Init(void)  
  2. {
  3.         //HT1621B_1_CS = 1;
  4.         HT1621B_CS_SET();
  5.         //HT1621B_1_WR = 1;
  6.         HT1621B_WR_SET();
  7.         //HT1621B_1_DA = 1;
  8.         HT1621B_DA_SET();
  9.         delay100us(2);
  10.          
  11.         HT1621_1_WriteCMD(SYSDIS);         
  12.         delay10us(1);
  13.         //HT1621_1_WriteCMD(0x02);
  14.         delay10us(1);
  15.         HT1621_1_WriteCMD(SYSEN);
  16.         HT1621_1_WriteCMD(RC256K);
  17.         HT1621_1_WriteCMD(WDTDIS);
  18.         HT1621_1_WriteCMD(BIAS);
  19.         HT1621_1_WriteCMD(LCDON);
  20.        
  21.         //HT1621_1_WriteCMD(0xE3);
  22.         Clean_Screen();
  23.         //HT1621_1_WriteCMD(LCDOFF);
  24.         STK_BL_OFF();        
  25.         }
復(fù)制代碼
  1. <blockquote>void Clean_Screen(void)
復(fù)制代碼
HT1621_1_WriteOneData(temp,0);HT1621_1_WriteCMD(SYSEN);
與樓主函數(shù)相同,目前還是無法點(diǎn)亮。請(qǐng)教一下哪里出問題了。謝謝!







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