历史上的今天
今天是:2024年11月26日(星期二)
2020年11月26日 | HT1621显示屏驱动芯片单片机源程序
2020-11-26 来源:51hei
HT1621是128 点内存映象和多功能的LCD 驱动器 , HT1621 的软件配置特性使它适用于多种 LCD 应用场合,包括 LCD 模块和显示子系统。用于连接主控制器和HT1621 的管脚只有 4 或 5 条, HT1621 还有一个节电命令用于降低系统功耗。在虎风所做的这个系统中 ht1621 用于驱动一个静态的 LCD 液晶显示器。液晶显示的方式分为静态显示和动态显示 。 静态与动态的区别在于静态显示是持续供电的 , 而动态显示是利用人的视觉停留效果 , 快速扫描数码管各个段 , 让人在视觉上感觉到数码管是同时显示的。

各位大牛下午好,我用STC12C5204单片机控制1621驱动液晶
程序调了几天都没进展,显示的不知道什么乱七八糟的东西,好像命令根本写不进去,COM0和com1是个1v不到的电平,com3为3点几V的电平,com4有时有波形刷我自己写的程序就是这个样子,SEGMENT一部分有波形,其余就是一个电平
打电话咨询合泰技术,让我搞他们的范例,于是我修改了下,还是老样子大家帮我看看是什么问题,谢谢了下面的就是从合泰网上下的范例,我稍微修改了下,基本是原封不动的
单片机源程序如下:
各位大牛下午好,我用STC12C5204单片机控制1621驱动液晶
程序调了几天都没进展,显示的不知道什么乱七八糟的东西,好像命令根本写不进去,COM0和com1是个1v不到的电平,com3为3点几V的电平,com4有时有波形
刷我自己写的程序就是这个样子,SEGMENT一部分有波形,其余就是一个电平
打电话咨询合泰技术,让我搞他们的范例,于是我修改了下,还是老样子
大家帮我看看是什么问题,谢谢了
下面的就是从合泰网上下的范例,我稍微修改了下,基本是原封不动的
//STC12C5204AD单片机控制HT1621B驱动LCD
#include #include #include #define BIAS 0X52 //1/3偏压,4背极 #define RC256K 0X30 //系统时钟选择为片内RC振荡器 #define WDTDIS1 0X0A //禁止WDT溢出标志输出 #define TIMERDIS 0X08 //时基输出禁止 #define SYSEN 0X02 //打开系统时钟 #define SYSDIS 0X00 //关闭系统时钟和偏压发生器 #define LCDON 0X06 //打开LCD偏压发生器 #define LCDOFF 0X04 //关闭LCD偏压发生器 #define TONEON 0X12 //打开音频输出 #define TONEOFF 0X10 //关闭音频输出 #define CS P3_2 #define WR P3_4 #define DATA P3_5 #define uchar unsigned char #define uint unsigned int /***************************延时子函数******************************/ void delay(uchar i) //j=12延时约4.3us { while(i--) { uchar j=0; while(j<8) j++; } } void SendBit_1621(uchar dat ,uchar cnt) { uchar i; for(i =0; i if((dat&0x80)==0) DATA=0; else DATA=1; WR=0; delay(2); WR=1; dat=dat<<1; } } void SendDataBit_1621(uchar dat,uchar cnt) { uchar i; for(i =0; i if((dat&0x01)==0) DATA=0; else DATA=1; WR=0; delay(2); WR=1; dat=dat>>1; } } void SendCmd(uchar command) { CS=0; _nop_(); _nop_(); SendBit_1621(0x80,4); SendBit_1621(command,8); CS=1; } void Write_1621(uchar addr,uchar dat) { CS=0; _nop_(); _nop_(); SendBit_1621(0xa0,3); SendBit_1621(addr,6); SendDataBit_1621(dat,4); CS=1; } void WriteAll_1621(uchar addr,uchar *p,uchar cnt) { uchar i; CS=0; _nop_(); _nop_(); SendBit_1621(0xa0,3); SendBit_1621(addr,6); for(i =0; i SendDataBit_1621(*p,8); } CS=1; } /*******************************主函数******************************/ main() { uchar a[10]; a[0]=0xFF;a[1]=0xFF;a[2]=0xFF;a[3]=0xFF;a[4]=0xFF; a[5]=0xFF;a[6]=0xFF;a[7]=0xFF;a[8]=0xFF;a[9]=0xFF; a[10]=0xFF;a[11]=0xFF;a[12]=0xFF;a[13]=0xFF;a[14]=0xFF; a[15]=0xFF; SendCmd(BIAS); SendCmd(SYSEN); SendCmd(LCDON); // SendCmd(RC256K); WriteAll_1621(0,a,16); // SendCmd(LCDOFF); } LCD驱动程序 适用于HT1621 //============================================================================= #define Lcd_Delay _nop_();_nop_();_nop_();_nop_();_nop_();_nop_() void Lcd_Data(uchar Start,uchar cData) //将数据当中的字节与LCD上的进行同步 // Start --要开始同页面地址,每个页面为4个有效位,总其为32X4字节 // Length --要同步的页面数量 { uchar i; LCD_CS=0; Lcd_Delay; Lcd_Delay; Lcd_Delay; //Send ID 101B LCD_CLK=0; Lcd_Delay; LCD_IO=1; Lcd_Delay; LCD_CLK=1; Lcd_Delay; LCD_CLK=0; Lcd_Delay; LCD_IO=0; Lcd_Delay; LCD_CLK=1; Lcd_Delay; LCD_CLK=0; Lcd_Delay; LCD_IO=1; Lcd_Delay; LCD_CLK=1; Lcd_Delay; //Send Address 6bit Start=Start*2; for(i=0;i<6;i++) { if(Start&0x20) LCD_IO=1; else LCD_IO=0; Lcd_Delay; LCD_CLK=0; Lcd_Delay; Start=Start<<1; LCD_CLK=1; Lcd_Delay; } //Send data 8bit for(i=0;i<8;i++) { if(cData&0x01) LCD_IO=1; else LCD_IO=0; Lcd_Delay; LCD_CLK=0; Lcd_Delay; cData=cData>>1; LCD_CLK=1; Lcd_Delay; } LCD_CS=1; Lcd_Delay; } //============================================================================= void Lcd_Command(uchar Command) //向指定的LCD当中写入一个命令 //每个命令应以100三个位为起始,命令长度为9位,实际有效位为8位,因此在最后补一个0 // LcdSelect--LCD的片选确定,取值为0,1,2 // Command----要写入的8位命令 { uchar i; LCD_CS=0; Lcd_Delay; Lcd_Delay; Lcd_Delay; //Send ID 100B LCD_CLK=0; Lcd_Delay; LCD_IO=1; Lcd_Delay; LCD_CLK=1; Lcd_Delay; LCD_CLK=0; Lcd_Delay; LCD_IO=0; Lcd_Delay; LCD_CLK=1; Lcd_Delay; LCD_CLK=0; Lcd_Delay; LCD_IO=0; Lcd_Delay; LCD_CLK=1; Lcd_Delay; for(i=0;i<8;i++) { LCD_CLK=0; Lcd_Delay; if(Command&0x80) LCD_IO=1; else LCD_IO=0; Command=Command<<1; Lcd_Delay; LCD_CLK=1; Lcd_Delay; } ///最后补一个0 LCD_CLK=0; Lcd_Delay; LCD_IO=0; Lcd_Delay; LCD_CLK=1; Lcd_Delay; LCD_CS=1; Lcd_Delay; } //============================================================================= void Lcd_Refresh(void) //重新对LCD进行刷屏 { uchar i; for(i=0;i ……………………
史海拾趣
|
pads的原理图文件和pcb文件是不是 .SCH和.PCB后缀的? 本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata 问下用过pads的朋友 pads的原理图文件和pcb文件是不是 .SCH和.PCB后缀的?… 查看全部问答> |
|
想买本VxWorks嵌入式开发的书,希望大家推荐一本。内容是VxWorks下的图形界面系统开发,如VxWorks+QT。感觉还是需要一本纸质的书啊!… 查看全部问答> |
|
如何在wince image中创建层次结构文件夹?并把文件拷贝到每个文件夹中? 如何在wince image中创建层次结构文件夹?并把文件拷贝到每个文件夹中?也就是说,在编译完后,nk.bin中就包含了这些东东。… 查看全部问答> |
|
版主,STM32UART多机通信,1主多从,从机最多可支持多少个啊? 版主,请问STM32 UART 多机通信,1主多从,从机最多可支持多少个啊? datasheet上 配置寄存器(USART_CR2)节点地址只有4位,也就是说最多只能有15个从机吗? 可不可以1个主机带100多个从机啊?… 查看全部问答> |
|
/********学习型遥控器程序*********/#include<reg52.h>#include<intrins.h> //延时函数#include<rradwrite.h>#define uchar unsigned char#define uint unsigned intsbit remoteout=P3^5;sbit turkey=P3^1;sbit IR=P3^2;& ...… 查看全部问答> |
|
这个很简单,但我用中断,用一个旗标指示,当旗标为一时,蜂鸣器发音。 难点在中断,我以前就这个问题曾问过网友。现在我自己总结一下: 主要有两点,一个是在GPIO那里设对如图所示: 我设的是GPIOA第2脚中断。上升沿。 最重要的是把中断打 ...… 查看全部问答> |
|
炼狱传奇-二进制到BCD之战经过前面的学习,相信大家已经掌握了软件的基本操作和设计的基本流程,接下来我们尝试从顶层至底层来设计一个BCD转换器。 在本次设计中,我们使用逐步移位法来实现BCD的转换,在设计FPGA之前,我们先来了解一下BCD转换-逐 ...… 查看全部问答> |




