历史上的今天
返回首页

历史上的今天

今天是:2025年02月25日(星期二)

正在发生

2020年02月25日 | 89c52单片机+HT1621 LCD驱动程序

2020-02-25 来源:51hei

单片机源程序如下:

#ifndef  _HT1621B_H_

#define  _HT1621B_H_

#include

#include            //为了使用NOP

#define NOP _nop_()

#define uchar unsigned char

#define uint unsigned int

#define ComMode 0x52  //4COM,1/3bias 1000 010 1001 0

#define RCosc 0x30    //内部RC振荡器(上电默认)1000 0011 0000

#define LCD_on 0x06   //打开LCD显示 偏压发生器1000 0000 0 11 0

#define LCD_off 0x04  //关闭LCD显示(上电默认)

#define Sys_en 0x02   //系统振荡器开 1000 0000 0010

#define Ctrl_cmd 0x80 //写控制命令 1000 

#define Data_cmd 0xa0 //写数据命令 1010 


//定义HT1621端口

#define SEG_NUM 12          //段码数字个数,即Seg数量/2


sbit CS1=P2^7;

sbit WR1=P2^6;

sbit DATA1=P2^5;

//                 //  0    1    2    3    4    5    6    7    8    9     灭

uchar code   tab[11]={0xF0,0x60,0xD0,0xF0,0x60,0xB0,0xB0,0xE0,0xF0,0xF0,0x00};

uchar code tab1[11] ={0xA0,0x00,0x60,0x40,0xC0,0xC0,0xE0,0x00,0xE0,0xC0,0x00};

/**-------------------------------------------------------------------------

Name: SendBit_1621(送数据程序)

---------------------------------------------------------------------------*/

void SendBit_1621(uchar sdata,uchar cnt) //sdata 的高cnt 位写入HT1621,高位在前

{

        uchar i;

        for(i=0;i        {

                WR1=0;         

                if(sdata&0x80) DATA1=1;

                else DATA1=0;

                WR1=1;

                sdata<<=1;

        }

}


/**-------------------------------------------------------------------------

Name: SendCmd(送命令)

---------------------------------------------------------------------------*/

void SendCmd_1621(uchar command)

{

        CS1=0;

        SendBit_1621(0x80,4);    //写入标志码“100”和9 位command 命令,由于

        SendBit_1621(command,8); //没有使有到更改时钟输出等命令,为了编程方便

        CS1=1;                   //直接将command 的最高位写“0”

}


/**-------------------------------------------------------------------------

Name: Write_1621(送数据和命令程序)

---------------------------------------------------------------------------*/

void Write_1621(uchar addr,uchar sdata,uchar len)

{

        addr<<=2;

        CS1=0;

        SendBit_1621(0xa0,3);  //写入标志码“101”

        SendBit_1621(addr,6);  //写入addr 的高6位

        SendBit_1621(sdata,len); //写入data 的高len位

        CS1=1;

}


/**-------------------------------------------------------------------------

Name: all_off(清除1621显示)

---------------------------------------------------------------------------*/

void HT1621_all_off(void)

        uchar i;

        uchar addr=0;

        for(i=0;i        {

                Write_1621(addr,0x00,8);

                addr+=2;

        }

}


/**-------------------------------------------------------------------------

Name: all_on(点亮1621全部Seg)

-------------------------------------------------------------------------*/

void HT1621_all_on(void)

        uchar i;

        uchar addr=0;

        for(i=0;i        {

                Write_1621(addr,0xff,8);

                addr+=2;

        }

}


/**-------------------------------------------------------------------------

Name: Init_1621(初始化1621)

-------------------------------------------------------------------------*/

void Init_1621(void)

{

        SendCmd_1621(Sys_en);

        SendCmd_1621(RCosc);

        SendCmd_1621(ComMode);

        SendCmd_1621(LCD_on);

}

/**-------------------------------------------------------------------------

Name: LCDoff(初始化1621)

-------------------------------------------------------------------------*/

void LCDoff(void)

{

        SendCmd_1621(LCD_off);

}

/**-------------------------------------------------------------------------

Name: LCDon(初始化1621)

-------------------------------------------------------------------------*/

void LCDon(void)

{

        SendCmd_1621(LCD_on);

}



void DelayMs(uint n)

{

    uchar a,b;

        uint i;

        for(i=n;i>0;i--)

            for(b=80;b>0;b--)

                for(a=10;a>0;a--)NOP;

}

#endif 

//void main(void)

//{

//        uchar i;

//        Init_1621();       //初始化HT1621

//        HT1621_all_off();  //清空LCD显示

//        HT1621_all_on();   //点亮所有Seg

//         DelayMs(500);

//HT1621_all_off();

//      while(1)

//   {        

//                         DelayMs(500);

//  i++;

//if(10==i)    //??8??????

//i=0;

//                 


//Write_1621(10, tab[i],4);  //第1个数字显示"1"

//        Write_1621(11,tab1[i],4); 

//   

……………………


推荐阅读

史海拾趣

Datasensor公司的发展小趣事

随着公司的不断发展壮大,DATALOGIC公司逐渐整合为三大业务模块:自动化产品、手持设备和自动扫描系统。为了更好地适应市场变化和满足客户需求,公司于1998年将自动化产品业务模块独立出来,成立新的公司,并启用DATALOGIC Sensor &More新标识。2000年,公司进一步启用全新的DATASENSOR品牌标识,标志着公司在工业自动化光电检测领域的新篇章。同时,公司投入大量资金用于生产改善、项目管理和高新技术领域的发展,为公司的持续创新和市场拓展提供了有力保障。

Dell公司的发展小趣事

为了进一步扩大市场份额和增强技术实力,DATASENSOR公司积极进行收购和扩张。2004年,公司成功收购INFRA和SPECIALVIDEO公司,这两家公司在工业自动化领域拥有丰富的经验和先进的技术,为DATASENSOR公司带来了更多的市场机会和技术优势。此外,公司还在法国、德国、英国和西班牙等国家和地区设立了子公司,实现了全球化的战略布局。

Desco Tools公司的发展小趣事

Desco Tools公司最初成立于上世纪70年代,专注于防静电工具的研发和生产。当时,随着电子行业的迅速发展,对静电防护的需求日益增加。Desco Tools公司凭借其敏锐的市场洞察力和技术实力,成功开发出了一系列防静电工具,如防静电手套、手腕带等,这些产品迅速在市场上获得了认可,为公司的发展奠定了坚实的基础。

DFI公司的发展小趣事

在稳固了国内市场地位后,DFI开始将目光投向全球市场。公司积极开拓北美、拉丁美洲和亚太地区的业务,通过参加国际展会、与当地企业建立合作关系等方式,不断提升品牌知名度和市场份额。同时,DFI还针对不同地区的市场需求,推出定制化的产品和服务,以满足客户的多样化需求。这一全球化战略使DFI在国际市场上取得了显著的成绩。

铨力(ALLPOWER)公司的发展小趣事

随着新能源汽车市场的快速发展,铨力公司看到了新的发展机遇。于是,公司开始布局新能源汽车领域,研发和生产新能源汽车所需的电源和充电设备。通过不断创新和拓展市场,铨力在新能源汽车领域也取得了显著的成绩,为公司的发展注入了新的动力。

这五个故事展示了铨力(ALLPOWER)公司在电子行业中的发展历程和取得的成就。从创立初期的太阳能电源产品研发,到技术突破和产品升级,再到国际市场的拓展和产业链整合,以及新能源汽车领域的布局,铨力始终保持着创新的精神和进取的态度,不断推动着公司的发展。

Anaheim Automation公司的发展小趣事

2003年,AMOTECH的压敏电阻产品被产业资源部评为“世界一流产品”,这是对公司技术实力的再次肯定。同年,公司还在韩国安全商协会进行了自动报价首次公开募股,为公司的发展筹集了更多资金。随着实力的增强,AMOTECH开始将目光投向海外市场。2004年,公司在山东建立了首家海外工厂,专注于全球定位系统天线的生产,这标志着公司国际化战略的正式启动。

问答坊 | AI 解惑

逆变电源的制作

大功率逆变电源…

查看全部问答>

怎么学好单片机

我是一个刚上大二的学生,看着单片机的一些东西觉得很感兴趣想学,但是又不知从何学起?希望高手指点一下帮我规划一下?小弟不胜感激。。。…

查看全部问答>

刚学EVC4,编译一个对话框应用程序,可是connect时出错

evc4平台下编译一个对话框应用程序,准备运行时出现进度条connecting,最后出现:      Timeout:   Failed   to   connect     to   the   device&nb ...…

查看全部问答>

菜鸟提问:高手请进!单片机设计与嵌入式开发的本质区别?

请大家谈谈单片机设计与嵌入式开发(比如说ARM)的本质区别? 包括系统工作的流程及硬件设计等有哪些本质上的差异?请各位高手畅所欲言。…

查看全部问答>

STM32F10xx时钟系统框图:时钟是整个系统的脉搏

下图是STM32F10xx时钟系统的框图,通过这个图可以一目了然地看到各个部件时钟产生的路径,还可以很方便地计算出各部分的时钟频率。STM32的四个时钟源(HSI、HSE、LSI和LSE)也在图中标出;图中间的时钟监视系统(CSS)是在很多ST7的单片机中就出现 ...…

查看全部问答>

STM32串口控制寄存器疑问

准备采用中断法发送数据,看到datasheet描述USART_CR1位7(TXEIE)和位8(TCIE),不是太明白。采用那一种比较好?…

查看全部问答>

求助:利用MSP430制作函数发生器

我是一个菜鸟,目前有任务利用MSP430F1611制作一个函数发生器,信号最后经DAC12输出,函数波形方波,正弦波,三角波等,频率要求不高200Hz以下,请问各位高手应如何入手,有什么思路,小弟在此谢谢了。…

查看全部问答>

STM32 USART的用法求教

在很多的情况下,用到USART发送或者接受数据,有没有好点的例程,我自己写的,主体部分如下,BYTE WriteData(BYTE *acmd, BYTE length){       for(char i=0; i<length; i++)      { &nb ...…

查看全部问答>

VB单片机实训,求解

你好啊,我现在有个任务是做VB单片机实训,但是不知道怎么做。该任务是用VB做游戏,用单片机做游戏柄,求大神解答。网上的弹球游戏我看过了,我不想要,求其他的游戏!谢谢…

查看全部问答>