📄 main.c
字号:
#include"includes.h"
unsigned char code ce[]={0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,
0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00};//测
unsigned char code liang[]={0x40,0x40,0x40,0xDF,0x55,0x55,0x55,0xD5,0x55,0x55,0x55,0xDF,0x40,0x40,0x40,0x00,
0x40,0x40,0x40,0x57,0x55,0x55,0x55,0x7F,0x55,0x55,0x55,0x57,0x50,0x40,0x40,0x00};//量
unsigned char code pin[]={0x20,0x3C,0x20,0x20,0xBF,0x24,0x24,0x00,0xF2,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
0x44,0x43,0x20,0x10,0x0B,0x04,0x43,0x40,0x27,0x18,0x07,0x08,0x10,0x27,0x60,0x00};//频
unsigned char code lv[]={0x00,0x0C,0x14,0xA4,0x04,0x64,0x35,0xAE,0x64,0x24,0x14,0xA4,0x14,0x04,0x04,0x00,
0x08,0x0A,0x09,0x08,0x08,0x0A,0x0B,0xFE,0x0A,0x0B,0x0C,0x08,0x09,0x0A,0x08,0x00};//率
unsigned char code mao[]={0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00};//:
unsigned char code one[]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};
unsigned char code two[]={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00};
unsigned char code three[]={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00};
unsigned char code four[]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00};
unsigned char code five[]={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00};
unsigned char code six[]={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00};
unsigned char code seven[]={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00};
unsigned char code eight[]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};
unsigned char code nine[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};
unsigned char code zero[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};
unsigned char code point[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00};//.
unsigned char code k[]={0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00};//k
unsigned char code H[]={0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20};//H
unsigned char code z[]={0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00};//z
unsigned char xdata res1[256];
unsigned char xdata resmem[256]; //存储数组
unsigned char memshow_flag; //显示存储波形标志位
unsigned char CTL_WORD[5];
unsigned int L_num,R_num; //左右移偏移量
unsigned long freq_L,freq_H; //读取的高低32位数值
//unsigned char det_freq; //分频系数
double freq; //测定的实际频率
double setfreq; //设定的采样频率
double T; //测定的时间
bit zero_flag; //输出直流标志
unsigned char freq_flag;
unsigned char Sh_0,Sh_1,Sh_2,Sh_3,Sh_4,Sh_5,Sh_6,Sh_7,Sh_8,Sh_9;
unsigned long Sh_re;
unsigned int tim_num; //测量时间宽度
unsigned long freq_plus; //判断测量时间档位
unsigned char cnv_flag; //转换结束标志位
unsigned int show_num; //显示累计
void main()
{
SYSCLK_Init();
PORT_Init();
DAC0_Init();
DAC1_Init(); //系统初始化
T2_Init();
lcd_init();
mydelay(10);
lcd_clr();
set_clr();
fpag_clr(); //lcd初始化,fpga清零
ad9851_init();
clr=0;
recont=0;
tim=0;
Sh_0=Sh_1=Sh_2=Sh_3=Sh_4=Sh_5=Sh_6=Sh_7=Sh_8=Sh_9=0;
tim_num=50; //测量时间宽度大约为50ms,数值初始化为零
memshow_flag=0;
freq_flag=1;
setfreq=0.1;
L_num=R_num=0;
memshow_flag=1;
cnv_flag=0;
EA=0;
EIE2|=0x08; //外部中断5允许
ET2=1; //定时器2中断允许
PT2=1; //定时中断2设定为高优先级
EIP2&=0xf7; //外部中断5设定为低优先级
lcd_drawhanzimo(0,0,ce);
lcd_drawhanzimo(16,0,liang);
lcd_drawhanzimo(32,0,pin);
lcd_drawhanzimo(48,0,lv);
lcd_drawnumber(64,0,mao); //第一行显示:测量频率:
lcd_drawnumber(0,2,zero);
lcd_drawnumber(8,2,zero);
lcd_drawnumber(16,2,zero);
lcd_drawnumber(24,2,zero);
lcd_drawnumber(32,2,zero);
lcd_drawnumber(40,2,point);
lcd_drawnumber(48,2,zero);
lcd_drawnumber(56,2,zero);
lcd_drawnumber(64,2,zero);
lcd_drawnumber(72,2,zero);
lcd_drawnumber(80,2,zero);
lcd_drawnumber(86,2,k);
lcd_drawnumber(94,2,H);
lcd_drawnumber(102,2,z); //第二行显示:00000.000KHz
RCAP2H=0xff;
RCAP2L=0xe0;
TR2=1; //定时器2允许
// ad9851_calfreq(0.2,0,CTL_WORD); //计算9851数值
// ad9851_send(CTL_WORD); //向9851发送指令
// EA=1;
while(1)
{
EA=0;
set_clr(); //测频清零
set_tim(); //设定测频时间
read_fpg(); //读取fpga测频数值
// count_freq(); //计算测频值
show_lcd(); //显示测频值
freq_set(); //计算频率
ad9851_calfreq(setfreq,0,CTL_WORD); //计算9851数值
ad9851_send(CTL_WORD); //向9851发送指令
// if(keyin) //判断按键命令 */
EA=1;
// key16();
// delay_nms(1000);
read_ready(); //读取ad采样准备
while(!cnv_flag);
cnv_flag=0; //判断AD采样是否结束
EA=0;
read_result(res1); //读取AD采样结果
EA=1;
}
}
void show_lcd()
{
Sh_re=freq*100000;
Sh_0=Sh_re%10;
Sh_1=(Sh_re/10)%10;
Sh_2=(Sh_re/100)%10;
Sh_3=(Sh_re/1000)%10;
Sh_4=(Sh_re/10000)%10;
Sh_5=(Sh_re/100000)%10;
Sh_6=(Sh_re/1000000)%10;
Sh_7=(Sh_re/10000000)%10;
Sh_8=(Sh_re/100000000)%10;
Sh_9=(Sh_re/1000000000)%10;
switch(Sh_0)
{
case 0:lcd_drawnumber(80,2,zero);break;
case 1:lcd_drawnumber(80,2,one);break;
case 2:lcd_drawnumber(80,2,two);break;
case 3:lcd_drawnumber(80,2,three);break;
case 4:lcd_drawnumber(80,2,four);break;
case 5:lcd_drawnumber(80,2,five);break;
case 6:lcd_drawnumber(80,2,six);break;
case 7:lcd_drawnumber(80,2,seven);break;
case 8:lcd_drawnumber(80,2,eight);break;
case 9:lcd_drawnumber(80,2,nine);break;
default: break;
}
switch(Sh_1)
{
case 0:lcd_drawnumber(72,2,zero);break;
case 1:lcd_drawnumber(72,2,one);break;
case 2:lcd_drawnumber(72,2,two);break;
case 3:lcd_drawnumber(72,2,three);break;
case 4:lcd_drawnumber(72,2,four);break;
case 5:lcd_drawnumber(72,2,five);break;
case 6:lcd_drawnumber(72,2,six);break;
case 7:lcd_drawnumber(72,2,seven);break;
case 8:lcd_drawnumber(72,2,eight);break;
case 9:lcd_drawnumber(72,2,nine);break;
default: break;
}
switch(Sh_2)
{
case 0:lcd_drawnumber(64,2,zero);break;
case 1:lcd_drawnumber(64,2,one);break;
case 2:lcd_drawnumber(64,2,two);break;
case 3:lcd_drawnumber(64,2,three);break;
case 4:lcd_drawnumber(64,2,four);break;
case 5:lcd_drawnumber(64,2,five);break;
case 6:lcd_drawnumber(64,2,six);break;
case 7:lcd_drawnumber(64,2,seven);break;
case 8:lcd_drawnumber(64,2,eight);break;
case 9:lcd_drawnumber(64,2,nine);break;
default: break;
}
switch(Sh_3)
{
case 0:lcd_drawnumber(56,2,zero);break;
case 1:lcd_drawnumber(56,2,one);break;
case 2:lcd_drawnumber(56,2,two);break;
case 3:lcd_drawnumber(56,2,three);break;
case 4:lcd_drawnumber(56,2,four);break;
case 5:lcd_drawnumber(56,2,five);break;
case 6:lcd_drawnumber(56,2,six);break;
case 7:lcd_drawnumber(56,2,seven);break;
case 8:lcd_drawnumber(56,2,eight);break;
case 9:lcd_drawnumber(56,2,nine);break;
default: break;
}
switch(Sh_4)
{
case 0:lcd_drawnumber(48,2,zero);break;
case 1:lcd_drawnumber(48,2,one);break;
case 2:lcd_drawnumber(48,2,two);break;
case 3:lcd_drawnumber(48,2,three);break;
case 4:lcd_drawnumber(48,2,four);break;
case 5:lcd_drawnumber(48,2,five);break;
case 6:lcd_drawnumber(48,2,six);break;
case 7:lcd_drawnumber(48,2,seven);break;
case 8:lcd_drawnumber(48,2,eight);break;
case 9:lcd_drawnumber(48,2,nine);break;
default: break;
}
switch(Sh_5)
{
case 0:lcd_drawnumber(32,2,zero);break;
case 1:lcd_drawnumber(32,2,one);break;
case 2:lcd_drawnumber(32,2,two);break;
case 3:lcd_drawnumber(32,2,three);break;
case 4:lcd_drawnumber(32,2,four);break;
case 5:lcd_drawnumber(32,2,five);break;
case 6:lcd_drawnumber(32,2,six);break;
case 7:lcd_drawnumber(32,2,seven);break;
case 8:lcd_drawnumber(32,2,eight);break;
case 9:lcd_drawnumber(32,2,nine);break;
default: break;
}
switch(Sh_6)
{
case 0:lcd_drawnumber(24,2,zero);break;
case 1:lcd_drawnumber(24,2,one);break;
case 2:lcd_drawnumber(24,2,two);break;
case 3:lcd_drawnumber(24,2,three);break;
case 4:lcd_drawnumber(24,2,four);break;
case 5:lcd_drawnumber(24,2,five);break;
case 6:lcd_drawnumber(24,2,six);break;
case 7:lcd_drawnumber(24,2,seven);break;
case 8:lcd_drawnumber(24,2,eight);break;
case 9:lcd_drawnumber(24,2,nine);break;
default: break;
}
switch(Sh_7)
{
case 0:lcd_drawnumber(16,2,zero);break;
case 1:lcd_drawnumber(16,2,one);break;
case 2:lcd_drawnumber(16,2,two);break;
case 3:lcd_drawnumber(16,2,three);break;
case 4:lcd_drawnumber(16,2,four);break;
case 5:lcd_drawnumber(16,2,five);break;
case 6:lcd_drawnumber(16,2,six);break;
case 7:lcd_drawnumber(16,2,seven);break;
case 8:lcd_drawnumber(16,2,eight);break;
case 9:lcd_drawnumber(16,2,nine);break;
default: break;
}
switch(Sh_8)
{
case 0:lcd_drawnumber(8,2,zero);break;
case 1:lcd_drawnumber(8,2,one);break;
case 2:lcd_drawnumber(8,2,two);break;
case 3:lcd_drawnumber(8,2,three);break;
case 4:lcd_drawnumber(8,2,four);break;
case 5:lcd_drawnumber(8,2,five);break;
case 6:lcd_drawnumber(8,2,six);break;
case 7:lcd_drawnumber(8,2,seven);break;
case 8:lcd_drawnumber(8,2,eight);break;
case 9:lcd_drawnumber(8,2,nine);break;
default: break;
}
switch(Sh_9)
{
case 0:lcd_drawnumber(0,2,zero);break;
case 1:lcd_drawnumber(0,2,one);break;
case 2:lcd_drawnumber(0,2,two);break;
case 3:lcd_drawnumber(0,2,three);break;
case 4:lcd_drawnumber(0,2,four);break;
case 5:lcd_drawnumber(0,2,five);break;
case 6:lcd_drawnumber(0,2,six);break;
case 7:lcd_drawnumber(0,2,seven);break;
case 8:lcd_drawnumber(0,2,eight);break;
case 9:lcd_drawnumber(0,2,nine);break;
default: break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -