📄 lcd_fuza_yemiam_kongzhi.c
字号:
l=80;
for(y=0;y<4;y++) //输出键值
{shzw_pr(x,l,str[y]);l=l+8;}
}
//*****************************************
void shzw_str_BCD(uchar x,uchar **str) //写数字字符串函数,"二维指针","指针"无法直接接受"指针数组"传递来的地址
{ uchar y;
//一维双重指针,是将二维的数组指针的某一行的初始地址记下来,然后转化成自己的一维显示方式!
l=32;
for(y=0;y<4;y++) //输出键值
{shzw_pr(x,l,str[y]);l=l+8;} //我开始把数据写成6,7,这里面没有数据!!!!!!所以为什么是随机数据!!
}
//*****************************************
void clsr(void) //清屏
{ uchar i,j;
for(i=0;i<8;i++)
{ prl0(i|0xb8); //设置页地址
prr0(i|0xb8);
prl0(0x40);
prr0(0x40);
for(j=0;j<64;j++) //设置列地址
{ prl1(0x00); //写0x00
prr1(0x00);
}
}
}
//**********************************************
void allon(void) //满屏
{ uchar i,j;
for(i=0;i<8;i++)
{ prl0(i|0xb8);
prr0(i|0xb8);
prl0(0x40);
prr0(0x40);
for(j=0;j<64;j++)
{ prl1(0xff); //写0xff
prr1(0xff);
}
}
}
//***************************************************
//***********************************************
void stripe(void) // 写0xaa
{ uchar i,j;
for(i=0;i<8;i++)
{ prl0(i|0xb8);
prr0(i|0xb8);
prl0(0x40);
prr0(0x40);
for(j=0;j<64;j++)
{ prl1(0xaa);
prr1(0xaa);
}
}
}
//***********************************************
void stripe1(void) // 写0x55
{ uchar i,j;
for(i=0;i<8;i++)
{ prl0(i|0xb8);
prr0(i|0xb8);
prl0(0x40);
prr0(0x40);
for(j=0;j<64;j++)
{ prl1(0x55);
prr1(0x55);
}
}
}
//***********************************************
//init_xt2; 初始化XT2 晶振为4MHZ
//*****************************************************
void init_xt2(void)
{
unsigned int iq0;
//使用XT2振荡器
BCSCTL1&=~XT2OFF; //打开XT2振荡器
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振
}
while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振
BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2, 6 MHz,
BCSCTL2 |=DIVM_1; //MCLK 2分频SMCLK=MCLK=3MHZ,
P1DIR=0X0F;
P1OUT=0X0;
P1IES=0Xf0;
P1IE=0Xf0; //列线下降沿允许P2中断
P3DIR|=0X7F; //P3为LCD控制输出
_EINT(); /*/ Enable interrupts */
}
//***********************************************
void start_page(void) //显示开始界面
{ uchar a;
clsr(); // clear screen
for(a=0;a<50;a++)
{delayms(100);}
prl0(0x3f);prr0(0x3f); //开显示
delayms(100);
shzw_pr(0x00,0x00,s2);//2
shzw_pr(0x00,0x08,s0);//0
shzw_pr(0x00,0x10,s0);//0
shzw_pr(0x00,0x18,s8);//8
hzw_pr(0x00,0x20,nian); //年
hzw_pr(0x00,0x30,bi); //毕
hzw_pr(0x00,0x40,ye); //业
hzw_pr(0x00,0x50,she); //设
hzw_pr(0x00,0x60,ji); //计
hzw_pr(0x02,0x00,cheng); //程
hzw_pr(0x02,0x10,kong);//控
hzw_pr(0x02,0x20,lv_bo);//滤
hzw_pr(0x02,0x30,bo);//波
hzw_pr(0x02,0x40,qi);//器
hzw_pr(0x02,0x50,she);//设
hzw_pr(0x02,0x60,ji);//计
hzw_pr(0x04,0x00,zhidao);//指
hzw_pr(0x04,0x10,dao);//导
hzw_pr(0x04,0x20,lao);//老
hzw_pr(0x04,0x30,shi);//师
hzw_pr(0x04,0x40,maohao);//:
hzw_pr(0x04,0x50,zheng);//郑
hzw_pr(0x04,0x60,ai);//爱
hzw_pr(0x04,0x70,hong);//红
hzw_pr(0x06,0x00,zhizuo);//制
hzw_pr(0x06,0x10,zuo);//作
hzw_pr(0x06,0x20,xue);//学
hzw_pr(0x06,0x30,sheng);//生
hzw_pr(0x06,0x40,maohao);//:
hzw_pr(0x06,0x50,wang);//王
hzw_pr(0x06,0x60,xiong);//雄
hzw_pr(0x06,0x70,ke);//科
delayms(100);
}
//*******************************************
void set_page_lowpa(void) //显示低通滤波器参数设定界面
{
clsr(); // clear screen
delayms(100);
prl0(0x3f);prr0(0x3f); //开显示
delayms(100);
hzw_pr(0x00,0x00,di);//低
hzw_pr(0x00,0x10,tong);//通
hzw_pr(0x00,0x20,lv_bo);//滤
hzw_pr(0x00,0x30,bo);//波
hzw_pr(0x00,0x40,can);//参
hzw_pr(0x00,0x50,shu);//数
hzw_pr(0x00,0x60,she);//设
hzw_pr(0x00,0x70,ding);//定
hzw_pr(0x04,0x00,fang);//放
hzw_pr(0x04,0x10,da);//大
hzw_pr(0x04,0x20,bei_shu);//倍
hzw_pr(0x04,0x30,shu);//数
hzw_pr(0x04,0x40,maohao);//冒号":"
hzw_pr(0x04,0x70,bei_shu);//单位:倍
hzw_pr(0x06,0x00,jie);//截
hzw_pr(0x06,0x10,jiezhi);//止
hzw_pr(0x06,0x20,pin);//频
hzw_pr(0x06,0x30,lv);//率
hzw_pr(0x06,0x40,maohao);//冒号":"
hzw_pr(0x06,0x70,KH);// 单位:KH
for(q=4;q<=6;q+=2) //显示设定值!
{ shzw_str(q,shd[q/2]);}
q=2;
delayms(100);
}
//******************************************
void sending_page(void)
{ //数据发送提示界面!
clsr(); // clear screen
delayms(100);
prl0(0x3f);prr0(0x3f); //开显示
delayms(100);
hzw_pr(0x00,0x30,ni);//你
hzw_pr(0x00,0x40,hao);//好
hzw_pr(0x02,0x00,shu_1);//数
hzw_pr(0x02,0x10,ju);//据
hzw_pr(0x02,0x20,yi_1);//已
hzw_pr(0x02,0x30,jing);//经
hzw_pr(0x02,0x40,cheng_1);//成
hzw_pr(0x02,0x50,gong);//功
hzw_pr(0x02,0x60,fa);//发
hzw_pr(0x02,0x70,song);//送
hzw_pr(0x04,0x00,she_1);//设
hzw_pr(0x04,0x10,bei);//备
hzw_pr(0x04,0x20,yi_1);//已
hzw_pr(0x04,0x30,jing);//经
hzw_pr(0x04,0x40,zheng_1);//正
hzw_pr(0x04,0x50,chang);//常
hzw_pr(0x04,0x60,yun);//运
hzw_pr(0x04,0x70,xing);//行
}
//***********************************************
//并且显示出要发送的BCD控制代码
void sending_BCD_page(void)
{
uchar i,y;
clsr(); // clear screen
delayms(100);
prl0(0x3f);prr0(0x3f); //开显示
delayms(100);
hzw_pr(0x00,0x00,fang);//放
hzw_pr(0x00,0x10,da);//大
hzw_pr(0x00,0x20,bei_shu);//倍
hzw_pr(0x00,0x30,shu);//数
hzw_pr(0x00,0x40,de);//的
shzw_pr(0x00,0x50,B_1);//"B"
shzw_pr(0x00,0x58,C_1);//"C"
shzw_pr(0x00,0x60,D);//"D"
hzw_pr(0x00,0x68,ma);//码
hzw_pr(0x02,0x00,shi_fou);//是
hzw_pr(0x02,0x10,maohao);//":"
hzw_pr(0x04,0x00,jie);//截
hzw_pr(0x04,0x10,jiezhi);//止
hzw_pr(0x04,0x20,pin);//频
hzw_pr(0x04,0x30,lv);//率
hzw_pr(0x04,0x40,de);//的
shzw_pr(0x04,0x50,B_1);//"B"
shzw_pr(0x04,0x58,C_1);//"C"
shzw_pr(0x04,0x60,D);//"D"
hzw_pr(0x04,0x68,ma);//码
hzw_pr(0x06,0x00,shi_fou);//是
hzw_pr(0x06,0x10,maohao);//":"
//显示BCD码数值
for(y=2;y<=6;y=y+4)
{
shzw_str_BCD(y,jiguo_BCD_Ma[i]);
i++;
}
i=6;
delayms(100);
}
//***********************************************
void start(void)
{ uchar a,x,y;
delayms(10); //1ms
prl0(0x3f);prr0(0x3f);//开显示
clsr(); // clear screen
/* stripe screen */
prl0(0x3f);prr0(0x3f); //开显示
stripe();
for(a=0;a<20;a++)
{ delayms(100);}
prl0(0x3f);prr0(0x3f); //开显示
stripe1();
for(a=0;a<20;a++)
{ delayms(100);}
start_page();
for(x=2;x<=3;x++)
{ for(y=0;y<4;y++) //清键值数组
{shd[x][y]=quanbai;}
}
for(x=6;x<=7;x++)
{ for(y=0;y<4;y++)
{jiguo_BCD_Ma[x][y]=quanbai;}
}
}
//*******************************************************
void jisuan(void) //计算输入的数值以便发送
{ double g=0;
uchar i,r,p;
for(i=2;i<=3;i++)
{
p=0;
r=data_number[i];
if(shd[i]!=0)
{
while(r--)
{
if(shuru[i][p]!=12){g=g*10+shuru[i][p]; p++;}
else{p++; fasong[i]=g;p=data_number[i]-p; break;}
}
fasong[i]=g;
r=data_number[i];
g=0;
while(p--) //计算小数部分
{g=g/10+shuru[i][--r]/10;}
fasong[i]+=g; //一个数组中的各成员之间可以相互传递数值!
}
}
//频率的控制数据的计算!!
fasong[0]=fasong[3]; //品质因素"Q"取值固定在这里我们取品质因素"Q=1.42",这个值阻尼比最小!!!!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -