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

📄 vco.c

📁 此程序是关于锁相芯片BU2614,直接解压后即可使用其中的源码。开发环境是KEILC51
💻 C
字号:
/*********************************************************/
/**                压控振荡器程序                 **/
/**                作者:熊运生						**/
/**                时间:20058/11/19                    **/
/**        National University of Defence Technology    **/
/**                   0731-4573493                      **/
/*********************************************************/

#include <absacc.h>
#include <reg51.h>
#include<intrins.h>

#define uchar unsigned char
#define uint8 unsigned char
#define uint16 unsigned int

#define LED1 XBYTE [0xA000]   //数码管地址
#define LED2 XBYTE [0xA001]
#define LED3 XBYTE [0xA002]
#define LED4 XBYTE [0xA003]
#define LED5 XBYTE [0xA004]
#define LED6 XBYTE [0xA005]
#define LED7 XBYTE [0xA006]
#define LED8 XBYTE [0xA007]
#define ADC0809 XBYTE [0xA400]//adc0809,0通道//A0,A1,A2---------OUT1------A10__ADC0809_CS0
#define DAC0832 XBYTE [0xA800]//CS+FER//A0------------------------OUT2------A11__DAC0831_CS3

#define KEY XBYTE [0xA100]  //键盘地址

#define lcdDl XBYTE [0xA201] //左半边液晶数据地址
#define lcdDr XBYTE [0xA301] //右半边液晶数据地址
#define lcdlCommand XBYTE [0xA200]//左半边液晶命令地址
#define lcdrCommand XBYTE [0xA300]//右半边液晶命令地址

/*液晶显示使用的常量*/
#define strat_yaddr 0x40
#define strat_xaddr 0xb8
#define strat_dispaddr 0xc0
#define libleng 0x5F   //字模库容量
#define dataleng 16*8  //全屏8*8点阵容量
///////////////////////////////////88888888888888888888888888888888888888888888888888
#define datalenghan 8*4  
//////////////////////////////////////////////////////////////////////////////////////////////////////////////88888888888888888
//code uchar RAM[32768] _at_ 0x0000;//外部RAM地址

/*扫描键盘使用的变量 */
sbit first_row = P1^4;      //键盘第一行控制
sbit second_row = P1^3;     //键盘第二行控制
bit first_getkey = 0,control_readkey = 0;  //读键盘过程中的标志位
//////////////////////////////////////////////////////////////////////888888888888888888888888
uchar keybuff;
uint16 lcdk=0;
uchar ledk=0;
uchar ampk=0;
bit gatekey=0;
uchar fre1,fre2,fre3,fre4;

uchar addata,dadata,LCdata;
uchar keybuff0=1,keybuff1=0,keybuff2=0,keybuff3=0;//100M
uchar i;//键盘计数
uchar set=0;//@
uint16 keyb=0xc350;//100MHZ
bit  bu2614;
bit  clr;
uchar temp;
uchar a;
//uchar xdata*qq;
uchar arr[16];
uchar amp1,amp2,amp3;
  uchar x;
/////////////////////////////////////////////////////////////////////////8888888888888888888
bit getkey = 1; //获得有效键值标志位 等于1时代表得到一个有效键值@
bit keyon = 0;  //防止按键冲突标志位
uchar keynum = 0x0e;  //获得的有效按键值寄存器 @

/*读写flash使用的变量*/

sbit CE=P1^0;
sbit CLK=P1^1;
sbit DA=P1^2;
sbit EOC=P1^5;//ADC0809 读使能

/*数码管显示使用的变量和常量*/
uchar lednum = 0;  //数码管显示位控制寄存器
uchar led[8] = {0,0,0,0,0,0,0,0};  //数码管显示内容寄存器
uchar code segtab[18] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8c,0xff}; //七段码段码表
                      // "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "P" ,"black" 
/*液晶显示使用的变量*/
//uchar hanzi[datalenghan*2][16];
 uchar xdata wdchf[dataleng]={"setted fre:     000.0           measured fre:   000.0           measured amp:   1.00V         "};

