📄 pic74机ht1621驱动程序c .txt
字号:
/*******************************************************************
公司名称:
模块名称:1621.c
功 能:液晶驱动模块 芯片型号:HT1621B
说 明:
程序设计:FANZENGTING
设计时间:2001.06.02
版 本 号: 20010602
*******************************************************************/
#include <pic.h>
#include <pic1674.h>
#include <math.h>
#include <stdio.h>
#define WR RB4/*时钟线*/
#define DATA RB5/*数据线*/
#define CS RB6/*片选线*/
#define word_long 8/*TAB_DISPLAY[16]时为8;TAB_DISPLAY[32]时为4*/
unsigned char TAB_DISPLAY[16];
/*1621的显存是4位*32的,故用16*8位的寄存器
就能满足要求奇数显存放高4位,偶数放低4位*/
/*****************************************************************/
/*LCD系统命令(可选)*/
const char TAB_REST[10]={0b00000001,/*打开系统振荡器命令*/
0b00000011,/*打开LCD 偏压发生器命令*/
0b00000101,/*WDT 溢出标志输出失效命令*/
0b00000110,/*时基输出使能命令*/
0b00011000,/*系统时钟源片内RC振荡器命令*/
0b00101001,/*LCD1/3偏压选项4个公共口命令*/
0b01000000,/*声音频率4KHz命令*/
0b00001001,/*打开声音输出命令*/
0b10100000,/*时基/WDT 时钟输出1Hz命令*/
0b10001000};/*使/IRQ 输出有效命令*/
/********************************************************************
函 数 名:dlay( )
功 能:延时
说 明 (内部函数)
入口参数:无
返 回 值:无
设 计:FANZENGTING 日 期:2001-06-02
修 改: 日 期:
***********************************************************************/
void dlay( )
{
#asm
nop;
nop;
nop;
nop;
nop;
#endasm
}
/********************************************************************
函 数 名:display_start( )
功 能:LCD系统初始化
说 明 启动1621
入口参数:无
返 回 值:无
设 计:FANZENGTING 日 期:2001-06-02
修 改: 日 期:
***********************************************************************/
void display_start( )
{
unsigned char t;
CS=0;
send_data(0b10000000,3);/*送3位命令模式代码100*/
for(t=0;t<=9;t++)
{
send_data(TAB_REST[t],9);/*送9位命令代码*/
}
CS=1;
WR=1;
}
/********************************************************************
函 数 名:display( )
功 能:写显存
说 明 连续地址写模式
入口参数:无
返 回 值:无
设 计:FANZENGTING 日 期:2001-06-02
修 改: 日 期:
***********************************************************************/
void display( )
{
unsigned char t;
CS=0;
WR=0;
send_data(0b10100000,3);/*送3位WRITE 模式命令代码101*/
send_data(0,6);/*送6位首地址00h*/
for(t=0;t<=15;t++)
{
send_data(TAB_DISPLAY[t],word_long);/*送16*8显存数据*/
}
CS=1;
WR=1;
}
/********************************************************************
函 数 名:send_data(data_bus,loop)
功 能:数据传送
说 明 (内部函数)
入口参数:待传数,待传数的位数
返 回 值:无
设 计:FANZENGTING 日 期:2001-06-02
修 改: 日 期:
***********************************************************************/
int send_data(data_bus,loop)
unsigned char data_bus,loop;
{
for(;loop!=0;loop--)
{
dlay( );
WR=0;
if((data_bus&0b10000000)==0)
{
DATA=0;
}
else
{
DATA=1;
}
data_bus=data_bus<<1;
WR=1;
}
}
/****************************************************************
void main( )
{
display_start( );
while(1)
{
display( );
}
}
****************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -