89c52单片机+HT1621 LCD驱动程序

发布者:MysticGarden最新更新时间:2020-02-25 来源: 51hei关键字:89c52  单片机  HT1621  LCD驱动 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序如下:

#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); 

//   

……………………


关键字:89c52  单片机  HT1621  LCD驱动 引用地址:89c52单片机+HT1621 LCD驱动程序

上一篇:STC89C52RC单片机设计的FM收音机+自动搜台+存储电台
下一篇:51单片机控制八个DS18B20温度传感器显示

推荐阅读最新更新时间:2024-11-17 10:56

51单片机基础之DS18B20温度传感器
外型: 代码: main.c 文件 #include smg.h #include ds18b20.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { u8 i=0; int t
[单片机]
51<font color='red'>单片机</font>基础之DS18B20温度传感器
Microchip推出搭载硬件安全模块的PIC32CK 32位单片机, 轻松实现嵌入式安全功能
这款全新的中端MCU系列为设计人员提供了更高水平的安全性和灵活性 自2024年生效的新法律法规对从消费物联网设备到关键基础设施的网络安全提出了更严格的要求。从产品和供应链的角度来看,满足这些新的安全合规要求可能非常复杂、昂贵且耗时。为了向开发人员提供嵌入式安全解决方案,使他们能够设计出符合法规要求的应用,Microchip Technology(微芯科技公司)今日宣布推出新型PIC32CK 32位单片机(MCU)系列。 该系列集成了硬件安全模块(HSM)子系统和采用TrustZone®技术的Arm®Cortex®-M33内核,可帮助隔离并确保设备安全。 PIC32CK SG是市场上首款将HSM的强大安全性与基于硬件的安全
[单片机]
Microchip推出搭载硬件安全模块的PIC32CK 32位<font color='red'>单片机</font>,  轻松实现嵌入式安全功能
瑞萨电子推出体积更为紧凑小巧的全新16 位微控制器
半导体及解决方案供应商瑞萨电子株式会社(TSE:6723),今天宣布发布全新的 RL78/F13 和 RL78/F14 16 位微控制器(MCU),这两款微控制器可提高汽车控制系统的开发效率、降低系统成本、减少系统能耗并增强功能安全特性。 全新推出的 MCU共包含 91 款产品,其中 60 款属于 RL78/F13 产品群,31 款属于 RL78/F14 产品群。RL78/F13 MCU 适用于多种多样的车载用途,其中包括电动车窗和后视镜控制等车身控制系统,以及电动水泵和冷却风扇等汽车电机控制系统。RL78/F14 MCU 也可支持多种车身控制系统应用,例如 BCM (车身控制模块)以及 HVAC(加热、通风和空调)控制等
[单片机]
STM32单片机/I2C通信(上篇)
本文使用STM32FI03RCT6型号的单片机, 基于正点原子的函数库进行总结讲解 复制 想来单片机这块儿除了USART串口通信外,常见的便是I2C通信了,因为I2C通信 硬件连接简单,可扩展性强,但是这种硬件连线的简洁,是以协议的复杂来弥补的。I2C通信是一种半双工通信,也就是可以双向传输数据但不能同时进行。 STM32单片机是可以进行硬件I2C通信或者软件模拟进行I2C通信的,硬件I2C通信只需要对I2C引脚以及通信模式这两个结构体进行初始化即可,但I2C硬件通信由于硬件原因并不稳定(原子哥说的),不过在STM32F4系列有所改善,但我都没试过(寒假在家手头硬件条件不足)。 下面我们基于软件I2C模拟进行说明。 I2C通信
[单片机]
STM32<font color='red'>单片机</font>/I2C通信(上篇)
单片机C语言程序设计:100 000s 以内的计时程序
/* 名称:100 000s 以内的计时程序 说明:在 6 只数码管上完成 0~99 999.9s。 */ #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int //段码 uchar code DSY_CODE ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //6 只数码管上显示的数字 uchar Digits_of_6DSY ={0,0,0,0,0,0}; uchar Count; sbit Dot=P0^7; //
[单片机]
<font color='red'>单片机</font>C语言程序设计:100 000s 以内的计时程序
基于单片机MSP430F147的自动寻边器下位机设计
摘要:为了适应环境的变化,运用单片机MSP430F147设计一个自动寻边器,给出了寻边器的下位机电路设计方案,经过多次训练后得出交界区的最优参考电压,与寻边器采集的电压信号相比较,判断得出是否已经到达交界处,此寻边器在机电行业不同环境下可完成现场工件检测。 寻边器是机电行业现场检测工件常用的光学计量仪器。长期以来,为保证光学投影仪或工业数控机床检测中的成像质量、测量准确度等技术指标,国内外传统自动寻边器生产厂家推出的投影仪其成像都是反像。为迎合部分顾客的特殊需求,各厂家相继推出其成像为正像的投影仪。该技术常利用寻边器装在主轴上,对孔壁、矩形工件外形进行寻点坐标后,将其坐标值记录下来,经手工计算,再输入到零点偏置。 在实际加
[单片机]
基于<font color='red'>单片机</font>MSP430F147的自动寻边器下位机设计
(5)单片机动态数码管
#include reg52.h typedef unsigned char u8; typedef unsigned int u16; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; unsigned char smgduan ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(u16 i) { while(i--); } void digdisplay() { u8 i; for (i=0;i 8;i++) { switc
[单片机]
关于使用GD32 MCU实现位带操作的指南
MCS-51单片机可以简单的将P1口的第2位独立操作,如P1.2=0;P1.2=1,就是这样把P1口的第三个脚(BIT2)置0置1。对于32位ARM MCU 我们可以像51单片机一样单独的对某个端口的某一个IO单独操作吗?答案是可以的。并且这样就引入了“位带操作”的概念。简而言之,为了能够实现单独的位控制,所以就有了位带这样的操作机制。 ARM Cortex-M3处理器采用哈佛结构,可以使用相互独立的总线来读取指令和加载/存储数据。指令代码和数据都位于相同的存储器地址空间,但在不同的地址范围。程序存储器,数据存储器,寄存器和I/O端口都在同一个线性的4 GB的地址空间之内。这是Cortex-M3的最大地址范围,因为它的地址总线
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved