找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2641|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

1602頻率表

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71774 發(fā)表于 2015-1-27 14:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
   #include<reg52.h>              //1602液晶頻率表。這個(gè)用T2計(jì)時(shí),采用16位自動(dòng)重裝。
#include<stdio.h>
#include<intrins.h>
#define uchar  unsigned char
#define CHECK_BUSY
sbit RS = P1^0;   
sbit RW = P1^1;
sbit EN = P1^5;
bit flag;
char  counter,counter2;
void DelayMs(uchar t)
{
int  x,y;
for (x=t;x>0;x--)
  for(y=110;y>0;y--);
}

bit LCD_Check_Busy(void)
{
#ifdef CHECK_BUSY
P0= 0xFF;
RS=0;
RW=1;
EN=0;
_nop_();
EN=1;
return (bit)(P0 & 0x80);
#else
return 0;
#endif
}

void write_Com(uchar com)
{
while(LCD_Check_Busy());
RS=0;
RW=0;
EN=1;
P0= com;
_nop_();
EN=0;
}
void write_dat(uchar dat)
{
while(LCD_Check_Busy());
RS=1;
RW=0;
EN=1;
P0= dat;
_nop_();
EN=0;
}
void LCD_Clear(void)
{
write_Com(0x01);
DelayMs(5);
}
void LCD_Write_Char(uchar x,uchar y,uchar dat)
{   
if (y == 0)
  {   
  write_Com(0x80 + x);   
  }   
else
  {   
  write_Com(0xC0 + x);   
  }      
write_dat( dat);
}
void LCD_Write_String(uchar x,uchar y,uchar *s)
{   
  while (*s)
  {   
   LCD_Write_Char(x,y,*s);   
   s ++;  
   x++;  
  }
}
void LCD_Init(void)
{
   write_Com(0x38);
   write_Com(0x06);
   DelayMs(5);
   write_Com(0x0C);
   write_Com(0x01);
}
void timer2_init()       
{      
        T2MOD=0X00;        
        TH2=(65536-110592/60)/256;
        TL2=(65536-110592/60)%256;
        RCAP2H=TH2;            
        RCAP2L=TL2;               
        EA=1;                  
        ET2=1;                  
        TR2=1;                  

}
void Init_Timer0(void)
{
TMOD=0x05;  
TH0=0x00;
TL0=0x00;        
EA=1;
ET0=1;
TR0=1;
}
main()
{
unsigned  long int a;
char temp[16];
Init_Timer0();
timer2_init();
LCD_Init();
DelayMs(10);
LCD_Clear();
LCD_Write_String(0,0,"Frequency table");
while(1)
      {     
          if(flag==1)
                     {flag=0;                           
               a=counter*65536+TH0*256+TL0;         
           a*=10;
                   sprintf(temp,"FREQ:%08.0f Hz",(float)a);         
           LCD_Write_String(0,1,temp);   
                            counter=0;                           
                TR0=1;TR2=1;
                                TH0=0;                                         
                TL0=0;
             }  
           }
}
void t0(void) interrupt 1 using 1  
{
counter ++;
   TH0=0;                                                
   TL0=0;
}
void t2(void) interrupt 5 using 2

{ TF2=0;
  counter2++;
  if(counter2==50)          
{
  TR0=0;TR2=0;                                 
  counter2=0;                       
  TH2=(65536-110592/60)/256;
  TL2=(65536-110592/60)%256;

  flag=1;                           
  }                
}


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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