OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2885|回复: 8

stm32f051驱动ht1621不能显示

[复制链接]

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-11-1 16:46:04 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 qiuzhicheng 于 2018-11-2 15:21 编辑

驱动过ht1621的朋友能不能帮忙看下哪里有问题。非常感谢

最佳答案

查看完整内容[请看2#楼]

#include #define WR wr #define DATA a0 #define CS cs #define SEG_SIZE (11) #define COM_SIZE (4) #define COLUMN_SIZE ((SEG_SIZE >> 1) | (SEG_SIZE & 0x01)) typedef enum { SYS_DIS, SYS_EN, LCD_OFF, LCD_ON, TIMER_DIS, WDT_DIS, TIMER_EN, WDT_EN, TONE_OFF, TONE_ON, CLR_TIMER = 0x0C, CLR_WDT = 0x0E, XTAL_32K = 0x14, RC_256K = 0x18, EXT_256K = 0x1C, BIAS1_2DUT ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2015-10-8
在线时间
64 小时
发表于 2018-11-1 16:46:05 | 显示全部楼层
#include<tester.h>

#define WR wr
#define DATA a0
#define CS cs

#define SEG_SIZE (11)
#define COM_SIZE (4)
#define COLUMN_SIZE ((SEG_SIZE >> 1) | (SEG_SIZE & 0x01))

typedef enum
{
        SYS_DIS,
        SYS_EN,
        LCD_OFF,
        LCD_ON,
        TIMER_DIS,
        WDT_DIS,
        TIMER_EN,
        WDT_EN,
        TONE_OFF,
        TONE_ON,
        CLR_TIMER = 0x0C,
        CLR_WDT = 0x0E,
        XTAL_32K = 0x14,
        RC_256K = 0x18,
        EXT_256K = 0x1C,
        BIAS1_2DUTY2 = 0x20,
        BIAS1_2DUTY3 = 0X24,
        BIAS1_2DUTY4 = 0X28,
        BIAS1_3DUTY2 = 0X21,
        BIAS1_3DUTY3 = 0X25,
        BIAS1_3DUTY4 = 0X29,
        TONE_4K = 0X40,
        TONE_2K = 0X60,
        IRQ_DIS = 0X80,
        IRQ_EN = 0X88,
        F1 = 0XA0,
        F2,
        F4,
        F8,
        F16,
        F32,
        F64,
        F128,
        NORMAL = 0XE3,
}HT16xx_Command;

typedef enum
{
        Command = 0x04,
        Data,
        Read,
}HT16xx_CommandMode;

void Write_Mode(HT16xx_CommandMode mode)       
{
        u8 i;
        for (i = 0; i < 3; i++)
        {
                WR = 0;
                DATA = (mode >> (2 - i)) & 0x01;
                WR = 1;
        }
}

void Write_Cmd(HT16xx_Command cmd)       
{
        u8 i;
        for(i=0;i<8;i++)
        {
                WR = 0;
                DATA = (cmd >> (7-i)) & 0x01;
                WR = 1;
        }
        WR = 0;
        DATA = 0;               
        WR = 1;
}

void Write_Addr(u8 Abyte)
{
        u8 i;
        for(i=0;i<6;i++)
        {
                WR = 0;NOP;NOP;NOP;
                DATA = (Abyte>>(5-i)) & 0x01;
                WR = 1;NOP;NOP;NOP;
        }
}

void Write_Dat(u8 Dbyte)
{
        u8 i;
        for(i=0;i<8;i++)
        {
                WR = 0;NOP;NOP;NOP;
                DATA = (Dbyte>>(7-i)) & 0x01;
                WR = 1;NOP;NOP;NOP;
        }
}

void LcdInit(void)                       
{
        CS = 0;
        Write_Mode(Command); //command mode
        Write_Cmd(SYS_EN);        //Enable System
        Write_Cmd(LCD_ON);        //Enable Bias
        Write_Cmd(TIMER_DIS);        //Disable Timer
        Write_Cmd(WDT_DIS);        //Disable WDT
        Write_Cmd(TONE_OFF);        //Tone OFF
        Write_Cmd(RC_256K);        //on-chip RC&#213;eμ′
        Write_Cmd(BIAS1_3DUTY4);        //1/4Duty 1/3Bias
        Write_Cmd(IRQ_DIS);        //Disable IRQ
        Write_Cmd(TONE_4K);        //Tone Frequency 4kHZ
        Write_Cmd(NORMAL);        //Normal Mode
        CS = 1;
}

void Display_COM(u8 com)
{
        u8 i;

        CS = 0;
        Write_Mode(Data);
        Write_Addr(0x00);
        for(i = 0; i < COLUMN_SIZE; i++)
        {
                Write_Dat((0x80 >> com) | (0x08 >> com));
        }
        CS = 1;
}

void Display_SEG(u8 seg)
{
        CS = 0;
        Write_Mode(Data);
        Write_Addr(seg);

        Write_Dat(0xF0);

        CS = 1;
}

void Display_Dot(u8 seg, u8 com)
{
        CS = 0;
        Write_Mode(Data);
        Write_Addr(seg);

        Write_Dat(0x80 >> com);

        CS = 0;
}

void FullRAM(u8 value)
{
        u8 i;
       
        CS = 0;
       
        Write_Mode(Data);
        Write_Addr(0);
        for(i=0;i<16;i++)
                Write_Dat(value);
        CS = 1;
}

void HT16xx_Test(void)
{
        u8 i,j;

        for(i = 0; i < COM_SIZE; i++)
        {
                FullRAM(0x00);
                Display_COM(i);
        }

        for(j = 0; j < SEG_SIZE; j++)
        {
                FullRAM(0x00);
                Display_SEG(j);
        }

        for(i = 0; i < COM_SIZE; i++)
        {
                for(j = 0; j < SEG_SIZE; j++)
                {
                        FullRAM(0x00);
                        Display_Dot(j,i);
                }
        }
}

void main(void)
{
        flash(100);
        datal = 0xFF;
        dir=1 ;
        coe=0 ;
        doe=1 ;
        koe=1 ;

        LcdInit();
        FullRAM(0x00);

        while(1)
        {
                HT16xx_Test();
        }
}
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
 楼主| 发表于 2018-11-1 17:30:20 | 显示全部楼层
或者说驱动断码屏有什么地方需要注意的呢?
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
 楼主| 发表于 2018-11-2 08:00:55 | 显示全部楼层
lqyfxljb 发表于 2018-11-1 17:52
#include

#define WR wr

非常感谢
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
 楼主| 发表于 2018-11-2 09:04:19 | 显示全部楼层
lqyfxljb 发表于 2018-11-1 17:52
#include

#define WR wr

和我自己驱动的一样,屏幕显示蓝色,没有其他显示..
回复

使用道具 举报

4

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2015-10-8
在线时间
64 小时
发表于 2018-11-2 16:52:12 | 显示全部楼层
看看你的硬件是否正确,VLCD电压是否正确
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
 楼主| 发表于 2018-11-2 17:18:33 | 显示全部楼层
lqyfxljb 发表于 2018-11-2 16:52
看看你的硬件是否正确,VLCD电压是否正确

现在是有显示了,但是显示不完整

全部显示出来会少几个断码部分

更改延时的大小会增减显示的多少,但怎么改都会有一部分不显示
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
 楼主| 发表于 2018-11-2 17:25:53 | 显示全部楼层
lqyfxljb 发表于 2018-11-2 16:52
看看你的硬件是否正确,VLCD电压是否正确

硬件应该没错,vlcd给的5V
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
 楼主| 发表于 2018-11-5 15:34:26 | 显示全部楼层
lqyfxljb 发表于 2018-11-1 16:46
#include

#define WR wr

现在我发现就是com4上的段无法显示,可能会是什么原因呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-5 22:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表