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

📄 displaylcd.c

📁 STC单片机控制8位8段式液晶显示程序
💻 C
字号:
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include "reg52.h"
#include "intrins.h"
#define    uchar   unsigned char
#define    uint    int
/***************************HT1621常数定义*****************************/
#define    RAMSIZE     16             //RAM区16字节
#define    BIAS        0x52           //1/3偏压,4个公共口
#define    RC256K      0x30           //片内RC振荡器
#define    SYSEN       0x02           //打开系统振荡器
#define    SYSDIS      0x00           //关闭系统振荡器河LCD偏压发生器
#define    LCDON       0x06           //打开LCD偏压发生器
#define    SYSDIS      0X00           /*关闭振荡发生器*/
#define    LCDOFF      0X04           /*显示关闭*/
#define    TONE4       0X80           /*设置BZ 输出频率为4K*/
#define    TONEON      0X12           /*打开BZ 音频输出*/
#define    TONEOFF     0X10           /*关闭BZ 音频输出*/
#define    CLRWDT      0X1c           /*清零WDT*/
#define    F1          0X40           /*WDT设置为4 秒溢出*/
#define    IRQEN       0X10           /*IRQ 输出禁止*/
#define    IRQDIS      0X00           /*IRQ 输出允许*/
#define    WDTEN       0X0e           /*打开WDT*/
#define    WDTDIS      0X0a           /*关闭WDT*/
#define    TIMERDIS    0X08           /*关闭时基输出*/
/***************************HT1621常数定义***************************
#define    RAMSIZE     16             //RAM区16字节
#define    BIAS        0x29           //1/3偏压,4个公共口
#define    RC256K      0x18           //片内RC振荡器
#define    SYSEN       0x01           //打开系统振荡器
#define    SYSDIS      0x00           //关闭系统振荡器河LCD偏压发生器
#define    LCDON       0x03           //打开LCD偏压发生器
#define    lcd_osci    0x14          //   XTAL 32
#define    wtd_dis     0x05
#define    wtd_en      0x07 
#define    irq_dis     0x80
#define    irq_en      0x88
#define    f1          0xa0
#define    f8          0xa3
#define    clr_wtd     0x0e
   ********************************************************/
//#define    sbit HT_WR       P1^2          //读写线
//#define    sbit HT_CS       P1^1        //片选线
//#define    sbit HT_DATA     P1^3           //数据线 
	    sbit    HT_WR   =  P1^3;          
	 	sbit	HT_CS   =  P1^2;
       	sbit    HT_DATA =  P1^1;
void   EnableHt1621(void);
void   SendBitToHt1621(uchar nbit,uchar n);
void   SendCommandToHt1621(uchar command);
void   ResetHt1621(void);
void   SetupHt1621(void);
void   SendByteToHt1621(uchar addr,uchar byte);
void   SendStringToHt1621(uchar addr,uchar *ptr,uchar len);
void   Ht1621DisplayAll(void);
void   Delay(void);
void   Delay1s(void);
/**********************************************************************
延时函数 用于调整CLK 脉冲宽度
***********************************************************************/
void Delay(void)
{
  uchar i;
  for(i=0;i<10;i++){}; 
}

/**********************************************************************
长延时函数
***********************************************************************/
void Delay1s(void)
{
uchar i;
uint j;

for(i=0;i<100;i++)
for(j=0;j<1300;j++);
}

/*********************************************************************************
函数名称:void  EnableHt1621(void)
函数功能:使能HT1621
函数输入:无
函数输出:无
**********************************************************************************/
void  EnableHt1621(void)
{
     HT_CS=0;            
     HT_WR=1;            
	 Delay();
     HT_WR=0;
	 Delay(); 
}
/*********************************************************************************
函数名称:SendBitToHt1621(uchar nbit,uchar n)
函数功能:向HT1621发送数据
函数输入:nbit:发送的位串    n:发送的位数
函数输出:无
*********************************************************************************/
void  SendBitToHt1621(uchar nbit,uchar n)
{
     uchar i; 
     for(i=0;i<n;i++)
     {
        if(nbit>=0x80)        
          HT_DATA=1; 
        else
          HT_DATA=0;
        HT_WR=0;
		Delay();
        HT_WR=1;
		Delay();
        nbit<<=1;
     }
}
/************************************************/
void  SenddataBitToHt1621(uchar nbit,uchar n)
{
     uchar i; 
     for(i=0;i<n;i++)
     {
        if(nbit>=0x80)        
          HT_DATA=1; 
        else
          HT_DATA=0;
        HT_WR=0;
		Delay();
        HT_WR=1;
		Delay();
        nbit>>=1;
     }
}
/***********************************************************************************
函数名称:void  sendcommandtoht1621(uchar command)
函数功能:发送命令到HT1621
函数输入:command:命令参数
函数输出:无
***********************************************************************************/
void  SendCommandToHt1621(uchar command)
{
     EnableHt1621();
     SendBitToHt1621(0x80,4);
     SendBitToHt1621(command,8);
     HT_WR=1;
     Delay();
	 HT_CS=1;
     Delay();
	 HT_DATA=1;
}
/***********************************************************************************
函数名称:void  ResetHt1621(void)
函数功能:复位HT1621
函数输入:无
函数输出:无
***********************************************************************************/
void  ResetHt1621(void)
{
     HT_WR=1;
     Delay();
	 HT_CS=1;
     Delay();
	 HT_DATA=1;
}
/***********************************************************************************
函数名称:void  SetupHt1621(void)
函数功能:初始化HT1621
函数输入:无
函数输出:无
***********************************************************************************/
void  SetupHt1621(void)                  
{          
     SendCommandToHt1621(SYSEN);
    // SendCommandToHt1621(lcd_osci);
     SendCommandToHt1621(BIAS);       
     SendCommandToHt1621(RC256K);     
    // SendCommandToHt1621(F1);    
     SendCommandToHt1621(WDTDIS);
    // SendCommandToHt1621(IRQDIS);
     SendCommandToHt1621(LCDON);    
}
/***********************************************************************************
函数名称:void  SendByteToHt1621(uchar addr,uchar byte)
函数功能:初始化HT1621
函数输入:addr:地址   byte:发送的字节
函数输出:无
***********************************************************************************/
void  SendByteToHt1621(uchar addr,uchar byte)                     
{
     addr<<=3;
     EnableHt1621(); 
     SendBitToHt1621(0xA0,3);       
     SendBitToHt1621(addr,6);        
     SendBitToHt1621(byte,8);       
     HT_WR=1;
     //NOP();
     Delay();
	 HT_CS=1;  
}
/**************************************************************************************************************************
//函数名称:void  SendStringToHt1621(uchar addr,uchar *ptr,uchar len)
//函数功能:发送字符串给HT1621
//函数输入:addr:起始地址   ptr:发送的字符串   len:发送的字符串长度
//函数输出:无
***************************************************************************************************************************/
void  SendStringToHt1621(uchar addr,uchar *ptr,uchar len)
{
     uchar i;
     addr<<=2;
     EnableHt1621(); 
     SendBitToHt1621(0xa0,3);               
     SendBitToHt1621(addr,6);                
     if((len+addr)>RAMSIZE)len=RAMSIZE-addr;   
     for(i=0;i<len;i++)                        
     {      
          SendBitToHt1621(ptr[i],8);           
     }
     HT_CS=1;
}


/******test*******/
void  main(void)
{
  uchar a,temp,add;
  uchar addr;
  temp=0xad;
  //a=0x5f;
  addr=0x02;
 // add=0x01;
 
  ResetHt1621();
  SetupHt1621();
  while(1)
  {
  	SendByteToHt1621(addr,temp);
    Delay1s();
	Delay1s();
	Delay1s();
	temp++;
	if(temp== 0xff) temp = 0;
  }
  //SendByteToHt1621(add<<=2,a);
  //SendStringToHt1621(0,a,5);
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -