MCU是STM8S207

/*LED 字模结构*/
typedef struct
{char mChar;u8 mModal;
}LED_MODAL_DEFINE;typedef struct
{u8 Addr;u8 Ddat;
} LED_ICON_DEFINE;
#define ht1621_BIAS     0x52
#define ht1621_SYSEN    0x02
#define ht1621_LCDOFF   0x04
#define ht1621_LCDON    0x06
#define ht1621_RC256    0X30
#define ht1621_SYSDIS   0X00
#define ht1621_WDTDIS   0X0A
#define ht1621_BLON     0x12
#define ht1621_BLOFF    0x10#undef  LED_WIDTH
#define LED_WIDTH   6#define PIN_HT1621_CS       ht_cs
#define PIN_HT1621_WR       ht_wr
#define PIN_HT1621_DAT  ht_data#define HT1621_SET_CS(value)    GPIOEX_BitWrite(PIN_HT1621_CS,value)
#define HT1621_SET_WR(value)    GPIOEX_BitWrite(PIN_HT1621_WR,value)
#define HT1621_SET_DAT(value) GPIOEX_BitWrite(PIN_HT1621_DAT,value)/*常用的LED字模定义,需要扩充的自己增加数组*/
const LED_MODAL_DEFINE LED_MODAL[]={{' ',0x00}  ,{'0',0xf5}  ,{'1',0x05}  ,{'2',0xb6}  ,{'3',0x97}  ,{'4',0x47}  ,{'5',0xd3}  ,{'6',0xf3}  ,{'7',0x85}  ,{'8',0xf7}  ,{'9',0xd7}  ,{'A',0xe7}  ,{'b',0x73}  ,{'C',0xf0}  ,{'E',0xf2}  ,{'F',0xe2}  ,{'H',0x67}  ,{'L',0x70}  ,{'n',0xe5}  ,{'U',0x75}  ,{'O',0xf5}  ,{'-',0x02}  ,{'I',0x60}  ,{'q',0xc7}  ,{'d',0x37}  ,{'S',0Xd3}  ,{'y',0x57}  ,{'t',0x72}  ,{'r',0x22}  ,{'j',0x15}  ,{'P',0xe6}  ,
};const LED_ICON_DEFINE ICON_DEFINE[] =
{{0,0x0},{0,0x8},{2,0x8},{4,0x8},{6,0x8},{8,0x8},{14,0x8},{10,0x40},{10,0x20},{10,0x4},{10,0x2},{12,0x40},{12,0x2},{12,0x4},{10,0x80},{10,0x8},{12,0x20},{12,0x80},{12,0x8},
};static char led_content[LED_WIDTH*2+1];         //显示内容 考虑小数点的问题,内容长度为LED宽度×2
static u8 led_len;
u8 led_disp_mem[16];
u8 led_prev_disp_mem[16];
static _eCM led_prev_icon[2];
static char _l_prev_blink[6];
extern char _l_blink_state[6];/*取字符对应的字模参数:iValue 需要取模的字符 区分大小写*/
static u8 LED_GetModal(char iValue)
{u8 i;for (i=0;i<sizeof(LED_MODAL)/sizeof(LED_MODAL[0]);i++){if (iValue == LED_MODAL[i].mChar) {return LED_MODAL[i].mModal;}}return 0;
}/*将内容写入显示设备参数:bGlint  需要闪烁的部分是否显示*/
void LED_DisplayToDevice()
{u8 i = 0;u8 pos = 0;u8 value = 0;u8 mode[LED_WIDTH];u8 dispMemAddr[] = {0,2,4,6,8,14};memset(mode,0,sizeof(mode));for (i=0;i<led_len;) {//取字模value=LED_GetModal(led_content[i++]);//小数点和前面的字符结合成一个字符if (led_content[i]=='.') {i++;}
//      if (_l_blink_state[i] == 0)//      value = LED_GetModal(' ');
 mode[pos++]=value;if (pos>LED_WIDTH-1)break;}//
    for (i=0; i<pos; i++){if (_l_blink_state[i] == 0)led_disp_mem[dispMemAddr[i]] = 0;elseled_disp_mem[dispMemAddr[i]] = mode[i];}//
}
void WrCmd(u8 Cmd)
{u8 data, i, CmdByte = 0x80;HT1621_SET_CS(0);for (i=0; i<4; i++){if (CmdByte&0x80)HT1621_SET_DAT(1);elseHT1621_SET_DAT(0);HT1621_SET_WR(0);DelayUS(4);HT1621_SET_WR(1);CmdByte <<= 1;}for (i=0; i<8; i++){if (Cmd&0x80)HT1621_SET_DAT(1);elseHT1621_SET_DAT(0);HT1621_SET_WR(0);DelayUS(4);HT1621_SET_WR(1);DelayUS(4);Cmd <<= 1;}HT1621_SET_CS(1);
}void WrAddData(u8 Add, u8 Ddat)
{u8 i, CmdByte = 0xA0;//
    led_disp_mem[Add] |= Ddat;//
 HT1621_SET_CS(0);for (i=0; i<3; i++){if (CmdByte&0x80)HT1621_SET_DAT(1);elseHT1621_SET_DAT(0);HT1621_SET_WR(0);DelayUS(4);HT1621_SET_WR(1);CmdByte <<= 1;        }Add <<= 2;for (i=0; i<6; i++){if (Add&0x80)HT1621_SET_DAT(1);elseHT1621_SET_DAT(0);HT1621_SET_WR(0);DelayUS(4);HT1621_SET_WR(1);Add <<= 1;}for (i=0; i<8; i++){if (Ddat&0x80)HT1621_SET_DAT(1);elseHT1621_SET_DAT(0);HT1621_SET_WR(0);DelayUS(4);HT1621_SET_WR(1);Ddat <<= 1;}HT1621_SET_CS(1);
}void HT1621Cls(void)
{u8 i;for (i=0; i<16; i+=2){WrAddData(i, 0x00);}memset(led_disp_mem, 0, sizeof (led_disp_mem));
}void HT1621AllOn(void)
{u8 i;for (i=0; i<16; i+=2){WrAddData(i, 0xff);}
}void HT1621_Init()
{_eCM cm[2] = {CM_bph,CM_gw};GPIOEX_InitIOPin(PIN_HT1621_CS, GPIO_MODE_OUT_PP_LOW_FAST);GPIOEX_InitIOPin(PIN_HT1621_WR, GPIO_MODE_OUT_PP_LOW_FAST);GPIOEX_InitIOPin(PIN_HT1621_DAT, GPIO_MODE_OUT_PP_LOW_FAST);GPIOEX_InitIOPin(PIN_RUNLED, GPIO_MODE_OUT_PP_LOW_FAST);GPIOEX_BitWrite(PIN_RUNLED,0);WrCmd(ht1621_BIAS);WrCmd(ht1621_RC256);WrCmd(ht1621_SYSEN);WrCmd(ht1621_LCDON);HT1621Cls();//
    HC164_Init();//
}void HT1621_ReInit()
{GPIOEX_InitIOPin(PIN_HT1621_CS, GPIO_MODE_OUT_PP_LOW_FAST);GPIOEX_InitIOPin(PIN_HT1621_WR, GPIO_MODE_OUT_PP_LOW_FAST);GPIOEX_InitIOPin(PIN_HT1621_DAT, GPIO_MODE_OUT_PP_LOW_FAST);WrCmd(ht1621_BIAS);WrCmd(ht1621_RC256);WrCmd(ht1621_SYSEN);WrCmd(ht1621_LCDON);
}void HT1621_BackLight(u8 nStat)
{if (nStat){WrCmd(ht1621_BLON);}else{WrCmd(ht1621_BLOFF);}
}

