硬件连接:单片机使用stm8s103k的32脚芯片,来驱动HT1621B显示LCD。

(1)单片机与HT1621之间只需连接3根线:CS,WR,DATA。

(2)HT1621的VC和vlcd都直接连接的5V电源。

(3)ht1621与LCD之间需要把com0~com3,seg0-seg15都对应连接起来。

软件部分:

#include "stm8s.h"
    #include "STM8S103k.h"

#define BIAS   0x52            //0b1000 0101 0010  1/3duty 4com
    #define SYSDIS 0X00           //0b1000 0000 0000  关振系统荡器和LCD偏压发生器
    #define SYSEN  0X02           //0b1000 0000 0010 打开系统 振荡器
    #define LCDOFF 0X04           //0b1000 0000 0100  关LCD偏压
    #define LCDON  0X06           //0b1000 0000 0110  打开LCD偏 压
    #define XTAL   0x28           //0b1000 0010 1000 外部接时钟
    #define RC256  0X30           //0b1000 0011 0000  内部时钟RC256K
    #define TONEON  0X12           //0b1000 0001 0010  打开声音 输出
    #define TONEOFF 0X10           //0b1000 0001 0000 关闭声音输出
    #define WDTDIS  0X0A        //0b1000 0000 1010  禁止看门狗
    #define TONE_4K 0x80        //4k声音输出频率
    #define TONE_2K 0xC0

//HT1621控制位(液晶模块接口定义,根据自已的需要更改)
    _Bool PB_ODR_ODR7 @PB_ODR:7;//CS
    _Bool PB_ODR_ODR5 @PB_ODR:5;//WR
    _Bool PB_ODR_ODR6 @PB_ODR:6;//DATA
    #define CLS_HT_WR     PB_ODR_ODR5 = 0   //拉低
    #define SET_HT_WR     PB_ODR_ODR5 = 1   //拉高
    #define CLS_HT_CS     PB_ODR_ODR7 = 0   //拉低
    #define SET_HT_CS     PB_ODR_ODR7 = 1   //拉高
    #define SET_HT_DAT    PB_ODR_ODR6 = 1      //数据位
    #define CLS_HT_DAT    PB_ODR_ODR6 = 0      //数据位

//-----------------------------------------------------------------------------------------
    //函数名称:Delay()
    //功 能:延时子程序
    //-----------------------------------------------------------------------------------------
    void Delay(uchar us) //5,7,9
    {
     while(--us);
    }
    //-----------------------------------------------------------------------------------------
    //函数名称:DelayMS()
    //功 能:延时子程序
    //-----------------------------------------------------------------------------------------
    void DelayMS(uint iMs)
    {
     uint i,j;
     for(i=0;i
     for(j=0;j<65;j++)
     {
      Delay(1);
     }
    }

void port_init(void)
    {

PB_DDR = 0xFF;//0x80;
     PB_CR1 = 0xFF;//0x80;
     PB_CR2 = 0x00;
    
     //PD_DDR = 0x1c;
     //PD_CR1 = 0x1c;
     //PD_CR2 = 0x0;
     PE_DDR= 0x20;//PE5---output
     PE_CR1= 0x20;
     PE_CR2=0x00;
    }

//-----------------------------------------------------------------------------------------
    //函数名称:Ht1621Wr_Data()
    //功 能:写数据函数,cnt为传送数据位数,数据传送为低位在前
    //-----------------------------------------------------------------------------------------
    void Ht1621Wr_Data(uchar Data,uchar cnt)
    {
     uchar i;
     for (i=0;i
     {
       CLS_HT_WR;

DelayMS(3);

if((Data & 0x80)==0x80)
      {
         SET_HT_DAT;

}
      else
      {
         CLS_HT_DAT;

}
      SET_HT_WR;  
      DelayMS(3);
      Data<<=1;
     }
    }
    //-----------------------------------------------------------------------------------------
    //函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)
    //功能描述: HT1621在指定地址写入数据函数
    //参数说明:Addr为写入初始地址,Data为写入数据
    //说 明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位
    //-----------------------------------------------------------------------------------------
    void Ht1621WrOneData(uchar Addr,uchar Data)
    {
     CLS_HT_CS; 
     DelayMS(1);
     Ht1621Wr_Data(0xa0,3); //写入数据标志101
     Ht1621Wr_Data(Addr<<2,6); //写入地址数据
     Ht1621Wr_Data(Data<<4,4); //写入数据
     SET_HT_CS;//

}
    //-----------------------------------------------------------------------------------------
    //函数名称:void Ht1621WrOneNum(uchar Addr,uchar Num)
    //功能描述: HT1621在指定地址写入一个数字(0-9)函数
    //参数说明:Addr为写入初始地址,Num为写入数据
    //说 明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位
    //-----------------------------------------------------------------------------------------

void Ht1621WrOneNum(uchar Addr,uchar num)
    {
     CLS_HT_CS;//HT1621_CS=0;
     Ht1621Wr_Data(0xa0,3); //写入数据标志101
     Ht1621Wr_Data(Addr<<2,6); //写入地址数据
     Ht1621Wr_Data(num,8);//写一个完整的数。就是连续写两个数。
     SET_HT_CS;//

}
    //-----------------------------------------------------------------------------------------
    //函数名称:void Ht1621WrAllData()
    //功能描述: HT1621连续写入方式函数
    //说 明:HT1621的数据位4位,此处每次数据为8位,写入数据总数按8位计算
    //-----------------------------------------------------------------------------------------
    void Ht1621WrAllData(void)
    {
     uchar i;
     CLS_HT_CS;//

Ht1621Wr_Data(0xa0,3); //写入数据标志101
     Ht1621Wr_Data(0x00<<2,6); //写入地址数据
     for (i=0;i<16;i++)
     {
      Ht1621Wr_Data(0x00,8);//0x00,8); //写入数据
     }
     SET_HT_CS;//

}
    //-----------------------------------------------------------------------------------------
    //函数名称:void Ht1621WrCmd(uchar Cmd)
    //功能描述: HT1621命令写入函数
    //参数说明:Cmd为写入命令数据
    //说 明:写入命令标识位100
    //-----------------------------------------------------------------------------------------
    void Ht1621WrCmd(uchar Cmd)
    {
     CLS_HT_CS;//HT1621_CS=0;
     DelayMS(1);
     Ht1621Wr_Data(0x80,4); //写入命令标志100
     Ht1621Wr_Data(Cmd,8); //写入命令数据
     SET_HT_CS;//HT1621_CS=1;
    }
    //-----------------------------------------------------------------------------------------
    //函数名称:void Ht1621_Init(void)
    //功能描述: HT1621初始化
    //说 明:初始化后,液晶屏所有字段均显示
    //-----------------------------------------------------------------------------------------
    void Ht1621_Init(void)
    {
     SET_HT_CS;//HT1621_CS=1;
     SET_HT_WR;//HT1621_WR=1;
     SET_HT_DAT;//HT1621_DAT=1;
     DelayMS(20); //延时使LCD工作电压稳定
     Ht1621WrCmd(BIAS);
     Ht1621WrCmd(RC256); //使用内部振荡器
     Ht1621WrCmd(SYSDIS);
     Ht1621WrCmd(WDTDIS);
     Ht1621WrCmd(SYSEN);
     Ht1621WrCmd(LCDON);
     DelayMS(20); //延时一段时间
     Ht1621WrAllData();
    }
    void main()
    {
      uchar i=0x1d;
      CLK_ICKR |= 0x01;       //打开内部高速RC
      //CLK_CKDIVR = 0x1B;  //fcpu=2M fmaster=2/8=0.25M
      //CLK_CKDIVR = 0x1a;  //fcpu=2M fmaster=2/4=0.5M//可以工作
      CLK_CKDIVR = 0x18;  //fcpu=2M fmaster=2/1=2M //可以工作
      port_init();
      Ht1621_Init(); //上电初始化LCD    
      while(1)
     {
    
      if(i%2)
      {
       Ht1621WrOneNum(1,0x06);//1
      Ht1621WrOneNum(3,0xe3);//2
      Ht1621WrOneNum(5,0xa7);//3
      Ht1621WrOneNum(7,0x36);//4
      Ht1621WrOneNum(9,0xb5);//5
     
      }
      else
      {
        Ht1621WrOneNum(1,0xf5);//6
       Ht1621WrOneNum(3,0x07);//7
       Ht1621WrOneNum(5,0xf7);//8
       Ht1621WrOneNum(7,0xb7);//9
       Ht1621WrOneNum(9,0xd7);//0
     
     
      }
      i=i-1;
      if(i==0x01)
      {
       i = 0x21;
      }
      //PE_ODR=PE_ODR^0x20;
     
      DelayMS(200);
     
     }
    }

注:程序部分参考了网上很多人的代码,在此表示感谢!

http://www.51hei.com/mcu/3253.html

HT1621B驱动液晶LCD连接及程序相关推荐

  1. ht1621b和单片机电平匹配_HT1621B驱动液晶LCD连接及程序

    (2014-03-04 12:11:47) 转 载 ▼ 标签: ht1621 ht1621b stm8s ht1621 驱动 lcd 程序 分类: 单片机 最近需要把 AD 转换的数据显示出来,因为手 ...

  2. 简单明了操作——ESP8266 NodeMCU驱动TFT LCD液晶屏(制作透明小电视前奏)

    简单明了操作--ESP8266 NodeMCU驱动TFT LCD液晶屏(制作透明小电视前奏) 前言 准备材料 esp8266 NodeMCU(串口WiFi模块) 1.44inch SPI Arduin ...

  3. 联盛德 HLK-W806 (九): 软件SPI和硬件SPI驱动ST7789V液晶LCD

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  4. 联盛德 HLK-W806 (十一): 软件SPI和硬件SPI驱动ST7567液晶LCD

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  5. LCD液晶屏连接方式有哪些呢及各自优缺点是什么?

    随着电子元器件行业的快速发展,LCD液晶屏也应用到了各行各业,比如汽车.小家电.消毒机.美容仪器.医疗设备等领域.很多业务员经常会碰到客户咨询关于LCD与IC常见连接方式有哪些及区别又如何呢,LCD液 ...

  6. c语言595驱动数码管,74hc595驱动4位数码管程序解析 - 74hc595驱动4位数码管电路连接图及程序解析...

    74hc595驱动4位数码管程序解析 //MCU:AT89S52 //晶振:11.0592M. //采用4位共阳极数码管 #include <regx51.h> //#include &l ...

  7. 电子屏幕的51c语言程序,单片机控制LCD液晶显示器(含程序)

    <单片机控制LCD液晶显示器(含程序)>由会员分享,可在线阅读,更多相关<单片机控制LCD液晶显示器(含程序)(16页珍藏版)>请在人人文库网上搜索. 1.液晶显示器一 实验目 ...

  8. 【从0到1搭建LoRa物联网】7、国产LoRa终端ASR6505驱动段式LCD例程

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  9. 终于编译好了qt的oracle驱动QOCI,连接成功!!!

    这么多天以来终于有件事可以小舒畅了一下了. 今天终于编译好了qt的oracle驱动QOCI,连接成功!!! Qt Commercial版只自带了SQLLite和ODBC的驱动,oracle的驱动要自己 ...

最新文章

  1. python软件下载免费还是收费-为什么python最强大的IDE是收费的PyCharm?
  2. wp comments post.php,通过修改wp-comments-post.php 防wordpress垃圾(spam)评论 | 沉默过客
  3. VTK:可视化之TextSource
  4. 一种在未来互联网中的面向用户的云操作系统体系
  5. 逃税被罚13.4亿的薇娅将于3月复出?
  6. Python递归函数的正确理解与使用
  7. 前端界面根据条件动态显示图片
  8. 原生js制作PC端轮播图
  9. 啊哈C语言4.9练习
  10. 背景建模算法比较与ViBe算法论文解读与python代码
  11. dedecms采集侠问题
  12. 巨建华担任BCF理事
  13. JS基础——多张图片循环切换
  14. 用户运营的核心是消费者心理分析
  15. 如何搭建KBQA系统 —— 初识KBQA(一)
  16. matlab 双边滤波(彩色图)
  17. Python-pptx Table
  18. LeaRun快速开发平台,快速开发.net/java项目
  19. 稳压二极管、肖特基二极管、静电保护二极管、TVS管
  20. 轮胎行业通过APS实现自动排产

热门文章

  1. Unity (一) 下载与安装
  2. 手把手教你设计一个CSDN系统
  3. 【自学Python】Windows安装Python
  4. 中科云谷正式落户上海临港 构筑工业互联网新图景
  5. 【office考试】Office办公软件考试试题题目
  6. memory balloon
  7. android 启动图片 大小,ios 和安卓常用图标、启动图 尺寸
  8. thinkphp6 使用PhpOffice导入Excel表格(上传文件)
  9. 假设检验(显著性检验)
  10. 单点登录CAS学习(一):初识单点登录