⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ss_sweep.c

📁 DDS-320-func: 在采用 320x240 屏的设计实验箱上运行
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <absacc.h>
#include <reg51.h>
#include <stdlib.h>
#include <math.h>
#include <intrins.h>
#include "display_drv.h"


#define uchar unsigned char
#define uint unsigned int

/*定义开关中断*/
#define DISABLE		EA=0
#define ENABLE		EA=1
#define ON		1
#define OFF		0

/*定义键盘*/
#define key0		0
#define	key1		1
#define	key2		2
#define	key3		3
#define	key4		4
#define	key5		5
#define	key6		6
#define key7		7
#define key8		8
#define key9		9
#define key_mod		10
#define key_clr		11
#define key_enter	12
#define key_tiao    13
#define key_xuan1    14
#define key_xuan2    15
/*define Command*/

#define Wsin		0
#define Wtri		1
#define Wpul		2
#define Wclr		3
 
/*定义端口,P2口用作控制线*/
sbit WR_M=P2^4;                //回送M控制线
sbit RESET_PHASEREG=P2^5;     //复位相位累加器

/*P1口用作LED显示线*/
sbit LED_CLK=P1^0;   //LED时钟线
sbit LED_DAT=P1^1;   //LED数据线

sbit Cmd_CS=P2^5;
sbit DC=P2^6;
sbit Mh=P2^7;
sbit Int_wire=P3^2;


uchar count=0;       //显示的位数
bit flag=0;         //是否按了ENTER,为0表示没有按
uchar idata value[5]={0,0,0,0,0};   //存储显示的数值
uchar mh_data=0;                   //送给CPLD的频率步进值高位
uchar ml_data=0;                   //送给CPLD的频率步进值低位

uchar idata key_pressed;
static uchar key_no;

void led_display(uchar i);
/*数字'1','2','3','4','5','6','7','8','9','0'的七段码字库*/
const uchar code LED_FONT[11]={  //
	0xFC, //0
	0x60, //1
	0xDA, //2
	0xF2, //3
	0x66, //4
	0xB6, //5
	0xBE, //6
	0xE0, //7
	0xFE, //8
	0xF6, //9
        0x00, //不显示
};

void init_port()
{
	uchar i;
	P0 = 0xFF;
	P1 = 0xFF;
	RESET_PHASEREG=1;    //禁止相位累加器工作
	WR_M=1;              //回送M控制线初始为高电平
	Cmd_CS=1;
        P3 = 0xFF;
        for(i=0;i<6;i++)           
            led_display(10); 
}


void init_interrupt()
{ 
IE=0x81;     
PX0=1;
EX0=1;
IE0=0;
EA=1;
IT0=1;        //外部中断0为跳变触发方式
        ENABLE; 

       //CPU开中断
}

void led_display(uchar i)
{
        uchar j,mask;
	mask=0x01;
	for(j=0;j<8;j++){
		LED_CLK=0;
		LED_DAT=( (LED_FONT[i]) & mask);
		mask<<=1;
		LED_CLK=1;   //上升沿移位
	}
}       


void wait(void)
{
	unsigned int i;
		for(i=0;i<5000;i++);;
}

void delayMs(unsigned char dly)
{
unsigned char i;
unsigned int k;
	for(i=dly;i!=0;i--)
	{
		for(k=0;k<1000;k++);			
	}
}



#define  SysFrq   12

void SetPhase(unsigned long int Freq)
{
unsigned char div;
unsigned int  phase;
#if SysFrq==12
if(Freq>31250)
{
Freq=31250;
value[0]=3;
value[1]=1;
value[2]=2;
value[3]=5;
value[4]=0;
}
if(Freq<1007)
{
div=31;
phase=Freq/0.4922;
}

if((Freq>=1007)&&(Freq<2081))
{
div=15;
phase=Freq/1.0173;
}
if((Freq>=2081)&&(Freq<4463))
{
div=7;
phase=Freq/2.1798;
}
if((Freq>=4463)&&(Freq<6249))
{
div=5;
phase=Freq/3.0517;
}
if((Freq>=6249)&&(Freq<7811))
{
div=4;
phase=Freq/3.8147;
}
if((Freq>=7811)&&(Freq<10415))
{
div=3;
phase=Freq/5.0863;
}
if((Freq>=10415)&&(Freq<15624))
{
div=2;
phase=Freq/7.6294;
}
if((Freq>=15624))
{
div=1;
phase=Freq/15.2588;
}
#endif
#if SysFrq==11
if(Freq>30316)
{
Freq=30316;
value[0]=3;
value[1]=0;
value[2]=3;
value[3]=1;
value[4]=6;
}
if(Freq<928)
{
div=31;
phase=Freq/0.4536;
}

if((Freq>=928)&&(Freq<1919))
{
div=15;
phase=Freq/0.9375;
}
if((Freq>=1919)&&(Freq<4113))
{
div=7;
phase=Freq/2.0090;
}
if((Freq>=4113)&&(Freq<5759))
{
div=5;
phase=Freq/2.8125;
}
if((Freq>=5759)&&(Freq<7199))
{
div=4;
phase=Freq/3.5156;
}
if((Freq>=7199)&&(Freq<10104))
{
div=3;
phase=Freq/4.9345;
}
if((Freq>=10104)&&(Freq<15157))
{
div=2;
phase=Freq/7.4017;
}
if((Freq>=30316))
{
div=1;
phase=Freq/14.8034;
}
#endif
P0=phase&0xff;//((unsigned char *)&phase)[1];
Mh=0;
DC=1;
Cmd_CS=1;
Cmd_CS=0;
Cmd_CS=1;
P0=(div<<3)|((phase&0x0700)>>8);//((unsigned char *)&phase)[0];
Mh=1;
DC=1;
Cmd_CS=1;
Cmd_CS=0;
Cmd_CS=1;
}