转载于:https://www.cnblogs.com/alanfeng/p/5112119.html

HT1621控制的段式液晶驱动程序相关推荐

  1. [STM8L]TAB段式LCD液晶驱动程序

    STM8L152XX系列带有片上段式LCD驱动程序,这为低成本应用和高密度系统设计提供了保证,利用片上LCD驱动模块,可以有效的控制系统整体功耗,简化系统结构,从整体来说可靠性得到提高. 此处不介绍L ...

  2. 单片机直接驱动段式液晶

    0X00 最近几天需要用到段式液晶,同事打样回来,惊奇发现驱动不了,放狗一顿搜,才发现硬件连接错误,同事直接把seg com直接连接到单片机IO上了,直接用IO来驱动段式液晶不是不可以,但是1/2偏压 ...

  3. 段码液晶屏笔段电压范围_一种笔段式液晶屏测试装置的制作方法

    本实用新型属于液晶屏测试技术领域,具体涉及一种笔段式液晶屏测试装置. 背景技术: 笔段式液晶屏,用以区别于点阵型液晶屏,是液晶产品中的一种,其又称为段码液晶.图案型液晶屏或单色液晶屏等.笔段式液晶屏叫 ...

  4. 段式液晶程序设计技巧

    段式液晶程序设计技巧 一.段式液晶的基本参数 1.Duty:占空比 该项参数一般也称为Duty数或者com数,段式液晶一般采用时分动态扫描的驱动模式,此模式下,每个com的有效选通时间与整个扫描周期的 ...

  5. TM1722驱动笔段式液晶策略的一些理解

    最近在使用一款杭州航龙电子科技有限公司的一款笔段式液晶屏,使用TM1722来驱动液晶,对于液晶的驱动有些个人的理解.网上关于这款芯片的资料好像有些少,故将我理解的TM1722驱动液晶屏的策略与大家分享 ...

  6. FRDM-KL43开发板驱动段式液晶SLCD的实现方法

    LCD的驱动不像LED那样,加上电压(LED实际上是电流驱动)就可以长期显示的. LCD驱动必须使用交流电压驱动才能保持稳定的显示,如果在LCD上加上稳定的直流电压, 不但不能正常显示,时间久了还会损 ...

  7. HT1621段式液晶驱动(二)

    上篇讲解了HT1621驱动芯片的功能及操作命令等相关资料,这篇注意讲解代码程序. /********************************************************** ...

  8. HT1621段式液晶驱动(一)

    本实例程序为实际项目亲测程序,主要记录备份,仅供学习交流使用! HT1621 是128点.内存映象和多功能的LCD驱动器, HT1621的软件配置特性使它适用于多种LCD应用场合,包括LCD模块和显示 ...

  9. HT1621 控制LCD屏幕显示数字,连续显示数字

    今天刚刚写的一个程序,使用HT1621驱动LCD显示,通过控制WR端口到低电平,使得LCD模块得到要显示什么的数据,为何只显示了第一次的数据,让他接着清屏或者数字全部显示,或者显示下一个数据时他就不会 ...

最新文章

  1. yii权限rbac验证三张表字段说明
  2. web前端技巧-ES6新特性与重点知识汇总(二)
  3. (2) freemarker入门案例2
  4. 高亮显示 html_友达10.1寸超低温高亮工业液晶屏G101STN01.C
  5. 矩阵特征值的用matlab,[急求]谁可以用matlab帮我运行求矩阵特征值的命令???...
  6. win7备份工具_u盘系统重装win7旗舰版详细图解教程
  7. Codeforces 439E Devu and Birthday Celebration 容斥
  8. java基础总结01-简介
  9. 计算机一级考word几,计算机一级word考试主要内容
  10. centos6.5安装自动化工具ansible和图形化工具tower
  11. Netflix混沌工程手册Part 1:混沌工程简介
  12. iOS设置启动页并适配机型
  13. 2017百度秋招真题笔试之十字架
  14. 003-位运算异或“∧”使特定bit位翻转
  15. 大数据基础之Hive(四)—— 常用函数和压缩存储
  16. 数字化时代,企业应该如何看待商业智能BI
  17. python100个常用术语_Python 常用术语
  18. 每日一练蓝桥杯C语言:暴力枚举
  19. 12星座的出生年月日性格_十二个星座的出生年月日
  20. JAVA基础09——java输入

热门文章

  1. 共享主机安全吗(以及如何保护它)?
  2. ubuntu 上 初次启动mysql 默认密码
  3. Expert C Programming 阅读笔记(~CH1)
  4. php开启swoole,swoole如何开启
  5. One-Blue宣布Memory-Tech加入蓝光光盘和超高清蓝光产品授权计划
  6. mysql 参数sql_safe_updates限制update/delete
  7. 运筹学 黄金分割法 JAVA实现
  8. 【社区团购】打破传统消费模式,小程序源码+页面DIY+限时抢购+优惠券
  9. dataframe的loc与iloc
  10. 计算机等级考试网络,全国计算机等级考试三级笔记三(网络的基本概念)