/*********************************************************
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; //选择内部时钟
MCGC2=0x40; //时钟源二分频
MCGTRM=0xa8;//内部时钟微调
}
//===================================
//函数名: IO_INIT
//作用: 初始化IO 输入输出
//====================================
void IO_INIT(void)
{
PTADD = 0xe6; //数据方向 1为输出,0为输入
PTBDD = 0x76;
PTCDD = 0xb0;
//PTDDD = 0xff;
PTEDD = 0x45;
PTFDD = 0xff;
PTGDD = 0x38;
PTAD = 0 ; //初始状态IO全为0
PTBD = 0;
PTCD = 0;
PTDD = 0;
PTED = 0;
PTFD = 0;
PTGD = 0;
}
//===================================
//函数名: ADC_INIT
//作用: 初始化ADC 总线时钟8M
//===================================
void ADC_INIT(void)
{
ADCCFG = 0xf9; //低功耗模式,10位精度,ADCK=总线频率/8/2=500K
ADCSC2 = 0x00; //0x00:软件触发,比较功能禁止
APCTL1 = 0x14; //通道引脚使能: 使用通道为AD19 AD11 AD3 AD4
APCTL2 = 0x08;
APCTL3 = 0x08;
ADch_s = 19; //选择19通道开始
ADCSC1 = 0x73; //0x53:中断使能,单次转换,选择19通道启动转换.
}
//===================================
//函数名:SCI_INIT
//作用: 初始化SCI1
//====================================
void SCI_INIT(void)
{
SCI1BD = 8000000/16/Baud;
SCI1C1 = 0x00;
SCI1C2 = 0x2c; //使能接受中断
}
//===================================
//串口发送
//===================================
void SCI1send (byte x)
{
while(SCI1S1_TDRE==0);
SCI1D = x;
}
//===================================
//定时器1初始化
//===================================
void TPM1_Init(void) //定时器1初始化
{
TPM1MODH=0x3d; //
TPM1MODL=0x09; //250MS
TPM1SC=0x4F; //TPM1时钟源为总线时钟;分频系数为128;溢出中断使能
}
//===================================
//延时
//===================================
void Delay(Word time)
{
Word i,j;
for(i=0;i
关键字:飞思卡尔 DZ60
引用地址:基于飞思卡尔DZ60的AD 1302 KEY 485 CAN FLASH LCD程序
上一篇:将C程序转换成汇编程序
下一篇:AD数据采集的“数字滤波”:10个“软件滤波程序”
推荐阅读最新更新时间:2024-03-16 14:02
2017年Q1 苹果iPhone 7成为全球最畅销的智能手机机型
Strategy Analytics发布的最新研究报告显示,2017年Q1苹果iPhone 7成为全球最畅销的智能手机型号。OPPO R9s表现优异,全球出货量达到900万,成为全球第三大最畅销手机型号。 Strategy Analytics无线终端研究服务执行总监Neil Mawston表示,“2017年Q1,全球智能手机出货量强劲,达到3.533亿部。该季度中,前五个最畅销的手机型号占全球智能手机出货总量的六分之一” Strategy Analytics高级分析师Juha Winter补充道,“我们估算,2017年Q1苹果iPhone 7出货量达到2150万部,并占全球市场份额的6%。iPhone 7 迄今为止是全球最受欢
[手机便携]
STM32F1笔记(四)NVIC中断优先级管理
STM32将中断分为5个组,组0~4。配置代码如下: NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 在标准库里,分组的定义如下: /** @defgroup Preemption_Priority_Group * @{ */ #define NVIC_PriorityGroup_0 ((uint32_t)0x700) /*! 0 bits for pre-emption priority 4 bits for subpriority */ #define NVIC_PriorityGroup_1
[单片机]
常州力新国科能源1GW全钒液流电池储能装备制造项目签约
12月15日下午,萧县常州物流业商会揭牌仪式暨萧县招商引资推介签约大会在常州市举办。县委副书记、县长朱新华出席活动,县委常委、常务副县长胡永乐致推介辞,副县长付欣欣致辞,县领导蒋曦和县委办、投资促进中心、发改委等相关单位负责人,常州周边地区优秀企业家 ...
[新能源]
Razer Phone安卓8.1更新暂停推送 先修复通讯问题
此前雷蛇宣布将为Razer Phone用户推送安卓8.1更新,遗憾的是,这项“福利”看起来并没有想象中那么美好。 5月2日,据Phone Arena报道, 英国运营商证实,Razer Phone更新至安卓8.1后用户抱怨移动蜂窝数据出现了问题,而且这个问题非常普遍,无论使用哪个运营商网络都有类似情况。 目前Razer Phone已经停止推送安卓8.1更新,运营商同时表示将与雷蛇密切合作,尽快推送修复更新解决问题。 Razer Phone是雷蛇在2017年11月份发布的游戏手机,该机采用了5.7寸2560×1440夏普IGZO显示屏,其拥有超高刷新率(120Hz),搭载高通骁龙835处理器,配备
[手机便携]
中兴确定参加IFA 2016 9月1日带来新品
在一众国内外手机厂商宣布要参加IFA 2016大会之后,中兴也在不久前公布了相关消息。中兴称,将于9月1日在德国柏林带来最新产品。而邀请函上“right hear right now”主题显示,这款新品将以音频体验作为最大亮点。
考虑到中兴强调“音频”这一亮点,由此我们猜测它将于9月1日带来的新品可能是一款AXON天机。不过,至于这款新品到底是之前已经发布的新机,还是一款全新的设备,只能等着当天中兴自己揭晓了。
而说到具体配置,中兴AXON天机7倒是可以提供一些规格范围。据悉,中兴AXON天机7搭载骁龙820处理器,采用2K级别AMOLED显示屏,内置 4GB运存,售价大概450欧元。当然,我们希望
[手机便携]
ucosii在stm32上的移植详解1
虽然目前网上已经有不少关于ucosii在stm32上的移植版本,包括micrium也有官方移植版本。但这些版本具体是怎么移植出来的,又该怎么基于移植好的ucosii开发应用软件,网上介绍的并不多。这里介绍一下我的移植经历,希望对大家有所帮助。 我的移植基本上是从零开始的。首先想要做好移植,有两方面的内容是必须要了解。1.目标芯片;2.ucosii内核原理。 虽然我们移植的目标芯片是stm32,但操作系统的移植基本是针对Cortex-M3内核(以下简称CM3)而言的,所以我们只需了解CM3内核就好了。stm32芯片就是CM3内核加上各种各样的外设。 怎么才能了解CM3呢?看一本书 ARM Cortex-M3权威指南 (
[单片机]
2021年Q1苹果收益份额高达59%,领跑平板电脑应用处理器市场
7月27日,Strategy Analytics数据显示,平板电脑应用处理器(AP)市场出货量和收益已经连续第五个季度出现增长。 根据SA手机元件技术(HCT)研究报告,2021年Q1平板电脑应用处理器市场规模增长了33%,达到7.61亿美元,苹果、英特尔、高通、联发科和三星LSI占据了平板电脑应用处理器收益份额的前五名。 其中,苹果在2021年Q1以59%的收益份额保持了平板电脑应用处理器市场的领先地位,英特尔(14%)和高通(10%)紧随其后。 Strategy Analytics预计,2021年Q1苹果平板电脑应用处理器的收益份额增长到了59%,这是该公司过去9年的最高份额。苹果平板电脑应用处理器收益同比增长60%,主
[手机便携]
飞思卡尔接近传感器为便携式应用中的流行触摸控制带来创新
电容式触摸传感器提供智能方法来代替机械按钮,实现多功能界面设计 美国伊利诺斯州ROSEMONT(2007年传感器博览会)-2007年6月12日 -触摸传感器越来越流行,因为越来越多的界面采用触摸面板来可靠地对命令作出响应。作为领先的传感器器件设计和制造商,飞思卡尔半导体通过推出两种高度灵敏的触摸板控制器来满足市场对触摸感应控制的需求。 飞思卡尔的MPR081和 MPR082接近电容式触摸传感控制器旨在通过测量电容来检测触摸。触摸传感器正在成为任何带按钮的界面的必要设备。它们为设计人员提供了一种低成本的方法在各种应用(如接入控制、电器、移动电话、MP3播放器、PC外围设备和远程控制等)中代替机械开关按钮。使用触摸感应控制代替传
[新品]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
- CGD和Qorvo将共同革新电机控制解决方案
- 是德科技 FieldFox 手持式分析仪配合 VDI 扩频模块,实现毫米波分析功能
- 贸泽开售可精确测量CO2水平的 英飞凌PASCO2V15 XENSIV PAS CO2 5V传感器
- 玩法进阶,浩亭让您的PCB板端连接达到新高度!
- 长城汽车研发新篇章:固态电池技术引领未来
- 纳芯微提供全场景GaN驱动IC解决方案
- 解读华为固态电池新专利,2030 叫板宁德时代?
- 让纯电/插混车抓狂?中企推全球首款-40℃可放电增混电池,不怕冷
- 智驾域控知多少:中低端车型加速上车,行泊一体方案占主体
- Foresight推出六款先进立体传感器套件 彻底改变工业和汽车3D感知
更多往期活动
11月14日历史上的今天
厂商技术中心