Main.c

#include <reg52.h> //

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar t0_num=0,flag=0,f_time1_over;

 unsigned int freq=0,cap;

//double mm;

long period;

sbit RS = P2^5;//

sbit RW = P2^6;//

sbit E = P2^7;//

//延时函数

void delayms(uint x)

{

uchar i;

while(x--)for(i = 0; i < 120; i++);

}

//液晶显示

void Write_Data(uchar x);

void Write_Order(uchar x);

void Init_1602(void);

void Time_init(void);

void main()

{   

 Init_1602();//

 Write_Order(0x01);//

 Write_Order(0x80);//

   Write_Data('D');//

   Write_Data('C');//

Write_Data('M');

Write_Data('2');

Write_Data('0');

Write_Data('2');

Write_Data('0');

Write_Data('3');

Write_Data('3');

Write_Data('0');

Write_Data('2');

Write_Data('0');

Write_Data('1');

Write_Data('2');

Write_Data('0');

//

Write_Order(0xC5);//

    Write_Data('u');//

    Write_Data('F');//

Time_init();

   while(1)

   {

if(f_time1_over==1)

{

f_time1_over=0;

period=TH0;

period<<=8;

period=(freq+TL0)+t0_num*65536;

TH0=0;

TL0=0;

t0_num=0;

cap=period/21000+1;

//cap=(unsigned int)(mm/freq);

 Write_Order(0xC0);//

// Write_Data(period/1000000+0x30);

//Write_Data(period%1000000/100000+0x30);

//Write_Data(period%100000/10000+0x30);

//Write_Data(period%10000/1000+0x30);

//

// //Write_Data(period/1000+0x30);//дÊý¾Ý

// Write_Data(period%1000/100+0x30);//дÊý¾Ý

// Write_Data(period%100/10+0x30);//дÊý¾Ý

// Write_Data(period%10+0x30);//дÊý¾Ý

 

   Write_Data(cap/100+0x30);//

   Write_Data(cap%100/10+0x30);//

   Write_Data(cap%10+0x30);//

    TR1=1;                     

           TR0=1;

}

   }

}

void time0_serv() interrupt 1

{

 //TH0=(65536-50000)/256;         /*¼Ó1¼ÆÊýÆ÷¸ß8λTH0¸³³õÖµFFH*/  

// TL0=(65536-50000)%256;

// t0_num++;

// if(t0_num>=20)

// {

// t0_num=0;

// flag=1;

// TR1=0;                      /*Æô¶¯T0*/

//  TR0=0;

// }

t0_num++;

}

void time1_serv() interrupt 3

{

f_time1_over=1;

TR0=0;

TR1=0;

}

void Time_init(void)

{

 TMOD=0x61;//0101 0000         /*ÉèÖÃT0¹¤×÷ÓÚ¼ÆÊý·½Ê½1*/

 TH1=0xff;         /*¼Ó1¼ÆÊýÆ÷¸ß8λTH0¸³³õÖµFFH*/  

 TL1=0xff;         /*¼Ó1¼ÆÊýÆ÷µÍ8λTL0¸³³õÖµFFH*/

 

 TH0=0;         /*¼Ó1¼ÆÊýÆ÷¸ß8λTH0¸³³õÖµFFH*/  

 TL0=0; //      0001

 ET0=1;

 ET1=1;                     /*T0¿ªÖжÏ*/

 EA=1;         /*CPU¿ªÖжÏ*/

 TR1=1;                      /*Æô¶¯T0*/

 TR0=1;

}

void Init_1602(void)

{

Write_Order(0x38);//ÏÔʾÉèÖÃ:8λÊý¾Ý½Ó¿Ú£¬2ÐУ¬16¡Á2ÏÔʾ£¬5¡Á7µãÕó

Write_Order(0x08);//ÏÔʾ¹Ø±Õ

Write_Order(0x01);//ÇåÆÁ£¨°üº¬Êý¾ÝÖ¸ÕëÇåÁ㣬ËùÓÐÏÔʾÇåÁ㣩

Write_Order(0x06);//ÊäÈ뷽ʽ£º¹â±êÓÒÒÆ£¬ÆÁÄ»²»¶¯

Write_Order(0x0c);//ÕûÌåÏÔʾ£¬Óйâ±ê£¬²»ÉÁ˸

}

//写数据

void Write_Data(uchar x)

{

delayms(1);

RS = 1;//¸ßµçƽѡÔñÊý¾Ý¼Ä´æÆ÷

RW = 0;//µÍµçƽдÊý¾Ý

P0 = x;//P0¶Ë¿ÚÉèΪx

E = 1;//ʹÄÜ¶Ë¸ßµçÆ½

_nop_();//Ö¸ÁîÑÓʱ1us,ÑÓʱһ¸ö»úÆ÷ÖÜÆÚ

E = 0;//ʹÄÜ¶ËµÍµçÆ½

RW = 1;//¸ßµçƽ½øÐжÁ²Ù×÷

}

//写指令

void Write_Order(uchar x)

{

delayms(1);

RS = 0;//µÍµçƽѡÔñÖ¸Áî¼Ä´æÆ÷

RW = 0;//µÍµçƽдÊý¾Ý

P0 = x;//P0¶Ë¿ÚÉèΪx

E = 1;//ʹÄÜ¶Ë¸ßµçÆ½(ϽµÑØ£¬¸³¸ø´«¸ÐÆ÷)

_nop_();//Ö¸ÁîÑÓʱ1us,ÑÓʱһ¸ö»úÆ÷ÖÜÆÚ

E = 0;//ʹÄÜ¶ËµÍµçÆ½

RW = 1;//¸ßµçƽ½øÐжÁ²Ù×÷

}

/*--------------------------------------------------------------------------

INTRINS.H

Intrinsic functions for C51.

Copyright (c) 1988-2010 Keil Elektronik GmbH and ARM Germany GmbH

All rights reserved.--------------------------------------------------------------------------*/

#ifndef __INTRINS_H__

#define __INTRINS_H__

#pragma SAVE

#if defined (__CX2__)

#pragma FUNCTIONS(STATIC)

/* intrinsic functions are reentrant, but need static attribute */

#endif

extern void          _nop_     (void);

extern bit           _testbit_ (bit);

extern unsigned char _cror_    (unsigned char, unsigned char);

extern unsigned int  _iror_    (unsigned int,  unsigned char);

extern unsigned long _lror_    (unsigned long, unsigned char);

extern unsigned char _crol_    (unsigned char, unsigned char);

extern unsigned int  _irol_    (unsigned int,  unsigned char);

extern unsigned long _lrol_    (unsigned long, unsigned char);

extern unsigned char _chkfloat_(float);

#if defined (__CX2__)

extern int           abs       (int);

extern void          _illop_   (void);

#endif

#if !defined (__CX2__)

extern void          _push_    (unsigned char _sfr);

extern void          _pop_     (unsigned char _sfr);

#endif

#pragma RESTORE

#endif

/*--------------------------------------------------------------------------

REG52.H

Header file for generic 80C52 and 80C32 microcontroller.

Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.

All rights reserved.--------------------------------------------------------------------------*/

#ifndef __REG52_H__

#define __REG52_H__

/*  BYTE Registers  */

sfr P0    = 0x80;

sfr P1    = 0x90;

sfr P2    = 0xA0;

sfr P3    = 0xB0;

sfr PSW   = 0xD0;

sfr ACC   = 0xE0;

sfr B     = 0xF0;

sfr SP    = 0x81;

sfr DPL   = 0x82;

sfr DPH   = 0x83;

sfr PCON  = 0x87;

sfr TCON  = 0x88;

sfr TMOD  = 0x89;

sfr TL0   = 0x8A;

sfr TL1   = 0x8B;

sfr TH0   = 0x8C;

sfr TH1   = 0x8D;

sfr IE    = 0xA8;

sfr IP    = 0xB8;

sfr SCON  = 0x98;

sfr SBUF  = 0x99;

/*  8052 Extensions  */

sfr T2CON  = 0xC8;

sfr RCAP2L = 0xCA;

sfr RCAP2H = 0xCB;

sfr TL2    = 0xCC;

sfr TH2    = 0xCD;

/*  BIT Registers  */

/*  PSW  */

sbit CY    = PSW^7;

sbit AC    = PSW^6;

sbit F0    = PSW^5;

sbit RS1   = PSW^4;

sbit RS0   = PSW^3;

sbit OV    = PSW^2;

sbit P     = PSW^0; //8052 only

/*  TCON  */

sbit TF1   = TCON^7;

sbit TR1   = TCON^6;

sbit TF0   = TCON^5;

sbit TR0   = TCON^4;

sbit IE1   = TCON^3;

sbit IT1   = TCON^2;

sbit IE0   = TCON^1;

sbit IT0   = TCON^0;

/*  IE  */

sbit EA    = IE^7;

sbit ET2   = IE^5; //8052 only

sbit ES    = IE^4;

sbit ET1   = IE^3;

sbit EX1   = IE^2;

sbit ET0   = IE^1;

sbit EX0   = IE^0;

/*  IP  */

sbit PT2   = IP^5;

sbit PS    = IP^4;

sbit PT1   = IP^3;

sbit PX1   = IP^2;

sbit PT0   = IP^1;

sbit PX0   = IP^0;

/*  P3  */

sbit RD    = P3^7;

sbit WR    = P3^6;

sbit T1    = P3^5;

sbit T0    = P3^4;

sbit INT1  = P3^3;

sbit INT0  = P3^2;

sbit TXD   = P3^1;

sbit RXD   = P3^0;

/*  SCON  */

sbit SM0   = SCON^7;

sbit SM1   = SCON^6;

sbit SM2   = SCON^5;

sbit REN   = SCON^4;

sbit TB8   = SCON^3;

sbit RB8   = SCON^2;

sbit TI    = SCON^1;

sbit RI    = SCON^0;

/*  P1  */

sbit T2EX  = P1^1; // 8052 only

sbit T2    = P1^0; // 8052 only      

/*  T2CON  */

sbit TF2    = T2CON^7;

sbit EXF2   = T2CON^6;

sbit RCLK   = T2CON^5;

sbit TCLK   = T2CON^4;

sbit EXEN2  = T2CON^3;

sbit TR2    = T2CON^2;

sbit C_T2   = T2CON^1;

sbit CP_RL2 = T2CON^0;

#endif

 

 

\n#其他问题#
#includereg52.h//#
#defineucharunsignedchar#
#ifndef__INTRINS_H__#
#pragmaSAVE#
#endif#
#ifndef__REG52_H__#
#endif\n#
嘉立创EDA

还没有评论,抢个沙发!