77范文网 - 专业文章范例文档资料分享平台

2008年F题 简易多功能计数器 - 图文(6)

来源:网络收集 时间:2018-12-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

case 0X7B:key=11;break; case 0XE7:key=12;break; case 0XD7:key=13;break; case 0XB7:key=14;break; case 0X77:key=15;break; } //end switch }//end for return key;

}//end keyboard()

/*======================================================= 头文件名:SPI.h

功能:AVR与FPGA SPI通信的驱动程序

=======================================================*/ //---------FPGA的SPI接口定义----------------// #define CS 0 #define SCLK 1 #define MOSI 2 #define LOAD 3 #define MISO 4 #define LAT 5 #define RST 6

#define DDR_SPI DDRD #define PORT_SPI PORTD #define PIN_SPI PIND

#define CSH PORT_SPI|=BIT(CS) #define CSL PORT_SPI&=~BIT(CS) #define SCLKH PORT_SPI|=BIT(SCLK) #define SCLKL PORT_SPI&=~BIT(SCLK) #define MOSIH PORT_SPI|=BIT(MOSI) #define MOSIL PORT_SPI&=~BIT(MOSI) #define MISOH PORT_SPI|=BIT(MISO) #define MISOL PORT_SPI&=~BIT(MISO) #define LOADH PORT_SPI|=BIT(LOAD) #define LOADL PORT_SPI&=~BIT(LOAD) #define LOADH PORT_SPI|=BIT(LOAD) #define LOADL PORT_SPI&=~BIT(LOAD) #define LATH PORT_SPI|=BIT(LAT) #define LATL PORT_SPI&=~BIT(LAT) #define RSTH PORT_SPI|=BIT(RST) #define RSTL PORT_SPI&=~BIT(RST)

//---------微妙级别的延时函数-------------//

delayus(uchar t) { uchar i;

for(i=0;i

asm(\asm(\asm(\asm(\asm(\asm(\asm(\asm(\} }

//---------从FPGA中读出数据------------// uchar spi_read(uchar addr) { uchar i,output;

DDR_SPI=0XFF;//IO的初始化 DDR_SPI&=~BIT(MISO);

CSH; LOADH; SCLKL; MOSIL;

LATL; CSL;

for(i=0;i<8;i++) //写入地址 {

if(addr&0X80) MOSIH; else MOSIL; SCLKH; SCLKL;

addr=addr<<1; } CSH;

LOADL;//产生load的下降沿,往reg[15:8]中装入数据 LOADH;

CSL;

for(i=0;i<8;i++)

{

output=output<<1;//要先移位一下,否则只要for7次 if(PIN_SPI&BIT(MISO)) output|=1; SCLKH; SCLKL; } CSH; LATH;

return output; }

/*======================================================= 头文件名:read_data.h

功能:从FPGA中读取数据,并处理。

此程序中包含对低频信号测周期并取倒数的算法

=======================================================*/

uchar period[24]; uchar sig_dig[24]; uchar real[24]; uchar dummy[24]; uchar freq[24];

uchar pnt;

//-------判断周期数组中有效位的起始位置------// uchar find_pos()

{ uchar flag=1,i=0,pos; while(flag) {

if(period[i]!='0') {

pos=i; flag=0; } else {

pos==255; i++; flag=1; } }

return pos;

}

//-------------------------- -------------------// //取6位被测信号周期的数字(高6位)

//---------------------------------------------//

double catch_six_dig(uchar pos) {

double temp=0; uchar i;

for(i=0;i<6;i++) {

temp=temp*10+(period[pos+i]-'0'); }

return temp; }

//---------------------------------------------// //求有效位的倒数,并乘以10000,然后将每一个有 效位转换成字符数组保存在sig_dig[]数值中。

//---------------------------------------------// void float_disp() {

double float1,float2,float3,float_MSD,float_LSD; uint uint_MSD,uint_LSD,temp; uchar i;

uint sig_fig_L,sig_fig_H;

float2=catch_six_dig(find_pos());

//float3=(float1*10000/float2); float3=(1000000000/float2); float_MSD=float3; uint_MSD=float_MSD;

float_LSD=(float_MSD-uint_MSD)*1000; uint_LSD=float_LSD;

pnt=0;

if(float3!=1) {

temp=uint_MSD/1000;

sig_dig[pnt++]=temp+'0';

uint_MSD=uint_MSD00; temp=uint_MSD/100;

sig_dig[pnt++]=temp+'0';

uint_MSD=uint_MSD0; temp=uint_MSD/10;

sig_dig[pnt++]=temp+'0';

sig_dig[pnt++]=uint_MSD+'0';

//temp=uint_LSD/1000;

// sig_dig[pnt++]=temp+'0';

uint_LSD=uint_LSD00; temp=uint_LSD/100;

sig_dig[pnt++]=temp+'0';

uint_LSD=uint_LSD0; temp=uint_LSD/10;

sig_dig[pnt++]=temp+'0';

sig_dig[pnt++]=uint_LSD+'0'; } }

//------------------------------------------------// //通过输入有效位数值和小数点所在位数用字符串显示小数 //------------------------------------------------// void put_dot(uchar sig_dig[],uchar location) {

uchar i,j;

char pos=location-3;

float_disp();

if(pos>=1 && pos<=5) { j=0;

for(i=0;i<7;i++) {

if(j==pos) {

real[j++]='.'; }

real[j++]=sig_dig[i]; } }

else if(pos==0) {

real[0]='0';

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2008年F题 简易多功能计数器 - 图文(6)在线全文阅读。

2008年F题 简易多功能计数器 - 图文(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/396862.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: