找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2198|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的頻率計,親測能用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:284667 發(fā)表于 2019-1-19 09:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit rw=P2^5;//一下三行是設(shè)置lcd1602的使能端
sbit rs=P2^6;
sbit ep=P2^7;
typedef bit BOOL;
uchar t,A1,A2,A3,A4,A5,A6,Flag=0,count,H,L;
void delay(uchar ms) //延時
{
  uchar i;
  while(ms--)                       
  for(i=0;i<100;i++);
}
BOOL lcd_bz()//測試lcd忙碌狀態(tài)返回值為布爾型數(shù)值真或假'1'.'0'  
{
  BOOL result;
  rs=0;           // 讀忙信號
  rw=1;
  ep=1;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  result=(BOOL)(P0&0x80);
  ep=0;
  return(result) ;
}     
void write_cmd(uchar cmd)//寫指令
{
  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;
}
void write_addr(uchar addr)//寫地址
{
  write_cmd(addr|0x80);//LCD第一行的首地址為0x80第二行的首地址為0x80+0x40=0xc0
}
void write_byte(uchar dat) //寫字節(jié)
{
   while (lcd_bz());
  rs=1;
  rw=0;
  ep=0;
  _nop_();
  _nop_();
  P0=dat ;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  ep=1;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  ep=0;
}
void lcd_init() //lcd初始化

{

  write_cmd(0x38);//設(shè)置LCD兩行顯示一個數(shù)據(jù)由5*7點陣表示,數(shù)據(jù)由8跟線傳輸

  write_cmd(0x0c);//清除屏幕顯示

  write_cmd(0x06);//設(shè)定輸入方式增量不移位

  write_cmd(0x01);//開整體顯示關(guān)光標(biāo)不閃爍

}

void display(uchar addr,uchar q)//在某一地址上顯示內(nèi)容adder表示的是地址偏移量q表示顯示的字符或數(shù)字
{

  write_addr(addr);

  write_byte(q);

  delay(1);//修改此時間可以改變LCD上數(shù)值跳變的數(shù)度

}
void init()
{
        TMOD = 0x51;
        TH0 = (65535-45872)/256;
        TL0 = (65535-45872)%256;
        TH1 = 0x00;
        TL1 = 0x00;
        ET0 = 1;
        ET1 = 1;
        EA = 1;
        TR0 = 1;
        TR1 = 1;
}
void Time0() interrupt 1
{
        TL0 = 0x00;
        TH0 = 0x4c;
        t++;
        if (t == 20)
        {
                TR0 = 0;
                TR1 = 0;
                t = 0;
                Flag = 1;
        }
}
void Time1() interrupt 3
{
        count++;
}
void main()
{
                unsigned long x;
                P3 = 0xFF;
                init();
                lcd_init();
                while (1)
                {
                        if (Flag)
                        {
                                H = TH1;
                                L = TL1;
                                x = ((count*65535)+(H*256)+L);
                                A1=x/100000;
                                A2=x%100000/10000;
                                A3=x%10000/1000;
                                A4=x%1000/100;
                                A5=x%100/10;
                                A6=x%10;
                                Flag = 0;
                                count = 0;
                                TH1 = 0x00;
                                TL1 = 0x00;
                                TH0 = (65535-45872)/256;
                                TL0 = (65535-45872)%256;
                                TR1 = 1;
                                TR0 = 1;
                        }
                        display(0x00,A1+0x30);
                        display(0x01,A2+0x30);
                        display(0x02,A3+0x30);
                        display(0x03,A4+0x30);
                        display(0x04,A5+0x30);
                        display(0x05,A6+0x30);
                }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2019-1-19 13:45 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報

板凳
ID:149799 發(fā)表于 2019-2-13 11:40 | 只看該作者
期待樓主補(bǔ)全資料,謝謝。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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