📄 111.c
字号:
#include"bit.h"
//#include"lcd1.h"
#include"SPCE061A.h"
#include"sp.h"
void keyscan();
/*------------------延时子程序-----------------------------*/
void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
{
*P_Watchdog_Clear=0x0001;
}
}
/*------------------写命令到LCD------------------------------*/
void write_com(unsigned char cmdcode)
{
RS=0;
RW=0;
E=1;
P0_Lowbyte=cmdcode;
delay(2); //在数据写入的时候加入适当的延时
E=0;
}
/*-------------------写数据到LCD----------------------------*/
void write_data(unsigned char Dispdata)
{
RS=1;
RW=0;
E=1;
P0_Lowbyte=Dispdata;
delay(2); //在数据写入的时候加入适当的延时
E=0;
}
/*------------------初始化LCD屏--------------------------*/
void lcdreset()
{
write_com(0x30); //选择基本指令集,选择8bit数据流
write_com(0x0c); //开显示(无游标、不反白)
write_com(0x01); //清除显示,并且设定地址指针为00H
write_com(0x02); /*DDRAM地址归位*/
write_com(0x80); //设置DDRAM地址
write_com(0x10); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}
/*------------------显示字符串--------------------------*/
void hzkdis(const unsigned char *s)
{
while(*s>0)
{
write_data(*s);
s++;
delay(5);
}
}
/*------------------清整个GDRAM空间----------------------------*/
void clrgdram()
{
unsigned char x,y;
for(y=0;y<64;y++)
for(x=0;x<16;x++)
{
write_com(0x34);
write_com(y+0x80); //行地址
write_com(x+0x80); //列地址
write_com(0x30);
write_data(0x00);
write_data(0x00);
}
}
/*------------------清屏命令--------------------------*/
void clrscreen()
{
write_com(0x01);
delay(5);
}
/*------------------首屏显示--------------------------*/
void shouping_display()
{
write_com(0x30);
clrscreen();
write_com(0x80);
hzkdis("老师好");
write_com(0x90);
hzkdis("您辛苦了");
write_com(0x88);
hzkdis("开关稳压电源");
write_com(0x98);
hzkdis("作者:李萌");
write_com(0xb2);
hzkdis("安洪江");
write_com(0xa9);
hzkdis("刘飞跃");
}
int main()
{
unsigned int uiOutput;
uiOutput=0x0000;
*P_IOA_Dir = 0xFFFF;
*P_IOA_Attrib = 0xFFFF;
*P_IOA_Data = 0x0000;
*P_IOB_Dir = 0xFF03;
*P_IOB_Attrib = 0xFF03;
*P_IOB_Data = 0x0001;
PSB=1;
RES=0;
delay(100);
RES=1;
while(1)
{
*P_Watchdog_Clear=0x0001;
lcdreset(); //初始化LCD屏
shouping_display(); //显示诗
delay(100);
clrgdram();
write_com(0x04); //第一行反白显示
delay(5000);
write_com(0x04); //第一行恢复正常
delay(5000);
write_com(0x05); //第二行反白显示
delay(5000);
write_com(0x05); //第二行恢复正常
delay(5000);
write_com(0x03); //垂直滚动屏幕的内容
write_com(0x60);
delay(5000);
write_com(0x30);
clrscreen();
write_com(0x80);
hzkdis("开关稳压电源");
write_com(0x90);
hzkdis("输出电压");
write_com(0x97);
hzkdis("V");
write_com(0x88);
hzkdis("设定输出电压");
delay(2000);
*P_INT_Ctrl=C_IRQ1_TMA;
asm("INT OFF");
*P_TimerA_Ctrl=0x0230;
*P_TimerA_Data=0xcfff;
while(1)
{
*P_Watchdog_Clear = C_WDTCLR;
if(*P_INT_Ctrl&C_IRQ1_TMA)
{
*P_INT_Clear=C_IRQ1_TMA; //clear INT flag
uiOutput ^= 0xFFFF; //reverse
*P_IOB_Data=uiOutput; //output rectangle
}
}
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -