微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于飞思卡尔DZ60的AD 1302 KEY 485 CAN FLASH LCD程序

基于飞思卡尔DZ60的AD 1302 KEY 485 CAN FLASH LCD程序

时间:12-01 来源:互联网 点击:
/*********************************************************

Hardware : EVB9S08DZ60 Board

Author : WBR

Version : V1.0

Begin Time: 2011.5.30

**********************************************************/

#include /* for EnableInterrupts macro */

#include "derivative.h" /* include peripheral declarations */

#include "1302.h"

//#include "lcd.h"

//#include "mscan.h"

//#include "KEY.h"

/******************************************************

IO说明:

1:四路AD输入通道 ADP19(AD1) ADP11(AD2) ADP3(AD3) ADP4(AD4)

2:485通信 DE (PTE2) TXD1(PTE0) RXD1(PTE1)

3:四路光耦输入 DI1(PTG2) DI2 (PTE5) DI3 (PTE4) DI4(PTE3)

4:DS1302 SCL(PTF2) SDA (PTF3) RST (PTG4)

5:继电器控制 PTA6 PTB5 PTA5 PTC4 PTB6

6:按键(输入) PTC0 PTB0 PTC1 PTA0 PTC2(SW1~SW5)

7:CAN TX(PTE6) RX(PTE7)

8:LCD RW(PTG3) RS(PTF0) E(PTF1) RST(PTF7) 背光(PTG5) DATA(PTD0~PTD7)

************************************************************/

#define DI1 PTGD_PTGD2 //外触发1----->PG2

#define DI2 PTED_PTED5 //外触发2----->PE5

#define DI3 PTED_PTED4 //外触发3----->PE4

#define DI4 PTED_PTED3 //外触发4----->PE3

//********以上为输入IO********//

#define JDQ1 PTCD_PTCD4 //继电器1----->PC4

#define JDQ2 PTAD_PTAD5 //继电器2----->PA5

#define JDQ3 PTBD_PTBD5 //继电器3----->PB5

#define JDQ4 PTAD_PTAD6 //继电器4----->PA6

#define JDQ5 PTBD_PTBD6 //继电器5----->PB6

#define DE485 PTED_PTED2 //485 T R切换----->PE2

//#define ID_TX 0x0001 //自定义的CAN发送标识符

//#define ID_RX 0x0002 //自定义的CAN接收标识符

//Bool can_send_enable = FALSE; //CAN发送标志位,暂定RTC0.5秒发送一次

#define Baud 19200 //串口波特率9600

#define N 51

#define T 1800 //运算电量的时间单位1800是半个小时(1800秒)

extern byte time_buf1[8]; //1302时钟寄存器

byte ReadTimeFlag = 0; //定时器每0.5秒读1302时间的标志位

byte ADSET = 0; //发送电流电压功率等数值到显示屏标志位

/*********************变量和函数定义****************************/

word ADCbuffer1[N] = 0; //AD转换缓冲

word ADC1,ADC2,ADC3,ADC4; //AD转换缓冲

byte ADC1L,ADC1H,ADC2L,ADC2H,ADC3L,ADC3H,ADC4L,ADC4H;

byte MW4L,MW4H,MW5L,MW5H,MW6L,MW6H,MW7L,MW7H,MW8L,MW8H,MW9L,MW9H;

byte MW21L,MW21H,MW22L,MW22H,MW25L,MW25H,MW26L,MW26H; //历史充电电量记录

byte MW29L,MW29H,MW30L,MW30H,MW33L,MW33H,MW34L,MW34H; //历史放电电量记录

byte Buffer[15]; //串口接收缓冲

byte ADch_s; //AD通道选择

byte ADcount;

//byte Key_value=0; //按键

//byte CANbuffer[8]; //接收到的CAN内容缓冲区数组

word sum=0;

long P,P1,P2,P3,Premain,Pup,Pdown,Psum; //实时充电功率,实时放电功率,历史充电功率,历史放电记录

word PL,PH; //拆分P

byte P0L,P0H,P1L,P1H; //拆分PH,PL

byte RR = 1; //RR = 1;读屏的19号地址;RR = 2读屏的20号地址开始的时间;

byte PAGE8; //进入设置时间页面和电量页面设置计数;

byte T20 =0;

word TENT;

byte *p;

//================================

//中值滤波程序

//================================

void filter()

{

static byte count,i,j;

word value_buf[N];

word temp;

sum=0;

for(count=0;count

{

value_buf[count] = ADCbuffer1[count];;

}

for (j=0;j

{

for (i=0;i

{

if ( value_buf[i]>value_buf[i+1] )

{

temp = value_buf[i];

value_buf[i] = value_buf[i+1];

value_buf[i+1] = temp;

}

}

}

for(count=1;count

sum += value_buf[count];

}

//===================================

//函数名:MCU_INIT

//作用: 初始化MCU时钟 晶振16M总线频率8M

//====================================

void MCU_INIT(void)

{

MCGC1=0x04; //选择内

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top