void SetCMD(unsigned char Cmd)
{
P0=Cmd;
DC=0;
Cmd_CS=1;
Cmd_CS=0;
Cmd_CS=1;
}

void refresh_led()
{
led_display(10);
led_display(value[0]);
led_display(value[1]);
led_display(value[2]);
led_display(value[3]);
led_display(value[4]);
}
void huanying1()
{
        //cls();
        //Set_Display_Add(0);
       // printf("dds        \nPlease press enter key to set Frequency");
        Set_Display_Add(264);
        printf("Welcome to us ");
        Set_Display_Add(530);
        putchar(0);
        Set_Display_Add(535);
        putchar(1);
        Set_Display_Add(658);
        putchar(2);
        Set_Display_Add(663);
        putchar(3);
        Set_Display_Add(550);
        putchar(0);
        Set_Display_Add(555);
        putchar(1);
        Set_Display_Add(678);
        putchar(2);
        Set_Display_Add(683);
        putchar(3);
        Set_Display_Add(570);
        putchar(4);
        Set_Display_Add(575);
        putchar(5);
        Set_Display_Add(698);
        putchar(6);
        Set_Display_Add(703);
        putchar(7);
        //Set_Display_Add(560);
        //printf("*******");
        delayMs(500);
        cls();
        delayMs(100);
}
void huanying2()
{
        //cls();
        //Set_Display_Add(0);
       // printf("dds        \nPlease press enter key to set Frequency");
        Set_Display_Add(390);
        putchar(137);
        Set_Display_Add(395);
        putchar(138);
        Set_Display_Add(518);
        putchar(139);
        Set_Display_Add(523);
        putchar(140);
        Set_Display_Add(402);
        putchar(141);
        Set_Display_Add(407);
        putchar(142);
        Set_Display_Add(530);
        putchar(143);
        Set_Display_Add(535);
        putchar(144);
        Set_Display_Add(414);
        putchar(145);
        Set_Display_Add(419);
        putchar(146);
        Set_Display_Add(542);
        putchar(147);
        Set_Display_Add(547);
        putchar(148);
/////////////////////////////
        Set_Display_Add(430);
        putchar(129);
        Set_Display_Add(435);
        putchar(130);
        Set_Display_Add(558);
        putchar(131);
        Set_Display_Add(563);
        putchar(132);
        Set_Display_Add(442);
        putchar(133);
        Set_Display_Add(447);
        putchar(134);
        Set_Display_Add(570);
        putchar(135);
        Set_Display_Add(575);
        putchar(136);
/////////////////////////////////////
        Set_Display_Add(458);
        putchar(149);
        Set_Display_Add(463);
        putchar(150);
        Set_Display_Add(586);
        putchar(151);
        Set_Display_Add(591);
        putchar(152);
        Set_Display_Add(470);
        putchar(153);
        Set_Display_Add(475);
        putchar(154);
        Set_Display_Add(598);
        putchar(155);
        Set_Display_Add(603);
        putchar(156);
        Set_Display_Add(482);
        putchar(157);
        Set_Display_Add(487);
        putchar(158);
        Set_Display_Add(610);
        putchar(159);
        Set_Display_Add(615);
        putchar(160);
        Set_Display_Add(134);
        printf("*********************");
        Set_Display_Add(772);
        printf("*********************");
        delayMs(1000);
        cls();
        //delayMs(100);
}

//////////////


void display_mod(unsigned char mod)
{
Set_Display_Add(768);
printf("MOD:");
	switch(mod)
	{
		case Wsin: printf("SIN    ");
				break;
		case Wtri: printf("NONE    ");
				break;
		case Wpul: printf("tiaofu");
				break;
		case Wclr: printf("NONE ");
				break;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -