搜索
bottom↓
回复: 0

我的HT1622不能点亮!请大虾帮我分析一下,谢谢

[复制链接]

出0入0汤圆

发表于 2016-5-12 11:07:54 | 显示全部楼层 |阅读模式
#include <stdint.h>
#include "LPC17xx.h"
#include "type.h"
#include "1754_IO.h"
#include "1754_LCD.h"

#define uchar unsigned char
#define uint unsigned int

#define uchar unsigned char
#define uint unsigned int

#define HT1622_CS_H                   (LPC_GPIO1 -> FIOSET = 1 << 18)  //P1.18
#define HT1622_CS_L                 (LPC_GPIO1 -> FIOCLR = 1 << 18)

#define HT1622_RD_H                 (LPC_GPIO1 -> FIOSET = 1 << 19) //P1.19
#define HT1622_RD_L                 (LPC_GPIO1 -> FIOCLR = 1 << 19)

#define HT1622_WR_H                 (LPC_GPIO1 -> FIOSET = 1 << 20) //P1.20
#define HT1622_WR_L                 (LPC_GPIO1 -> FIOCLR = 1 << 20)

#define HT1622_DATA_H         (LPC_GPIO1 -> FIOSET = 1 << 22)  //P1.22
#define HT1622_DATA_L         (LPC_GPIO1 -> FIOCLR = 1 << 22)

#define HT1622_IRQ                         (LPC_GPIO1 -> FIODIR |= 1 << 23; LPC_GPIO1 -> FIOPIN &= (1 << 23) ) //P1.23

//**********  命令模式   *******//
#define HT1622_SYS_DIS                         HT1622_COMMAND+0X00                 //关闭系统振荡器和LCD偏置发生器
#define HT1622_SYS_EN                                 HT1622_COMMAND+0X02                 //打开系统振荡器
#define HT1622_LCD_OFF                         HT1622_COMMAND+0X04                 //关闭 LCD
#define HT1622_LCD_ON                                  HT1622_COMMAND+0X06                 // 打开 LCD
#define HT1622_TIMER_DIS                 HT1622_COMMAND+0X08                 //禁止时基输出
#define HT1622_WDT_DIS                         HT1622_COMMAND+0X0A                 //禁止 WDT 溢出标志输出
#define HT1622_TIMER_EN                         HT1622_COMMAND+0X0C                 //使能时基输出
#define HT1622_WDT_EN                                 HT1622_COMMAND+0X0E                 //使能 WDT 溢出标志输出
#define HT1622_TONE_OFF                  HT1622_COMMAND+0X10                 //关闭音频输出
#define HT1622_CLR_TIMER                  HT1622_COMMAND+0X1A                 //清零时基发生器内容
#define HT1622_CLR_WDT                          HT1622_COMMAND+0X1E                 //清零 WDT
#define HT1622_RC32K                                  HT1622_COMMAND+0X30                 //系统时钟源,片内RC振荡器
#define HT1622_EXT32K                                  HT1622_COMMAND+0X38                 //系统时钟源,外部时钟源
#define HT1622_TONE_4K                          HT1622_COMMAND+0X80                 //音调频率 4KHz
#define HT1622_TONE_2K                          HT1622_COMMAND+0XC0                 //音调频率 2KHz
#define HT1622_IRQ_DIS                         HT1622_COMMAND+0X100         //禁止 IRQ 输出
#define HT1622_IRQ_EN                          HT1622_COMMAND+0X110         //使能 IRQ 输出
#define HT1622_F1                                                  HT1622_COMMAND+0X140         //时基/WDT 时钟输出 1Hz, WDT 溢出标志 每 4s
#define HT1622_F2                                                 HT1622_COMMAND+0X142         //时基/WDT 时钟输出 2Hz, WDT 溢出标志 每 2s
#define HT1622_F4                                                  HT1622_COMMAND+0X144         //时基/WDT 时钟输出 4Hz, WDT 溢出标志 每 1s
#define HT1622_TEST                                   HT1622_COMMAND+0X1C0         //测试模式 用户不用
#define HT1622_NORMAL                          HT1622_COMMAND+0X1C6          //正常模式

/*********************************************************************************************************
** Function name:       delay
** Descriptions:        软件延时 100us

*********************************************************************************************************/

void delay(uint  t)
{
        uint i,j;
        for(i = 0;i < t;i++)
        {
                for(j = 0;j < 10;j++) ;
        }
}

extern  void Write_Bit_L(uint data, uchar cnt);
extern void Write_Bit_H(uint data, uchar cnt);

uchar a[22]={0xff,0xff,0xff,0x00,0xaa,0xff,0x55};

//////////////////////////////////////////////////////


//延时 us
void delayus(uchar us)
{
        while(us--);
}

//延时 ms
void delayms(uint ms)
{
        uint i,j;
        for(i=0;i<ms;i++)
        for(j=0;j<65;j++)
        {
                delayus(1);
        }
}

//写入脉冲
void LCD_Clk(void)
{
        delayus(10);
        HT1622_WR_L;
        delayus(10);
        HT1622_WR_H;
        delayus(10);
}

//写命令
void LCD_WRCMD(unsigned char dat)
{
        unsigned char i;
       
        HT1622_CS_L;
        delayus(1);
        HT1622_DATA_H;//命令模式码
        LCD_Clk();
        HT1622_DATA_L;
        LCD_Clk();
        HT1622_DATA_L;
        LCD_Clk();
       
        for(i=0;i<9;i++)//送命令
        {
                if(dat&0x80) {HT1622_DATA_H;}
                else {HT1622_DATA_L;}
                dat<<=1;
                LCD_Clk();
        }
        delayus(1);
        HT1622_CS_H;
       
}


//写数据
void LCD_WRDATA(unsigned char dat)
{
        unsigned char i,j,temp;
       
                for(i=0;i<2;i++)
                {
                        temp=dat&0x0f;
                        for(j=0;j<4;j++)
                        {
                                if(temp&0x01) {HT1622_DATA_H;}
                                else {HT1622_DATA_L;}
                                temp>>=1;
                                LCD_Clk();
                               
                        }
                        dat>>=4;
                }
       
}

//LCD显示
void LCD_DISP(void)
{
        uchar i,lcdtemp;
        HT1622_CS_L;
        delayus(1);
        HT1622_DATA_H;
        LCD_Clk();
        HT1622_DATA_L;
        LCD_Clk();
        HT1622_DATA_H;
        LCD_Clk();
       
        for(i=0;i<6;i++)
        {
                HT1622_DATA_L;
                LCD_Clk();
        }
       
        for(i=0;i<10;i++)
        {
                lcdtemp=0x00;
                LCD_WRDATA(lcdtemp);
        }
       
       
        delayus(1);
        HT1622_CS_H;
       
       
}

///TES0**********
/////////////////////////////////////////////////////
int main(void)
{
        unsigned char i;
        SystemInit();
GPIO_Init(); //初始化GPIO
//        HT1622_Init();
       

       
        LCD_WRCMD(0x30);
        LCD_WRCMD(0x00);
        LCD_WRCMD(0x0a);
        LCD_WRCMD(0x02);
        LCD_WRCMD(0x06);
       
        delayms(1000);

       
        while(1)
        {
                LCD_DISP();
   
        }
       
       

       
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-12 07:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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