找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10050|回復(fù): 7
收起左側(cè)

單片機(jī)頻率測量+1602顯示程序

[復(fù)制鏈接]
ID:70941 發(fā)表于 2015-1-24 14:09 | 顯示全部樓層 |閱讀模式
     大家注意一個(gè)問題就可以了,被測頻率的最高值為晶振值除以24,如果是12M晶振,只能測到500K,如果想測量更高的程序,可以考慮分頻了,常用器件是74HC390或者是74LS390,看你的頻率了,當(dāng)讓,加74HC74或者LS74可以把頻率降低一倍。

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define unit unsigned int
#define ulong unsigned long
typedef bit BOOL ;
uchar T0count=0;//T0計(jì)數(shù)
ulong f;
uchar temp[6]={0};
bit flag;
sbit rs = P2^7;  
sbit rw = P2^6;
sbit ep = P2^5;
sbit L = P2^0;    //背光
sbit key1 = P2^1;    //
sbit key2 = P2^2;    //
sbit k0 = P1^0;    //
sbit k1 = P1^1;    //
sbit k2 = P1^2;    //
uchar code dis1[] = {" CRB L/C Meter "};
uchar code dis2[] = {"    2009-08-01    "};
delay(unit ms)
{         // 延時(shí)子程序
uchar i;
while(ms--)
{
      for(i = 0; i< 250; i++)
    {_nop_();_nop_();_nop_();_nop_();}
}
}
BOOL lcd_bz()
{         // 測試LCD忙碌狀態(tài)
BOOL result;
rs = 0; rw = 1; ep = 1;
_nop_();_nop_();_nop_();_nop_();
result = (BOOL)(P0 & 0x80);
ep = 0;
return result;
}
lcd_wcmd(uchar cmd)
{         // 寫入指令數(shù)據(jù)到LCD
while(lcd_bz());
rs = 0;rw = 0;ep = 0;
_nop_();_nop_();
P0 = cmd;
_nop_();_nop_();_nop_();_nop_();
ep = 1;
_nop_();_nop_();_nop_();_nop_();
ep = 0;  
}
lcd_pos(uchar pos)
{         //設(shè)定顯示位置
lcd_wcmd(pos | 0x80);
}
lcd_wdat(uchar dat)
{         //寫入字符顯示數(shù)據(jù)到LCD
while(lcd_bz());
rs = 1;rw = 0;ep = 0;
P0 = dat;
_nop_();_nop_(); _nop_();_nop_();
ep = 1;
_nop_();_nop_();_nop_();_nop_();
ep = 0;
}
lcd_init()
{         //LCD初始化設(shè)定
lcd_wcmd(0x38);     //
delay(1);
lcd_wcmd(0x0c);     //
delay(1);
lcd_wcmd(0x06);     //
delay(1);
lcd_wcmd(0x01);     //清除LCD的顯示內(nèi)容
delay(1);
}
void dis(void)
{
f=T0count*65536+TH0*256+TL0; //計(jì)算0.05秒內(nèi)的脈沖次數(shù)
f=f*20;
     temp[0]=f/100000+0x30;
temp[1]=f%100000/10000+0x30;
temp[2]=f%100000%10000/1000+0x30;
temp[3]=f%100000%10000%1000/100+0x30;
temp[4]=f%100000%10000%1000%100/10+0x30;
temp[5]=f%100000%10000%1000%100%10+0x30;
}
main()
{
     uchar i;
TMOD=0x15; //T1定時(shí),T0計(jì)數(shù) 16位定時(shí)計(jì)數(shù)器

     TH0=0;TL0=0;
TH1=(65536-50000)/256;TL1=(65536-50000)%256;      //定時(shí)為0.05S      

TR1=1;TR0=1;
ET0=1;ET1=1;
EA=1;
    //k2=0;
lcd_init();      // 初始化LCD   
delay(10);
lcd_pos(0);      // 設(shè)置顯示位置
i = 0;
     L=0;
P1=0xff;
while(dis1[i] != '\0')
{        // 顯示字符
    lcd_wdat(dis1[i]);
    i++;
}
lcd_pos(0x40);     // 設(shè)置顯示位置為
i = 0;
while(dis2[i] != '\0')
{
    lcd_wdat(dis2[i]); // 顯示字符"
    i++;
}
lcd_wcmd(0x01);
while(1)      //
{
if(flag==1)
    {
      dis();                       
    lcd_pos(0x80);     // 設(shè)置顯示位置
      lcd_wdat('-');
         for(i=0;i<=5;i++)
          lcd_wdat(temp[i]); // 顯示字符
    lcd_wdat('-');
      flag=0;
    T0count=0;
    TH0=0;TL0=0;
    TR0=1;TR1=1;
}
}
}


void t0(void) interrupt 1 using 1 //T0工作在計(jì)數(shù)狀態(tài)下,T0(P3.4)
{
     T0count++; //T0count中斷次數(shù)
}
void t1(void) interrupt 3 using 2 //T1工作在定時(shí)狀態(tài)下,
{
     TR0=0;TR1=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
flag=1;
}

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:74143 發(fā)表于 2015-4-3 15:06 | 顯示全部樓層
學(xué)習(xí)了。
回復(fù)

使用道具 舉報(bào)

ID:89420 發(fā)表于 2015-9-5 19:39 | 顯示全部樓層
學(xué)習(xí)了。
回復(fù)

使用道具 舉報(bào)

ID:135158 發(fā)表于 2016-7-27 03:45 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報(bào)

ID:96218 發(fā)表于 2016-12-23 21:12 | 顯示全部樓層
這個(gè)可以學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:338761 發(fā)表于 2018-7-20 20:56 | 顯示全部樓層
k0,k1,k2表示的什么
回復(fù)

使用道具 舉報(bào)

ID:375592 發(fā)表于 2018-7-22 15:02 | 顯示全部樓層
TMOD=0x15; //T1定時(shí),T0計(jì)數(shù) 16位定時(shí)計(jì)數(shù)器

     TH0=0;TL0=0;
TH1=(65536-50000)/256;TL1=(65536-50000)%256;      //定時(shí)為0.05S      

TR1=1;TR0=1;
ET0=1;ET1=1;
EA=1;



這個(gè)TMOD=0x15 什么意思??
請指點(diǎn)一下。。謝謝
回復(fù)

使用道具 舉報(bào)

ID:235106 發(fā)表于 2019-8-13 15:42 | 顯示全部樓層
下載學(xué)習(xí)一下!點(diǎn)贊
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表