中易网

跪求单片机at89c52频率计c语言程序

答案:1  悬赏:80  
解决时间 2021-01-28 19:20
跪求单片机at89c52频率计c语言程序
最佳答案
方波叫函数发生器。频率计程序如下:
#include "reg51.h"
#define uchar unsigned char
uchar disp[8]={0,0,0,0,0,0,0,0};
uchar T0count,T1count;

void delay(void)
{
uchar i;
for(i=250;i>0;i--);
}

void display()
{
//uchar i,j,k=0x80;
uchar dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar i,k;
k=0x80;
for(i=0;i<8;i++)
{
P2=0;
P0=dispcode[disp[i]];
P0=~P0;
P2=k;
k=k>>1;
delay();
}
P2=0;
}
void calc()
{
uchar i;
long frequency;
frequency=(T0count*256+TH0)*256+TL0;
for(i=7;i>0;i--)
{
disp[i]=frequency%10;
frequency=frequency/10;
}
disp[0]=frequency;
}
void init()
{
T0count=0;
T1count=0;
TH0=0;
TL0=0;
}

void main()
{
init();
TMOD=0x15;
TH1=(65536-5*110592/12)/256;
TL1=(65536-5*110592/12)/256%10;
ET1=1;
ET0=1;
EA=1;
TR1=1;
TR0=1;
//以下四句的作用是在P1.0引脚上形成1000Hz的脉冲,用导线连接到P3.4作为测试用,如果是AT89S51,则四句不用。将其中
//高8位和低8位的初始值更改后可输出不同频率的脉冲。

while(1)
{
display();
}
}
void time0() interrupt 1
{
T0count++;
}
void time1() interrupt 3
{
TH1=(65536-5*110592/12)/256;
TL1=(65536-5*110592/12)/256%10;
if(T1count==19)
{
calc();
init();
}
else T1count++;
}追问请问  这个在proteus里面在哪里能找的到
追答
看红色部分。。先PLUSE,然后设置产生方波就可以了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么做蛋白霜
八字里面三个正财是不是代表有三个老婆
床单改床笠怎么改?制作方法与步骤有哪些?
寒气饮露 则其清也是什么诗?
看imax电影 什么位置最好 在那一排好
U家超市怎么样?
唐山大陆王府精品酒店地址在什么地方,想过去
好像是一部日剧吧,看起来挺老的,有一个画面
诗经按照内容,可分为哪三种?诗经的主要表现
买首套新房子80多平米要交哪些税
窝阔台汗死后曾临朝称制5年的是谁
现有4个纸杯叠起来高度24厘米,7个纸杯叠起来
真实评价。
“常常登上座,渐渐入祠堂”是什么意思?
曹操周围的谋士
推荐资讯
给霍尊化妆的化妆师是什么级别的
logo中采用抽象名人画算侵权吗?
浩誉广告图文地址有知道的么?有点事想过去
求天语手机A932avi格式转换器
海外有趣好玩的事情都是怎么找到的
休添一笔会成什么字
乐视超4 X70好不好
炒币有跟炒股的基金吗?比较稳健的那种。
求几个简单的入门吉他(民谣)空弦练习曲
新手滑板,或代步工具
1-49哪些是吉数
宋代到清代的文学著作有哪些
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?