uchar code wddata[dataleng] ={"welcom to the VCO                                                                            "};//自定义要显示的ASCII字符串
uchar code ASCII[libleng][8] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*SPACE*/
                               
{0x00,0x00,0x7e,0x21,0x21,0x21,0x7e,0x00},/*A*/
                               
{0x00,0x00,0x7f,0x49,0x49,0x49,0x36,0x00},/*B*/
                               
{0x00,0x00,0x3e,0x41,0x41,0x41,0x22,0x00},/*C*/
                               
{0x00,0x00,0x7f,0x41,0x41,0x22,0x1c,0x00},/*D*/
                               
{0x00,0x00,0x7f,0x49,0x49,0x49,0x49,0x00},/*E*/
                               
{0x00,0x00,0x7f,0x09,0x09,0x09,0x01,0x00},/*F*/
                               
{0x00,0x00,0x3e,0x41,0x49,0x49,0x7a,0x00},/*G*/
                               
{0x00,0x00,0x7f,0x08,0x08,0x08,0x7f,0x00},/*H*/
                               
{0x00,0x00,0x41,0x7f,0x41,0x00,0x00,0x00},/*I*/
                               
{0x00,0x00,0x20,0x40,0x41,0x3f,0x01,0x00},/*J*/
                               
{0x00,0x00,0x7f,0x08,0x14,0x22,0x41,0x00},/*K*/
                               
{0x00,0x00,0x7f,0x40,0x40,0x40,0x40,0x00},/*L*/
                               
{0x00,0x00,0x7f,0x02,0x0c,0x02,0x7f,0x00},/*M*/
                               
{0x00,0x00,0x7f,0x04,0x08,0x10,0x7f,0x00},/*N*/
                               
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},/*O*/
                               
{0x00,0x00,0x7f,0x09,0x09,0x09,0x06,0x00},/*P*/
                               
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},/*Q*/
                               
{0x00,0x00,0x7f,0x09,0x19,0x29,0x46,0x00},/*R*/
                               
{0x00,0x00,0x46,0x49,0x49,0x49,0x31,0x00},/*S*/
                               
{0x00,0x00,0x01,0x01,0x7f,0x01,0x01,0x00},/*T*/
                               
{0x00,0x00,0x3f,0x40,0x40,0x40,0x3f,0x00},/*U*/
                               
{0x00,0x00,0x1f,0x20,0x40,0x20,0x1f,0x00},/*V*/
                               
{0x00,0x00,0x3f,0x40,0x38,0x40,0x3f,0x00},/*W*/
                               
{0x00,0x00,0x63,0x14,0x08,0x14,0x63,0x00},/*X*/
                               
{0x00,0x00,0x07,0x08,0x70,0x08,0x07,0x00},/*Y*/
                               
{0x00,0x00,0x61,0x51,0x49,0x45,0x43,0x00},/*Z*/
                               
{0x00,0x00,0x20,0x54,0x54,0x54,0x7c,0x00},/*a*/
                               
{0x00,0x00,0x7f,0x48,0x44,0x44,0x38,0x00},/*b*/
                               
{0x00,0x00,0x38,0x44,0x44,0x44,0x20,0x00},/*c*/
                               
{0x00,0x00,0x38,0x44,0x44,0x48,0x7f,0x00},/*d*/
                               
{0x00,0x00,0x38,0x54,0x54,0x54,0x18,0x00},/*e*/
                               
{0x00,0x00,0x08,0x7e,0x09,0x01,0x02,0x00},/*f*/
                               
{0x00,0x00,0x0c,0x52,0x52,0x52,0x3e,0x00},/*g*/
                               
{0x00,0x00,0x7f,0x08,0x04,0x04,0x78,0x00},/*h*/
                               
{0x00,0x00,0x00,0x44,0x7d,0x40,0x00,0x00},/*i*/
                               
{0x00,0x00,0x40,0x40,0x44,0x3d,0x00,0x00},/*j*/
                               
{0x00,0x00,0x7f,0x10,0x28,0x44,0x00,0x00},/*k*/
                                 
{0x00,0x00,0x00,0x41,0x7e,0x40,0x00,0x00},/*l*/
                               
{0x00,0x00,0x7c,0x04,0x18,0x04,0x78,0x00},/*m*/
                               
{0x00,0x00,0x7c,0x08,0x04,0x04,0x78,0x00},/*n*/
                               
{0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00},/*o*/
                               
{0x00,0x00,0x7c,0x14,0x14,0x14,0x08,0x00},/*p*/
                               
{0x00,0x00,0x08,0x14,0x14,0x14,0x7c,0x00},/*q*/
                               
{0x00,0x00,0x7c,0x08,0x04,0x04,0x08,0x00},/*r*/
                               
{0x00,0x00,0x48,0x54,0x54,0x54,0x20,0x00},/*s*/
                                
{0x00,0x00,0x04,0x3f,0x44,0x44,0x24,0x00},/*t*/
                               
{0x00,0x00,0x3c,0x40,0x40,0x20,0x7e,0x00},/*u*/
                               
{0x00,0x00,0x1c,0x20,0x40,0x20,0x1c,0x00},/*v*/
                               
{0x00,0x00,0x3c,0x40,0x30,0x40,0x3c,0x00},/*w*/
                               
{0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00},/*x*/
                               
{0x00,0x00,0x06,0x48,0x48,0x48,0x3e,0x00},/*y*/
                               
{0x00,0x00,0x44,0x64,0x54,0x4c,0x44,0x00},/*z*/
                               
{0x00,0x00,0x00,0x01,0x02,0x04,0x00,0x00},/*`*/
                               
{0x00,0x00,0x00,0x42,0x7f,0x40,0x40,0x00},/*1*/
                               
{0x00,0x00,0x62,0x51,0x51,0x49,0x46,0x00},/*2*/
                               
{0x00,0x00,0x21,0x41,0x45,0x4b,0x31,0x00},/*3*/
                               
{0x00,0x00,0x18,0x14,0x12,0x7f,0x10,0x00},/*4*/
                               
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00},/*5*/
                               
{0x00,0x00,0x3c,0x4a,0x49,0x49,0x30,0x00},/*6*/
                               
{0x00,0x00,0x01,0x71,0x09,0x05,0x03,0x00},/*7*/
                               
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},/*8*/
                               
{0x00,0x00,0x06,0x49,0x49,0x29,0x1e,0x00},/*9*/
                               
{0x00,0x00,0x3e,0x51,0x49,0x45,0x3e,0x00},/*0*/  
                               
{0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x00},/*-*/
                               
{0x00,0x00,0x14,0x14,0x14,0x14,0x14,0x00},/*=*/
                               
{0x00,0x00,0x01,0x02,0x08,0x10,0x20,0x00},/*\\*/
                               
{0x00,0x00,0x04,0x08,0x04,0x08,0x04,0x00},/*~*/
                               
{0x00,0x00,0x00,0x00,0x4f,0x00,0x00,0x00},/*!*/
                               
{0x00,0x00,0x3e,0x59,0x55,0x79,0x3e,0x00},/*@*/
                               
{0x00,0x00,0x14,0x7f,0x14,0x7f,0x14,0x00},/*#*/
                               
{0x00,0x00,0x24,0x2a,0x7f,0x2a,0x12,0x00},/*$*/
                               
{0x00,0x00,0x23,0x13,0x08,0x62,0x61,0x00},/*%*/
                               
{0x00,0x00,0x04,0x02,0x01,0x02,0x04,0x00},/*^*/
                               
{0x00,0x00,0x36,0x49,0x55,0x22,0x50,0x00},/*&*/
                               
{0x00,0x00,0x14,0x08,0x3e,0x08,0x14,0x00},/***/
                               
{0x00,0x00,0x00,0x1c,0x22,0x41,0x00,0x00},/*(*/
                               
