?? ss_sweep.c
字號:
#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 + -