新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PROTUS仿真51单片机测频程序

PROTUS仿真51单片机测频程序

作者: 时间:2016-11-30 来源:网络 收藏
频率计:

LCD1602显示
在不增加外部计数硬件的情况下,本试验软件可测最高频率达到460KHz

本文引用地址:https://www.eepw.com.cn/article/201611/323601.htm

工作原理:

1S 钟内对输入脉冲所计数的次数则为频率值。
16位二进制加法计数器的最大计数值为 65535。

设置定时器 0 工作在定时方式1,定时1S。
设置定时器 1 工作在计数方式1,对输入脉冲进行计数,溢出产生中断。
将定时器 1中断定义为优先。在中断处理程序里对中断次数进行计数。1S到后,将中断次数和计数器里的计数值取出进行综合数据处理,处理后的数据送LCD1602显示。

/********************
程序名:频率计
功能:双通道频率测量,未加分频的情况下最高测频值65KHZ
网站:51单片机教程网http://www.51hei.com
作者:周勇
日期:2010年4月10日
*********************/
#include
sbit led=P1^7;
sbit rs=P3^7;//rs=P2^5;
sbit e=P3^6;//e=P2^7;
sbit shift=P1^7;
#define uchar unsigned char
#define uint unsigned int
uint time,aa;
uint num,ff;
uchar qian,bai,shi,ge;
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
void writecom(uchar com)//写命令
{
rs=0;
// rw=0;
P2=com;
delay_ms(5);
e=1;
delay_ms(5);
e=0;
}
void writedate(uchar date)//写数据
{
rs=1;
//rw=0;
P2=date;
delay_ms(5);
e=1;
delay_ms(5);
e=0;
}
void lcd_init()
{

P2=0xff;
led=1;
writecom(1);//清除显示
delay_ms(20);
writecom(0x38);//设置液晶为16*2矩阵,5*7点阵,8位数据接口(写命令)
delay_ms(20);
writecom(0x0E);//设置液晶开显示,显示光标,光标闪烁(写命令)
delay_ms(20);
writecom(0x06);//设置地址自动向右加1(写命令)
delay_ms(20);
writecom(0x80);//光标指针位置初始化(写命令)
delay_ms(20);

}
void lcd_1602xy(uchar x,uchar y,uchar date)//X值为行,Y为列,DATE为数据
{
uchar i,j;
i=x;j=y;
if(i==1)
{
writecom(0x80+j);
delay_ms(1);
writedate(date);
delay_ms(1);
}
if(i==2)
{
writecom(0x80+0x40+j);
delay_ms(1);
writedate(date);
delay_ms(1);
}
}


上一页 1 2 下一页

评论


技术专区

关闭