📄 write_9851.c
字号:
#include <math.h>
#include <stdio.h>
#include <reg52.h>
#define uc unsigned char
#define ui unsigned int
//端口定义
sbit cs=P1^0;
sbit clk=P1^1;
sbit dat=P1^2;
sbit e=P1^3;
sbit rs=P1^4;
sbit ab=P1^5;
sbit clock=P1^6;
sbit xa=P1^7;
sbit xb=P3^0;
sbit xc=P3^1;
sbit xd=P3^7;
sbit key=P3^2; //7279按键有效输出端
sbit w_clk=P3^3;
sbit eq_ud=P3^4;
sbit rst=P3^5;
//变量及数组定义
unsigned long fout; //输出频率
unsigned long fou; //频率暂时存储
float ff; //频率控制字
//.float pi2=8.0*atan(1.0);
bit idata flag0; //小数点标志
bit idata flag1; //设置频率标志
bit idata flag2; //有无单位按下标志
bit idata flag3; //有无数字键按下标志
bit idata flag4; //频偏5KHz
bit idata flag5; //频偏10KHz
uc idata i; //全局变量
uc idata xsd; //小数点位置
uc idata zc; //输入频率的位数
uc idata sm; //扫频次数
uc idata kzhi[5]; //频率控制字
uc idata shuju[8]; //待显示频率数据
uc idata fs[10]; //频率设置单元
uc code keydata[24]={7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,23,22,21,20,19,18,17,16};
uc code aaa[11]={0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x26,0x26};
uc code bbb[11]={0x68,0x97,0xc5,0xf4,0x23,0x51,0x80,0xae,0xdd,0x0c,0xca};
uc code ccc[11]={0xac,0x47,0xe1,0x7c,0x16,0xb1,0x4b,0xe6,0x80,0x1b,0xb5};
//按键编码
//函数定义
void send_7279(uc);
void setup1(void); //液晶初始化
void wr_com(uc); //液晶写命令
void wr_data(uc,uc,uc);//对液晶写数据,参数分别为地址,写的个数,及数据
void wr_da(uc); //液晶写字节
//********* 延时2uS为基值 ****************
void delay(ui dl)
{
while(dl--);
}
//***********************
void setup0(void)
{
dat=0; //7279初始化
clk=0;
key=1;
cs=1;
delay(5);
send_7279(0xa4); //复位清除
cs=1;
}
//********* 发数据或指令到7279 **********
void send_7279(uc dout)
{
uc i;
cs=0;
delay(13);
for(i=0;i<8;i++)
{dat=(dout&0x80)?1:0;
clk=1;
delay(3);
clk=0;
delay(3);
dout<<=1;
}
dat=0;
}
//**********************
void setup1(void)
{
wr_com(0x01); //清除显示
wr_com(0x01);
//wr_com(0x0c);
//wr_com(0x0e); //显示光标,游标(一定要开显示)
wr_com(0x0d);
}
//***************
//***************
void wr_com(uc command)
{
uc j;
delay(250);
rs=0;
for(j=0;j<8;j++)
{
ab=(command&0x80)?1:0;
clock=1;
clock=0;
command<<=1;
}
e=1;
e=0;
}
//*********************
void wr_data(uc pos1,uc end,uc *ap)
{
uc i;
wr_com(pos1);
for(i=0;i<end;i++,ap++) wr_da(*ap);
}
//*********************
void wr_da(uc dat)
{
uc j;
delay(250);
rs=1;
for(j=0;j<8;j++)
{
ab=(dat&0x80)?1:0;
clock=1;
clock=0;
dat<<=1;
}
e=1;
e=0;
}
//**********************************
void fre_sf(void)
{
uc j;
ff=23.860929*fout;
kzhi[1]=ff/0x1000000;
kzhi[2]=ff/0x10000;
kzhi[3]=ff/0x100;
kzhi[4]=ff/1;
xa=1;
xb=1;
xc=1;
xd=1;
w_clk=0;
eq_ud=0;
rst=0;
for(j=0;j<5;j++)
{
P2=kzhi[j];
w_clk=1;
w_clk=0;
}
eq_ud=1;
shuju[0]=fout/10000000;
shuju[1]=fout%10000000/1000000;
shuju[2]=fout%1000000/100000;
shuju[3]=fout%100000/10000;
shuju[4]=fout%10000/1000;
shuju[5]=fout%1000/100;
shuju[6]=fout%100/10;
shuju[7]=fout%10;
//if(fout<1000000) {
// xa=0;
// }
// else if(fout<3000000) {
// xb=0;
// }
// else if(fout<6000000) {
// xc=0;
// }
//else {
// xd=0;
// }
if(ff<8000000) xa=0;
else xb=0;
if(fout<1000) {
if(fout<10){ shuju[0]=shuju[7];
shuju[1]=0x2e;
//shuju[2]=0;
//shuju[3]=0;
//shuju[4]=0;
//shuju[5]=0;
//shuju[6]=0;
shuju[7]=0;
}
else if(fout<100)
{
shuju[0]=shuju[6];
shuju[1]=shuju[7];
shuju[2]=0x2e;
//shuju[2]=0;
//shuju[3]=0;
//shuju[4]=0;
//shuju[5]=0;
shuju[6]=0;
shuju[7]=0;
}
else if(fout<1000)
{
shuju[0]=shuju[5];
shuju[1]=shuju[6];
shuju[2]=shuju[7];
shuju[3]=0x2e;
//shuju[2]=0;
//shuju[3]=0;
//shuju[4]=0;
//shuju[5]=0;
shuju[5]=0;
shuju[6]=0;
shuju[7]=0;
}
}
else if(fout<1000000)
{
if(fout<10000)
{
shuju[0]=shuju[4];
shuju[1]=0x2e;
shuju[2]=shuju[5];
shuju[3]=shuju[6];
shuju[4]=shuju[7];
//shuju[2]=0;
//shuju[3]=0;
//shuju[4]=0;
//shuju[5]=0;
shuju[5]=0;
shuju[6]=0;
}
else if(fout<100000)
{
shuju[0]=shuju[3];
shuju[1]=shuju[4];
shuju[2]=0x2e;
shuju[3]=shuju[5];
shuju[4]=shuju[6];
shuju[5]=shuju[7];
//shuju[2]=0;
//shuju[3]=0;
//shuju[4]=0;
//shuju[5]=0;
shuju[6]=0;
}
else if(fout<1000000)
{
shuju[0]=shuju[2];
shuju[1]=shuju[3];
shuju[2]=shuju[4];
shuju[3]=0x2e;
shuju[4]=shuju[5];
shuju[5]=shuju[6];
shuju[6]=shuju[7];
//shuju[2]=0;
//shuju[3]=0;
//shuju[4]=0;
//shuju[5]=0;
}
shuju[7]='K'-48;
}
else if(fout>=1000000)
{
if(fout<10000000) {
shuju[0]=shuju[1];
shuju[1]=0x2e;
shuju[2]=shuju[2];
shuju[3]=shuju[3];
shuju[4]=shuju[4];
shuju[5]=shuju[5];
shuju[6]=shuju[6];
}
else {
//shuju[0]=shuju[1];
//shuju[1]=shuju[2];
shuju[6]=shuju[5];
shuju[5]=shuju[4];
shuju[4]=shuju[3];
shuju[3]=shuju[2];
shuju[2]=0x2e;
}
shuju[7]='M'-48;
}
//wr_com(0x01);
//wr_data(0x80,16," DDS输出频率 ");//第一行显示
wr_com(0x90);
wr_da(' ');
wr_da(' ');
wr_da(' ');
for(j=0;j<8;j++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -