📄 ht1621.c
字号:
//-----------------------函数声明--------------------------------------------------------
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
//-----------------------定义HT1261 LCD控制寄存器命令參數-----------------------------------------------
#define BIAS 0X52
#define RC256 0X30
#define SYSTEN 0X02
#define SYSDIS 0X00
#define LCDON 0X06
//-----------------------HT1261 LCD接口管脚声明--------------------------------------------------------
//sbit lc=PSW^0;
sbit lcd_data=P1^0;
sbit lcd_cs=P1^1;
sbit lcd_wr=P1^3;
//-----------------------定义变量--------------------------------------------------------
#define data_num 16
uchar X1[data_num]; //X1用于存储需要写入显示寄存器的数据
//--------------------------------------------------------------------------------------------------
// 函数名称: lcdint
// 函数功能: 初始化HT1621
//--------------------------------------------------------------------------------------------------
void lcdint(void) //初始化HT1621.
{
lcd_cs=0;
lcd_wr=1;
_nop_();
lcd_wr=0;
_nop_();
}
//--------------------------------------------------------------------------------------------------
// 函数名称: sendb0
// 入口参数: id,n id为要送到SPI总线上的数据,n表示把id高位开始的n位送出
// 函数功能: 基本操作,单片机写数据到总线上,连续送n位数据
// id的最高位为第一位,连续n位数据
//--------------------------------------------------------------------------------------------------
void sendb0(uchar id,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
if(id>=0x80)
lcd_data=1;
else
lcd_data=0;
lcd_wr=1;
_nop_();
_nop_();
lcd_wr=0;
_nop_();
_nop_();
id<<=1;
}
}
//--------------------------------------------------------------------------------------------------
// 函数名称: sendcom
// 入口参数: command
// 函数功能:送命令字
//--------------------------------------------------------------------------------------------------
void sendcom(uchar command)
{
uchar a=0x80,i=4,d=8;
lcdint();
sendb0(a,i);
sendb0(command,d);
lcd_wr=1;
lcd_cs=1;
lcd_data=1;
}
//--------------------------------------------------------------------------------------------------
// 函数名称: INT1621
// 函数功能: 初始化设置各控制寄存器
//--------------------------------------------------------------------------------------------------
void INT1621(void)
{
uchar command;
command=BIAS; // 1/3 bais . 4 duty
sendcom(command);
command=RC256; //启动內部256KRC 振荡器
sendcom(command);
command=SYSTEN;
sendcom(command);
command=LCDON; //启动LCD
sendcom(command);
}
//--------------------------------------------------------------------------------------------------
// 函数名称: send1621data
// 函数功能: 写数据到ht1621内部的显示缓冲区RAM,往HT1621 display buffer RAM送要显示的数据
//--------------------------------------------------------------------------------------------------
void send1621data()
{
uchar a=0x01,b=0x80,c=0x40,d=0x08;
uchar j,k;
lcdint();
sendb0(b,a);
sendb0(c,d); //从display buffer RAM 0x0000 开始
for(j=0;j<16;j++) //将X1[]数组的数据逐个送到RAM
{
k=X1[j];
sendb0(k,d);
}
}
//--------------------------------------------------------------------------------------------------
// 函数名称: 主函数
//--------------------------------------------------------------------------------------------------
main()
{
for(;;)
{
INT1621();
send1621data();
// ...............
// ...............
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -