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

📄 lcms.h

📁 自己写的TMS320LF2407A的精确延时函数和中断函数
💻 H
字号:
#ifndef _LCMSERIAL_H_
#define _LCMSERIAL_H_

//--------------- LCD 指令 -----------------------------
//基本指令集 RE = 0
#define CLEAR        0x0001     //清除显示
#define RESAC        0x0002     //位址歸位
#define SETPOINT     0x0006     //進入點設定,游標右移,DDRAM 位址計數器(AC)加1
#define CURSOR       0x000F     //整體顯示,游標顯示,游標位置反白
#define MCURSOR      0x0014     //游標向右移動,AC=AC+1
#define FUCSET       0x0030     //功能設定,BIT MPU 控制界面,基本指令集,默认设置
#define CGRAMAC      0x0040     //設定CGRAM 位址 
#define DDRAMAC      0x0080     //設定DDRAM 位址
                              //第一行AC 範圍為80H..8FH
                              //第二行AC 範圍為90H..9FH
                              //第三行AC 範圍為A0H..AFH
                              //第四行AC 範圍為B0H..BFH
//#define READBF     RS=0,RW=1,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0
//                             BF  AC6 AC5 AC4 AC3 AC2 AC1 AC0
//                   讀取忙碌旗標(BF)和位址
//                   就是读取指令寄存器,PORT8006,BF=1,表示LCD忙碌
//#define WRITERAM   RS=1,RW=0,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0
//                             D7  D6  D5  D4  D3  D2  D1  D0
//                   寫入資料到RAM
//                   就是写数据寄存器: PORT8005
//#define READRAM    RS=1,RW=1,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0
//                             D7  D6  D5  D4  D3  D2  D1  D0
//                   讀取RAM 的值
//                   就是从数据寄存器讀取資料, PORT8007

//擴充指令集 RE=1
#define IDLE         0x01     //待命模式
#define CGRAMSET     0x02     //捲動位址或RAM 位址選擇
#define REVERSE      0x04     //反白選擇
#define SLEEP        0x0c     //脫離睡眠模式
#define EFUCSET      0x66     //擴充功能設定,8 BIT MPU 控制界面,為擴充指令集動作,繪圖顯示ON
#define SISA         0x40     //設定IRAM 位址或捲動位址
#define SETGDRAM     0x80     //設定繪圖RAM 位址

//---------------------------------------------------------
/*   端口定义 */
//---------------------------------------------------------
ioport unsigned int port8006;       //串行时钟地址
ioport unsigned int port8007;       //串行数据地址

//--------------------------------------------------------------------
// 函数名称 : void SendByte(unsigned char dat) 串行发送一字节数据
// 函数说明 : 串行发送一字节数据,在时钟的上升沿发送数据,在时钟为低电平时,数据变化
// 输入参数 : 发送的数据
// 输出参数 : 无
//--------------------------------------------------------------------
void SendByte(unsigned char dat)
{
     unsigned char i;
     unsigned int temp;
     for(i=0;i<8;i++)
           {
                 temp = port8007;    //读IO 8007 SCLK="0";
                 
                 if(dat & 0x0080)
                   port8006 = 0;    //写IO 8006 SID="1",发送数据"1" MSB先发送
                 else 
                   temp = port8006; //读IO 8006 SID="0",发送数据"0" MSB先发送
                   
                  port8007 = 0;     //写IO 8007 SCLK="1";
                  
                  dat = dat<<1;     //数据左移,移位到dat.7
            }

                  temp = port8007 ; //读IO 8007 SCLK="0";
}


//--------------------------------------------------------------------
// 函数名称 : void SendCMD(unsigned char dat)   写指令寄存器             
// 函数说明 : 写指令寄存器 
// 输入参数 : 输入的命令字
// 输出参数 : 无
//-------------------------------------------------------------------- 

void SendCMD(unsigned char dat)
{
     SendByte(0x00F8);             //11111,00,0 RW=0,RS=0 同步标志
     SendByte(dat & 0x00F0);       //高四位
     SendByte((dat & 0x000F)<<4);  //低四位
}     

//--------------------------------------------------------------------
// 函数名称 : void SendDat(unsigned char dat)   写显示数据或单字节字符             
// 函数说明 : 写数据寄存器 
// 输入参数 : 输入的数据
// 输出参数 : 无
//-------------------------------------------------------------------- 

void SendDat(unsigned char dat)

{

     SendByte(0x00FA);             //11111,01,0 RW=0,RS=1
     SendByte(dat & 0x00F0);       //高四位
     SendByte((dat & 0x000F)<<4);  //低四位

}      
          

//--------------------------------------------------------------------
// 函数名称 : void display(unsigned char x_add,unsigned char dat1,unsigned char dat2)写汉字到LCD 指定的位置
// 函数说明 : x_add显示RAM的地址,dat1/dat2显示汉字编码 
// 输入参数 : x_add,dat1/dat2
// 输出参数 : 无
//-------------------------------------------------------------------- 

void Display(unsigned char x_add,unsigned char dat1,unsigned char dat2)

{
     SendCMD(x_add);//1xxx,xxxx 设定DDRAM 7位地址xxx,xxxx到地址计数器AC
     SendDat(dat1);
     SendDat(dat2);
}

//--------------------------------------------------------------------
// 函数名称 : void Initlcm(void)
// 函数说明 : 初始化 LCM
// 输入参数 : 无
// 输出参数 : 无
//-------------------------------------------------------------------- 

void Initlcm()
{

   asm(" nop ");
   delay_50ms();
   
   SendCMD(FUCSET);       //功能設定,8BIT 并口,基本指令集
   delay_100us();
 
   SendCMD(FUCSET);       //功能設定,8BIT 并口,基本指令集
   
   delay_100us(); 
   SendCMD(CURSOR);      //整體顯示,游標顯示,游標位置反白
   
   delay_100us();
   SendCMD(CLEAR);       //清除显示
   
   delay_20ms();     
   SendCMD(SETPOINT);    //進入點設定,游標右移,DDRAM 位址計數器(AC)加1
   
   delay_100us();
}


#endif

⌨️ 快捷键说明

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