找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6324|回复: 13
打印 上一主题 下一主题
收起左侧

89c52单片机+HT1621 LCD驱动程序为懒人提供下载直接用

  [复制链接]
跳转到指定楼层
楼主
ID:264021 发表于 2017-12-19 23:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机源程序如下:
  1. #ifndef  _HT1621B_H_
  2. #define  _HT1621B_H_
  3. #include <reg52.h>
  4. #include <intrins.h>           //为了使用NOP
  5. #define NOP _nop_()
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. #define ComMode 0x52  //4COM,1/3bias 1000 010 1001 0
  9. #define RCosc 0x30    //内部RC振荡器(上电默认)1000 0011 0000
  10. #define LCD_on 0x06   //打开LCD显示 偏压发生器1000 0000 0 11 0
  11. #define LCD_off 0x04  //关闭LCD显示(上电默认)
  12. #define Sys_en 0x02   //系统振荡器开 1000 0000 0010
  13. #define Ctrl_cmd 0x80 //写控制命令 1000
  14. #define Data_cmd 0xa0 //写数据命令 1010

  15. //定义HT1621端口
  16. #define SEG_NUM 12          //段码数字个数,即Seg数量/2

  17. sbit CS1=P2^7;
  18. sbit WR1=P2^6;
  19. sbit DATA1=P2^5;
  20. //                 //  0    1    2    3    4    5    6    7    8    9     灭
  21. uchar code   tab[11]={0xF0,0x60,0xD0,0xF0,0x60,0xB0,0xB0,0xE0,0xF0,0xF0,0x00};
  22. uchar code tab1[11] ={0xA0,0x00,0x60,0x40,0xC0,0xC0,0xE0,0x00,0xE0,0xC0,0x00};
  23. /**-------------------------------------------------------------------------
  24. Name: SendBit_1621(送数据程序)
  25. ---------------------------------------------------------------------------*/
  26. void SendBit_1621(uchar sdata,uchar cnt) //sdata 的高cnt 位写入HT1621,高位在前
  27. {
  28.         uchar i;
  29.         for(i=0;i<cnt;i++)
  30.         {
  31.                 WR1=0;         
  32.                 if(sdata&0x80) DATA1=1;
  33.                 else DATA1=0;
  34.                 WR1=1;
  35.                 sdata<<=1;
  36.         }
  37. }

  38. /**-------------------------------------------------------------------------
  39. Name: SendCmd(送命令)
  40. ---------------------------------------------------------------------------*/
  41. void SendCmd_1621(uchar command)
  42. {
  43.         CS1=0;
  44.         SendBit_1621(0x80,4);    //写入标志码“100”和9 位command 命令,由于
  45.         SendBit_1621(command,8); //没有使有到更改时钟输出等命令,为了编程方便
  46.         CS1=1;                   //直接将command 的最高位写“0”
  47. }

  48. /**-------------------------------------------------------------------------
  49. Name: Write_1621(送数据和命令程序)
  50. ---------------------------------------------------------------------------*/
  51. void Write_1621(uchar addr,uchar sdata,uchar len)
  52. {
  53.         addr<<=2;
  54.         CS1=0;
  55.         SendBit_1621(0xa0,3);  //写入标志码“101”
  56.         SendBit_1621(addr,6);  //写入addr 的高6位
  57.         SendBit_1621(sdata,len); //写入data 的高len位
  58.         CS1=1;
  59. }

  60. /**-------------------------------------------------------------------------
  61. Name: all_off(清除1621显示)
  62. ---------------------------------------------------------------------------*/
  63. void HT1621_all_off(void)
  64. {
  65.         uchar i;
  66.         uchar addr=0;
  67.         for(i=0;i<SEG_NUM;i++)
  68.         {
  69.                 Write_1621(addr,0x00,8);
  70.                 addr+=2;
  71.         }
  72. }

  73. /**-------------------------------------------------------------------------
  74. Name: all_on(点亮1621全部Seg)
  75. -------------------------------------------------------------------------*/
  76. void HT1621_all_on(void)
  77. {
  78.         uchar i;
  79.         uchar addr=0;
  80.         for(i=0;i<SEG_NUM;i++)
  81.         {
  82.                 Write_1621(addr,0xff,8);
  83.                 addr+=2;
  84.         }
  85. }

  86. /**-------------------------------------------------------------------------
  87. Name: Init_1621(初始化1621)
  88. -------------------------------------------------------------------------*/
  89. void Init_1621(void)
  90. {
  91.         SendCmd_1621(Sys_en);
  92.         SendCmd_1621(RCosc);
  93.         SendCmd_1621(ComMode);
  94.         SendCmd_1621(LCD_on);
  95. }
  96. /**-------------------------------------------------------------------------
  97. Name: LCDoff(初始化1621)
  98. -------------------------------------------------------------------------*/
  99. void LCDoff(void)
  100. {
  101.         SendCmd_1621(LCD_off);
  102. }
  103. /**-------------------------------------------------------------------------
  104. Name: LCDon(初始化1621)
  105. -------------------------------------------------------------------------*/
  106. void LCDon(void)
  107. {
  108.         SendCmd_1621(LCD_on);
  109. }


  110. void DelayMs(uint n)
  111. {
  112.     uchar a,b;
  113.         uint i;
  114.         for(i=n;i>0;i--)
  115.             for(b=80;b>0;b--)
  116.                 for(a=10;a>0;a--)NOP;
  117. }
  118. #endif
  119. //void main(void)
  120. //{
  121. //        uchar i;
  122. //        Init_1621();       //初始化HT1621
  123. //        HT1621_all_off();  //清空LCD显示
  124. //        HT1621_all_on();   //点亮所有Seg
  125. //         DelayMs(500);
  126. //HT1621_all_off();
  127. //      while(1)
  128. //   {       
  129. //                         DelayMs(500);
  130. //  i++;
  131. //if(10==i)    //??8??????
  132. //i=0;
  133. //                 

  134. //Write_1621(10, tab[i],4);  //第1个数字显示"1"
  135. //        Write_1621(11,tab1[i],4);
  136. //   
  137. ……………………

  138. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
HT1621液晶测试程序.rar (21.72 KB, 下载次数: 261)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏12 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:165343 发表于 2018-2-13 13:55 | 只看该作者
正好需要,下载看看,谢谢
回复

使用道具 举报

板凳
ID:323951 发表于 2018-5-29 17:39 | 只看该作者
非常感谢
回复

使用道具 举报

地板
ID:336540 发表于 2018-7-30 14:15 | 只看该作者
IC资料,可完美兼容HT1621B 全部封装 SSOP48 DIP28 LQFP44 LQFP48
详见http://www.51hei.com/bbs/dpj-125017-1.html

评分

参与人数 1黑币 +35 收起 理由
Trump1438 + 35 很给力!

查看全部评分

回复

使用道具 举报

5#
ID:277978 发表于 2018-9-10 14:33 | 只看该作者
可以学习学习了
回复

使用道具 举报

6#
ID:388870 发表于 2018-9-17 10:09 | 只看该作者
谢谢分享
回复

使用道具 举报

7#
ID:429142 发表于 2018-11-19 13:06 | 只看该作者
学习学习学习学习
回复

使用道具 举报

8#
ID:537743 发表于 2019-5-27 14:34 | 只看该作者
多谢分享,下来学习!
回复

使用道具 举报

9#
ID:80750 发表于 2019-10-24 19:35 | 只看该作者
这个程序真的管用,感谢感谢
回复

使用道具 举报

10#
ID:216341 发表于 2020-2-24 17:53 | 只看该作者
从LED数码管到LCD液晶,还是有很多概念上的不理解。参考下楼主的程序看!谢谢!
回复

使用道具 举报

11#
ID:691499 发表于 2020-2-25 23:04 | 只看该作者
下载看看,谢谢
回复

使用道具 举报

12#
ID:726610 发表于 2020-4-10 22:01 | 只看该作者
过来学习一下。
回复

使用道具 举报

13#
ID:599609 发表于 2020-4-30 13:10 | 只看该作者
正好需要,下载看看,谢谢
回复

使用道具 举报

14#
ID:209219 发表于 2020-8-13 17:30 | 只看该作者
感谢分享,测试可以使用~
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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