电子设计竞赛论文-简易稳压电源的设计(8)

2019-06-05 12:23

float vol=0; AD0INT = 0; EA = 0;

measureVol = ADC0H << 8; measureVol += ADC0L; vol= measureVol; vol = vol * 2.3597; measureVol = (int)vol;

//DisBuf[3] = (measureVol % 10); //DisBuf[2] = (measureVol / 10) % 10; //DisBuf[1] = (measureVol /100) % 10; //DisBuf[0] = (measureVol /1000) | 0x80; EA = 1; }

void OscInit() {

OSCXCN = 0x67;

Delay(0x100);

while((OSCXCN & 0x80) != 0x80) {

Delay(10); }

Delay(0x100);

// 切换到外部晶体

// 等待稳定

// 允许外部晶体

OSCICN = 0X88; }

// 端口初始化

// 注:7219对应的端口需要配置成推挽方式 void PortInit() {

32

P0MDOUT = 0X00; P1MDOUT = 0X70; P2MDOUT = 0X00; P3MDOUT = 0X00; XBR2 = 0X40;

// 漏极开路 // 漏极开路 // 漏极开路

// 漏极开路,P31推挽

// 使能交叉开关, 弱上拉全局允许

P74OUT = 0x3C; }

/////////////////////////////////////////////////////////////////////// // 初始化

/////////////////////////////////////////////////////////////////////// void Initial() {

P0 = 0xff; P1 = 0xff; P2 = 0xff; P3 = 0xff;

DisBuf[0] = 0; DisBuf[1] = 11; DisBuf[2] = 4; DisBuf[3] = 5;

DisplayInterval = 0;

//------------------------------------------------------------------ DIN7219 = 1; LOAD7219 = 1; CLK7219 = 0;

// initial 7219

Send7219(0x09,0x00); // decode mode for all display

Send7219(0x0A,0x01); // set brightness to half

Send7219(0x0B,0x03); // display 0, 1, 2, 3

Send7219(0x0C,0x01); // display in normal states

Send7219(0x0F,0x00); // leave test mode

33

//------------------------------------------------------------------ }

void DAC_Init() //DA输出初始化 {

DAC0H=0x00; DAC0L=0x00; DAC1H=0x00; DAC1L=0x00; DAC0CN=0x80;

//开启并选择DAC0、DAC1的工作方式(输出更新在

//DAC1输出0V

//DAC0输出0V(即初始电压为0V)

写DACXH时)

DAC1CN=0x80; }

void ADC0Init (void) {

REF0CN = 0x03; // enable temp sensor, on-chip VREF, and VREF output buffer

AMX0CF = 0X00;

AMX0SL = 0x00; // select AIN00

ADC0CF = (16000000/2500000) << 3; // ADC conversion clock = 2.5MHz ADC0CF |= 0x00; //PGA gain = 1 ADC0CN = 0x84; EIE2 |= 0x02;

EA=1; // enable ADC interrupts }

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

// 定时器3初始化 //

// 定时器3用来定时启动ADC0

///////////////////////////////////////////////////////////////////////////////////////////////////////////// sfr16 TMR3RL = 0x92; // Timer3 reload value sfr16 TMR3 = 0x94; // Timer3 counter void Timer3Init (void) {

TMR3RL = 0x0300; // 500Hz

34

TMR3 = 0xffff; EIE2 &= ~0x01; TMR3CN = 0x04; }

void Time0_and_Time1_Init() {

CKCON = 0x00; TMOD = 0x11;

// set to reload immediately // disable Timer3 interrupts

// start Timer3,using system clock

/**/

//所有定时器时钟使用系统时钟的12分频

//定时器1、2皆设为16位

TF0 = 0;

TF1 = 0; }

void DC() {

int vol;

if(g_workmode==WK_SET)return;

i=50;

g_code=code_tab[i]; SetDAC0(g_code); SetDAC1(0);

vol=g_code*0.02483; DisBuf[0]=Tab[12]; DisBuf[1]=Tab[13];

DisBuf[2]=Tab[vol/10]| 0x80; DisBuf[3]=Tab[vol];

LED_PRESET = 1; LED_DC_MOD = 0; LED_TRI = 1;

LED_AUTO_SCAN = 1; LED_SQU = 1;

g_workmode=WK_DC; ET0=0; TR0=0; //close Timer0. ET1=0;

35

TR1=0; //CLOSE TIMER1. TMR3CN|=0x04; //OPEN timer3 EIE2 |= 0x02;

P5=0x01; P6=0x00; }

void preset() {

DC(); }

void square() {

if(g_workmode==WK_DC||g_workmode==WK_TRI) {

LED_PRESET = 1; LED_DC_MOD = 1; LED_TRI = 1;

LED_AUTO_SCAN = 1; LED_SQU = 0;

TMR3CN&=0xFB; //close timer3. EIE2 &= ~0x02; TH1=0xFC; //open timer1,delay 1ms,f=1kHz. TL1=0x18; ET1=1; TR1=1;

P5=0x00; P6=0x00;

DAC1L=0xFF; //DAC1:1.25V DAC1H=0x07;

DAC0L=0x00; //DAC0:0V DAC0H=0x00;

g_workmode=WK_SQU;

DisBuf[0]=Tab[14]; DisBuf[1]=Tab[10];

36


电子设计竞赛论文-简易稳压电源的设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:【西大2017版】《城市园林绿地规划设计》网上作业及参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: