📄 write_9851.c
字号:
if(shuju[j]==0x2e) wr_da(shuju[j]);
else wr_da(shuju[j]+48);
}
wr_da('H');
wr_da('z');
wr_da(' ');
wr_da(' ');
wr_da(' ');
wr_data(0x88,9,"输入频率:");//第一行显示
wr_com(0x98);
}
//********* 主程序 ***********************
main()
{
uc j;
IE=0x81; //单片机初始化,外部中断1
IT0=1;
e=0;
xa=1; //
xb=1;
xc=1;
xd=1; //
flag0=0;
flag1=0;
flag2=0;
flag3=0;
flag4=0;
flag5=0;
zc=0;
fout=100000;
kzhi[0]=1; ///
setup0(); //7279初始化
setup1(); //液晶初始化
delay(10);
ff=23.860929*fout;
//fout=9999;
kzhi[1]=ff/0x1000000;
kzhi[2]=ff/0x10000;
kzhi[3]=ff/0x100;
kzhi[4]=ff/1;
//rst=1;
//delay(50);
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;
///////
xa=0; //
wr_data(0x80,16," DDS输出频率 ");//第一行显示
wr_data(0x90,16," 100.000KHz ");//第一行显示
wr_data(0x88,9,"输入频率:");//第一行显示
wr_com(0x98);
while(1){
if(flag4){
for(sm=0;sm<11;sm++)
{
kzhi[2]=aaa[sm];
kzhi[3]=bbb[sm];
kzhi[4]=ccc[sm];
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;
}
}
else if(flag5)
{
for(sm=0;sm<10;sm++)
{
//ff=23.860929*(fou+sin(sm/10*6.283185)*10000);
kzhi[1]=ff/0x1000000;
kzhi[2]=ff/0x10000;
kzhi[3]=ff/0x100;
kzhi[4]=ff/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;
}
}
}
}
//********* 外部中断1响应7279的键盘中断 ***
void exint1 (void) interrupt 0 using 0
{
uc i,din;
EX0=0;
send_7279(0x15);
dat=1;
delay(13);
din=0;
for(i=0;i<8;i++)
{
clk=1;
delay(3);
din<<=1;
if(dat) din|=1;
clk=0;
delay(3);
}
dat=0;
cs=1; //从左到右,从上到下键值7--0;15--8;23--20
din=keydata[din];
if(din<14) {
if((!flag4)&&(!flag5)){
if(!flag2)
{
if(din<10)
{
flag1=1;
flag3=1;
if((zc<8)&&(fs[7]!=10)) {
fs[zc]=din;
wr_da(din+48);
zc=zc+1;
}
}
else if(din==10){
if((!flag0)&&(zc<8))
{
flag0=1;
fs[zc]=din;
xsd=zc;
wr_da(0x2e);
zc=zc+1;
}
}
else {
if((zc<8)&&(fs[7]!=10))
{
if (din==11) {
wr_da('H');
wr_da('z');
}
else if(din==12)
{
wr_da('K');
wr_da('H');
wr_da('z');
}
else if(din==13)
{
wr_da('M');
wr_da('H');
wr_da('z');
}
fs[zc]=din;
flag2=0;
zc=zc+1;
}
}
}
}
}
else if(din==14) {
if(!flag1){ //步进10
if(fout<19999991) fout=fout+10;
else fout=0;
fre_sf();
}
}
else if(din==15)
{
if(!flag1){
if(fout<19999901) fout=fout+100; //步进100
else fout=0;
fre_sf();
}
}
else if(din==16)
{
if(!flag1)
{
if(!flag5)
{
if(fout<100000) fout=100000; //步进5khz
fou=fout;
flag4=1;
}
}
}
else if(din==17)
{
if(!flag1)
{
if(!flag4)
{
if(fout<100000) fout=100000; //步进10khz
flag5=1;
fou=fout;
}
}
}
else if(din==19) {
if(flag1){
fou=0;
if(fs[zc-1]==11)
{
if(!flag0){
for(i=0;i<zc-1;i++) fou=fou*10+fs[i];
}
else {
for(i=0;i<xsd;i++) fou=fou*10+fs[i];
}
}
else if(fs[zc-1]==12)
{
if(!flag0){
for(i=0;i<zc-1;i++) fou=fou*10+fs[i];
fou=fou*1000;
}
else {
for(i=0;i<zc-1;i++)
{
if(fs[i]!=10) fou=fou*10+fs[i];
}
fou=fou*1000/pow(10,zc-2-xsd);
}
}
else if(fs[zc-1]==13)
{
if(!flag0){
for(i=0;i<zc-1;i++) fou=fou*10+fs[i];
fou=fou*1000000;
}
else {
for(i=0;i<zc-1;i++)
{
if(fs[i]!=10) fou=fou*10+fs[i];
}
fou=fou*(1000000/pow(10,zc-2-xsd));
}
}
else{if(!flag0){
for(i=0;i<zc;i++) fou=fou*10+fs[i];
}
else {
for(i=0;i<xsd;i++) fou=fou*10+fs[i];
}
}
flag0=0;
flag1=0;
flag2=0;
flag3=0;
for(i=0;i<zc;i++) fs[i]=0;
zc=0;
fout=fou;
fre_sf();
wr_data(0x98,16," ");
wr_com(0x98);
}
else if(flag4) {
flag4=0;
flag5=0;
fout=100000;
fou=0;
fre_sf();
}
else if(flag5) {
flag5=0;
flag4=0;
fout=100000;
fou=0;
fre_sf();
}
}
while(!key); //查询有没有松开
EX0=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -