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

📄 splc501.c

📁 水温控制系统,凌阳的61板做的
💻 C
字号:
 //定义管脚 
//=======================================================
//             FEDCBA9876543210
#define  C_AOP_Pin    0x10      //0000000000010000b;    IO AOP
#define  C_EP_Pin     0x40    //0000000001000000b;    IO EP
#define  C_RWP_Pin    0x20    //0000000000100000b;    IO as RWP
//========================================================
#define P_Watchdog_Clear (volatile unsigned int *)0x7012      //狗狗
#define P_SystemClock (volatile unsigned int *)0x7013         //系统时钟 

#define P_IO_Data_Data (volatile unsigned int *)0x7000        //A口
#define P_IO_Data_Dir (volatile unsigned int *)0x7002        
#define P_IO_Data_Attrib (volatile unsigned int *)0x7003     
#define P_IO_Control_Data (volatile unsigned int *)0x7005     //系统时钟
#define P_IO_Control_Dir (volatile unsigned int *)0x7007     
#define P_IO_Control_Attrib (volatile unsigned int *)0x7008   //B口    
//========================================================
extern q;
//函数声明
//========================================================
 void InitGraphic(void);
 void sendorder(void);
 void senddata(void);
 void setpage( char a);
 void setaddr( char addr);
 void ClearScreen( char a);
 void x(int a);
 void yuxie(char a, char b);
//========================================================
//初始化LCD
//========================================================
void InitGraphic(void)
{
 *P_SystemClock=0x0089;                    //系统时钟设定
 //========================================================
 *P_IO_Data_Data =0x0000;                  //端口初始化
 *P_IO_Data_Dir =0x00ff;
 *P_IO_Data_Attrib = 0x00ff;
 *P_IO_Control_Data =0xff8f;
 *P_IO_Control_Dir =0xff70;
 *P_IO_Control_Attrib =0xff70;
//========================================================
 *P_IO_Data_Data =0xffe2;                  //复位 reset
 sendorder();                              //送命令子函数
 *P_IO_Data_Data =0xffe3;                  //空操作 
 sendorder();
*P_IO_Data_Data =0xffc8;                  //COM口扫描方向63---0
  sendorder();
*P_IO_Data_Data =0xffa0;                  //ADC(segment方向)设定为正常  A1  reverse
  sendorder();
 //电源设定
 //========================================================
 *P_IO_Data_Data =0xffa2;                  // LCD偏压设定 1/9 bias
  sendorder();
 *P_IO_Data_Data =0xff24;                  //V5电压内部电阻调整设置 
  sendorder();
 *P_IO_Data_Data =0xff81;                  //电量设置模式 (双字节)
  sendorder();                                
 *P_IO_Data_Data =0xff1a;                  //调整显示屏亮度
  sendorder();
 *P_IO_Data_Data =0xffd2;                  //驱动模式
  sendorder();
 *P_IO_Data_Data =0xff00;                  //模式2
 sendorder();
 *P_IO_Data_Data =0xff2c;                  //上电控制设置   REGULATOR on
 sendorder();
 *P_IO_Data_Data =0xff2e;                  //上电控制设置   +FOLLOWER oFF  ????
 sendorder();
 *P_IO_Data_Data =0xff2f;                  //上电控制设置   +FOLLOWER on   ????
 sendorder();                              //power set  over
  //========================================================
 *P_IO_Data_Data =0xffaf;                  //开显示
 sendorder();
 setpage(0);                                //页设置为第0页 
 *P_IO_Data_Data =0xff40;                  //显示起始行设置为第0行 
 sendorder();
 setaddr(0);                                //列设置为第0列

 *P_IO_Data_Data =0xffa5;                  //全屏点亮
 sendorder();  
 *P_IO_Data_Data =0xffa4;                  //正常显示
 sendorder();
 ClearScreen(0);                           //清屏全部ROM填零
}                               
//========================================================
//初始化LCD结束
 
//发送命令子函数
//========================================================
void sendorder(void)
{
char c;

c=(C_AOP_Pin|C_EP_Pin|C_RWP_Pin);
c^=0x00ff;
c|=*P_IO_Control_Data;
*P_IO_Control_Data=c;
*P_IO_Control_Data=c|C_EP_Pin;
*P_IO_Control_Data=c;
 *P_Watchdog_Clear=1;
}
//========================================================
//写入数据子函数
//========================================================
void senddata(void)
{
char c;
c=(C_AOP_Pin|C_EP_Pin|C_RWP_Pin);
c^=0x00ff;
c|=*P_IO_Control_Data;
*P_IO_Control_Data=c;
*P_IO_Control_Data=c|C_AOP_Pin|C_EP_Pin;
*P_IO_Control_Data=c;
*P_Watchdog_Clear=1;
}
//========================================================
//页设置子函数
//========================================================
 void setpage( char a)
{
a|=0xffb0;
*P_IO_Data_Data =a;
sendorder();
}
//========================================================
//列设置子函数
//========================================================
void setaddr( char addr)
{
 char b;
b=addr;
b&=0xff0f;
b|=0xff00;
addr>>=4;
addr|=0xff10;
*P_IO_Data_Data =addr;
sendorder();
*P_IO_Data_Data =b;
sendorder();
 }
//========================================================
//清屏子函数     fill ROM with 0 or 1
//========================================================
void ClearScreen( char a)
{
 char z1,z2;
if(a!=0) a=0xffff;
for(z1=0;z1<8;z1++)
{
setpage(z1);
setaddr(0);
    for(z2=0;z2<128;z2++)
    {
    *P_IO_Data_Data =a;
     senddata();
    }
}
}
//========================================================
//子程序
//========================================================
void yuxie(char a,char b)
{
setpage(a);
setaddr(b);
}

void x(int a)
{
*P_IO_Data_Data=a;
 senddata();
}


void showshu(char a,char b,char n)   //字母&数字
{int i,*p;
p=q+14*n;
yuxie(a+1,b);
for(i=0;i<7;i++)
{x(*p);
p++;}
yuxie(a,b);
for(i=7;i<14;i++)
{x(*p);
p++;}
*P_Watchdog_Clear=1;
}


⌨️ 快捷键说明

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