900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C语言频率计程序 我的单片机课程设计频率计 含C语言程序 仿真图和原理图等...

C语言频率计程序 我的单片机课程设计频率计 含C语言程序 仿真图和原理图等...

时间:2021-12-10 05:32:36

相关推荐

C语言频率计程序 我的单片机课程设计频率计 含C语言程序 仿真图和原理图等...

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar m=0;

uchar u;

uint i;

uint x;

uint c; //相位数据结果保存

float t0,f;

uint a[]={70,61,48,48,48,48,48,46,48,48,72,90}; //频率数据结果保存

//F,=,0,0,0,0,0,.,0,0,H,Z

sbit lcdrw=P2^1;

sbit lcdrs=P2^0;

sbit lcden=P2^2;

/LCD1602的设置//

void delay(uint s)//延时1MS

{

uint r,g;

for(r=s;r>0;r--)

for(g=110;g>0;g--);

}

void write_com(uchar com) // 写指令

{

lcdrs=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void write_data(uchar date) // 写数据

{

lcdrs=1;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void initlcd()//初始化

{

lcdrw=0;

lcden=0;

//write_com(0x01);//显示清屏

write_com(0x38);//显示模式设置

write_com(0x0c); //显示开,开游标,不闪烁

write_com(0x06); // 字符时整体不移动

}

LCD1602设置///

///定时器的设置//

void CT_init() //定时计数器初始化

{ TMOD=0x99;//GATE=1,T1、T0工作在方式1,定时方式

TH0=0; //定时计数器初值清零

TL0=0;

// TH1=0;

// TL1=0;

TR0=1; //TR0,TR1置位,此时定时计数器的启动有INT0,INT1引脚电平决定

// TR1=1;

ET0=1; //开中断

// ET1=1;

}

void ITC0() interrupt 0 //外部中断0服务程序

{

u=m;//读定时计数器0溢出次数

m=0;//溢出次数清零

x=TH0*256+TL0; //读定时计数器0当前值

TH0=0;//定时计数器0清零

TL0=0;

}

void TIME0() interrupt 1//定时计数器0溢出中断

{

m++;//溢出次数加1

}

定时器的设置//

void main()

{

initlcd(); //液晶显示初始化

CT_init(); //定时计数器初始化

EA=1;//开总中断

EX0=1;//允许外部中断

// EX1=1;

IT0=1;//设置外部中断方式为下降沿触发

// IT1=1;

P3=0xff;

while(1)

{

t0=u*65536+x; //计算脉冲时间宽度

f=1000000/(2*t0); //计算频率

c=f*100; //计算结果逐位保存

a[9]=c%10+48;

a[8]=(c/10)%10+48;

c=f;

a[6]=c%10+48;

a[5]=(c/10)%10+48;

a[4]=(c/100)%10+48;

a[3]=(c/1000)%10+48;

a[2]=(c/10000)%10+48;

write_com(0x80);

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

{

write_data(a[i]);

delay(10);

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。