{0x00,0x00,0x00,0x41,0x22,0x1c,0x00,0x00},/*)*/
                               
{0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x00},/*_*/
                               
{0x00,0x00,0x08,0x08,0x3e,0x08,0x08,0x00},/*+*/
                               
{0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x00},/*|*/
                               
{0x00,0x00,0x00,0x7f,0x41,0x41,0x00,0x00},/*[*/
                               
{0x00,0x00,0x00,0x41,0x41,0x7f,0x00,0x00},/*]*/
                               
{0x00,0x00,0x00,0x56,0x36,0x00,0x00,0x00},/*;*/
                               
{0x00,0x00,0x00,0x00,0x05,0x03,0x00,0x00},/*'*/
                               
{0x00,0x00,0x00,0x00,0x28,0x18,0x00,0x00},/*,*/
                               
{0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00},/*.*/
                               
{0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x00},/*//*/
                               
{0x00,0x00,0x00,0x08,0x36,0x41,0x00,0x00},/*{*/
                               
{0x00,0x00,0x00,0x41,0x36,0x08,0x00,0x00},/*}*/
                               
{0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00},/*:*/
                               
{0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00},/*"*/
                               
{0x00,0x00,0x08,0x14,0x22,0x41,0x00,0x00},/*<*/
                               
{0x00,0x00,0x00,0x41,0x22,0x14,0x08,0x00},/*>*/
                               
{0x00,0x00,0x02,0x01,0x51,0x09,0x06,0x00}/*?*/
}; 

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

void leddisp(void); //数码管显示函数
void readkey(void); //读键盘函数
void  delay(uint8 time_nop);
/////////////////////////////////////////////////////////////////////////////////////////////////////888888888

void initial_vco(void);

void stop(void);/////////////////////f
void runfre(void);///////////////////e
void changfre(void);/////////////////d
void addfre(void);///////////////////c
void subfre(void);///////////////////b
void measureamp(void);//测幅度
//void measurefre(void);//
///////////////////////////////////////////////////////////////////////////////////////////////////88888888888
/**********************************
  液晶驱动函数
***********************************/
void lcdlon_off(uchar D);
void setlstartx(uchar D);
void setlstarty(uchar D);
void setlstartline(uchar D);
void lcdron_off(uchar D);
void setrstartx(uchar D);
void setrstarty(uchar D);
void setrstartline(uchar D);
void lcdlwrite(uchar D);
void lcdrwrite(uchar D);
uchar GetIndex(uchar szText);

void writerun(void);
void writelcdding(uchar hang,uchar lie,uchar num);
void writelcd(uchar worddata[dataleng]);

void initial_lcd(void);
void clear_lcd(void);

//void lcddisp(void);
//uchar xdata*getcode(uchar temp);
/**********************************
	24c16驱动函数
**********************************/

/*void  Start_I2c(void);
void  Stop_I2c(void);
uint8 SendByte(uint8 c);
uint8 RcvByte(void);
void  Ack_I2c(uint8 a);
uint8 ISendByte(uint8 sla,uint8 c);
uint8 ISendStr(uint8 sla,uint8 suba,uint8 *s,uint8 no);
uint8 IRcvByte(uint8 sla,uint8 *c);
uint8 IRcvStr(uint8 sla,uint8 suba,uint8 *s,uint8 no);
void  write_24lc16b(uint16 adrress, uint8 *wdata, uint8 number);
void  read_24lc16b(uint16 adrress, uint8 *rdata, uint8 number);
*/



//////////////////////////////////////////////////////////////////////////////////////////////////////////主函数
void main(void)
{
	CE=0;////关BU2614
	TMOD = 0x51;    //
    TH1=0;
    TL1=0;
 	TH0 = 62975/256;  //定时器中断时间间隔 4ms
 	TL0 = 62975%256;
	TR0=1;
    TR1=0;

	PT0=1;


//中断允许
 	EA = 1;
//	EX1=1//

⌨️ 快捷键说明

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