⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ht1621.c

📁 单片机接口技术实用子程序配套源代码:里面有许多基本实用的例子
💻 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 + -