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

📄 system.c

📁 这里有很多我自己做的凌阳单片机源程序
💻 C
字号:
#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 =0x00ff;                  //端口初始化
*P_IO_Data_Dir =0xff00;
*P_IO_Data_Attrib = 0xff00;
*P_IO_Control_Data =0xff8f;
*P_IO_Control_Dir =0xff70;
*P_IO_Control_Attrib =0xff70;
//========================================================
*P_IO_Data_Data =0xe2ff;                  //复位 reset
sendorder();                              //送命令子函数
*P_IO_Data_Data =0xe3ff;                  //空操作 
sendorder();
*P_IO_Data_Data =0xc0ff;                  //COM口扫描方向63---0
  sendorder();
*P_IO_Data_Data =0xa0ff;                  //ADC(segment方向)设定为正常  A1  reverse
  sendorder();
//电源设定
//========================================================
*P_IO_Data_Data =0xa2ff;                  // LCD偏压设定 1/9 bias
  sendorder();
*P_IO_Data_Data =0x24ff;                  //V5电压内部电阻调整设置 
  sendorder();
*P_IO_Data_Data =0x81ff;                  //电量设置模式 (双字节)
  sendorder();                                
*P_IO_Data_Data =0x1aff;                  //调整显示屏亮度
  sendorder();
*P_IO_Data_Data =0xd2ff;                  //驱动模式
  sendorder();
*P_IO_Data_Data =0x00ff;                  //模式2
sendorder();
*P_IO_Data_Data =0x2cff;                  //上电控制设置   REGULATOR on
sendorder();
*P_IO_Data_Data =0x2eff;                  //上电控制设置   +FOLLOWER oFF  ????
sendorder();
*P_IO_Data_Data =0x2fff;                  //上电控制设置   +FOLLOWER on   ????
sendorder();                              //power set  over
  //========================================================
*P_IO_Data_Data =0xafff;                  //开显示
sendorder();
setpage(0);                                //页设置为第0页 
*P_IO_Data_Data =0x40ff;                  //显示起始行设置为第0行 
sendorder();
setaddr(0);                                //列设置为第0列

*P_IO_Data_Data =0xa5ff;                  //全屏点亮
sendorder();  
*P_IO_Data_Data =0xa4ff;                  //正常显示
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<<=8;
a|=0xb0ff;
*P_IO_Data_Data =a;
sendorder();
}
//========================================================
//列设置子函数
//========================================================
void setaddr( char addr)
{
char b;
b=addr<<8;
b&=0x0fff;
b|=0x00ff;
addr<<=4;
addr|=0x10ff;
*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)
{
a<<=8;
*P_IO_Data_Data=a;
senddata();
}


void  show(char a,char b,char n)   //汉字
{int i,*p;
p=q+32*n;
yuxie(a+1,b);
for(i=0;i<16;i++)
{x(*p);
p++;}
yuxie(a,b);
for(i=16;i<32;i++)
{x(*p);
p++;}
*P_Watchdog_Clear=1;
}
showshu(char a,char b,char n)   //字母&数字
{int i,*p;
p=q+704+16*n;
yuxie(a+1,b);
for(i=0;i<8;i++)
{x(*p);
p++;}
yuxie(a,b);
for(i=8;i<16;i++)
{x(*p);
p++;}
*P_Watchdog_Clear=1;
}

⌨️ 快捷键说明

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