📄 main.#3
字号:
#define SCON0 SCON
#define SBUF0 SBUF
#define TI0 TI
#define RI0 RI
#include <c8051f020.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include "common.h"
#include "osc.h"
#include "uart.h"
#include "ad9851.h"
#include "lcd.h"
#include "tl5602.h"
#include "dac.h"
void LCD_display(unsigned char code_bit,unsigned char flag);
unsigned char fn;
unsigned long ad9851_frequency;
unsigned char ad9851_phase;
unsigned long fff[4]={1000000,100000,10000,1000};
unsigned char xdata show_now[256];
unsigned char xdata show_ago[256];
unsigned int show_now_number;
unsigned int show_ago_number;
unsigned char xdata sin_table[256];
sbit sdiv=P0^7;
sbit vdiv=P0^6;
sbit level=P0^5;
sbit LCD_data=P2^7;
sbit LCD_clk=P2^6;
sbit RS=P2^5;
sbit RW=P2^4;
sbit E=P2^3;
//int0=P0.0
//int1=p0.1
//int6=P3.6
//int7=P3.7
//ad9851 P3.0123
sbit save=P3^4;
sbit show=P3^5;
sbit clr=P2^0;
sbit single_tr=P2^1;
sbit clr_single=P2^2;
//sbit dac0832wr=P0^4;
#define sample_data P7
//#define dac0832 P6
main()
{
unsigned int i;
unsigned char save_flag=0x00;
unsigned char show_flag=0x00;
unsigned char single_flag=0x00;
unsigned char clr_single_flag=0x00;
Osc_Init_Parameter_t Osc_Init_Parameter;
WDTCN = 0xDE; // disable watchdog timer
WDTCN = 0xAD;
Osc_Init_Parameter.Source_Select = EXTERNAL_OSC;
Osc_Init_Parameter.External_Mode = CRYSTAL;
Osc_Init_Parameter.Frequency = 22118400;
Osc_Init(Osc_Init_Parameter);
// Port Setup
XBR0=0x00; // HW_UART routed to pins P0.0 and P0.1;
XBR1=0x14;
XBR2=0x40; // Enable crossbar, pull-ups enabled.
P0MDOUT=0x00;///////////////////////
P2MDOUT=0xff;
P3MDOUT=0xff;
EA=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
EIE2=0x30;/////////P3.6;;;;;P3.7///////
P3IF=0x00;
uart_init();
LCD_display(0x0c,0x01);
LCD_display(0x01,0x01);
LCD_display(0x38,0x01);
LCD_display(0x06,0x01);
LCD_display(0x80,0x01);
LCD_display(0x30,0x00);
fn=0;
show_now_number=0;
show_ago_number=0;
//for(qqq=0;qqq<256;qqq++)
//{
//tl5602_write((unsigned char)qqq);
//Loop_Delay(200);
//}
dac_init();
//for(i=0;i<256;i++)
//{
//sin_table[i]=(unsigned char)((sin((float)i/256.0*6.28)+1.0)*127);
//}
//while(1)
//{
// for(i=0;i<256;i++)
//{
//dac0_work(i);
//dac1_work(sin_table[i]);
// }
//}
ad9851_init();
ad9851_frequency=(unsigned long)((float)fff[fn]*23.861);
ad9851_phase= 0x01;
ad9851_input(ad9851_frequency,ad9851_phase);
Loop_Delay(100);
while(1)
{
save=1;
if(save==1)
save_flag=0x01;
show=1;
if(show==1)
show_flag=0x01;
clr=1;
if(clr==1)
{
save_flag=0x00;
show_flag=0x00;
single_flag=0x00;
}
single_tr=1;
if(single_tr==1)
single_flag=0x01;
EIE2=0x30;//重新开启采样中断
while(show_now_number<256);//等待数据采集完成
show_now_number=0;
if(save_flag==0x01)
{
for(i=0;i<256;i++)
show_ago[i]=show_now[i];//存储波形
save_flag=0x00;
}
if(show_flag==0x00)//输出采样波形
{
for(i=0;i<256;i++)
{
dac0_work(i);
dac1_work(show_now[i]);
}
dac0_work(0);
}
if(show_flag==0x01)//输出存储波形
{
for(i=0;i<256;i++)
{
dac0_work(i);
dac1_work(show_ago[i]);
}
dac0_work(0);
}
if(single_flag==0x01)
while(1)
{
clr_single=1;
if(clr_single==1)
{
single_flag=0x00;
break;
}
else
for(i=0;i<256;i++)
{
dac0_work(i);
dac1_work(show_now[i]);
}
}
}
}
void int0() interrupt 0
{
EX0=0;
Loop_Delay(10000);
fn=fn+1;
if(sdiv==0)
{
fn++;
}
else
{
fn--;
}
if(fn==0)
{
fn=4;
}
if(fn==4)
{
fn=1;
}
fn=fn-1;
ad9851_frequency=(unsigned long)((float)fff[fn]*23.861);
ad9851_phase= 0x01;
ad9851_input(ad9851_frequency,ad9851_phase);
Loop_Delay(100);
EX0=1;
}
void int1() interrupt 2
{
EX1=0;
Loop_Delay(10000);
}
void int6() interrupt 18////0832
{
}
void int7() interrupt 19////////下降沿采数
{
sample_data=0xff;
show_now[show_now_number]=sample_data;
show_now_number++;
if(show_now_number==256)
{
EIE2=0x10;///////采够点时关闭外部中断7
}
}
void LCD_display(unsigned char code_bit,unsigned char flag){ unsigned char temp_1,temp_2; unsigned char a; unsigned char j; temp_1=code_bit; temp_2=code_bit; for(a=0;a<8;a++) { LCD_clk=0; temp_1=temp_2; temp_1=temp_1&0x80; if(temp_1==0x00) { LCD_data=0; } else { LCD_data=1; } LCD_clk=1; temp_2=temp_2<<1; } if(flag==0x01) { RS=0; RW=0; E=1; j=2000; while(j-->1); E=0; j=4000; while(j-->1); } else { RS=1; RW=0; E=1; j=2000; while(j-->1); E=0; j=4000; while(j-->1); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -