新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PROTUS仿真51單片機測頻程序

PROTUS仿真51單片機測頻程序

作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
頻率計:

LCD1602顯示
在不增加外部計數(shù)硬件的情況下,本試驗軟件可測最高頻率達(dá)到460KHz

本文引用地址:http://butianyuan.cn/article/201611/323601.htm

工作原理:

1S 鐘內(nèi)對輸入脈沖所計數(shù)的次數(shù)則為頻率值。
16位二進(jìn)制加法計數(shù)器的最大計數(shù)值為 65535。

設(shè)置定時器 0 工作在定時方式1,定時1S。
設(shè)置定時器 1 工作在計數(shù)方式1,對輸入脈沖進(jìn)行計數(shù),溢出產(chǎn)生中斷。
將定時器 1中斷定義為優(yōu)先。在中斷處理程序里對中斷次數(shù)進(jìn)行計數(shù)。1S到后,將中斷次數(shù)和計數(shù)器里的計數(shù)值取出進(jìn)行綜合數(shù)據(jù)處理,處理后的數(shù)據(jù)送LCD1602顯示。

/********************
程序名:頻率計
功能:雙通道頻率測量,未加分頻的情況下最高測頻值65KHZ
網(wǎng)站:51單片機教程網(wǎng)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)//寫數(shù)據(jù)
{
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);//設(shè)置液晶為16*2矩陣,5*7點陣,8位數(shù)據(jù)接口(寫命令)
delay_ms(20);
writecom(0x0E);//設(shè)置液晶開顯示,顯示光標(biāo),光標(biāo)閃爍(寫命令)
delay_ms(20);
writecom(0x06);//設(shè)置地址自動向右加1(寫命令)
delay_ms(20);
writecom(0x80);//光標(biāo)指針位置初始化(寫命令)
delay_ms(20);

}
void lcd_1602xy(uchar x,uchar y,uchar date)//X值為行,Y為列,DATE為數(shù)據(jù)
{
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 下一頁

評論


技術(shù)專區(qū)

關(guān)閉