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

还没有评论,抢个沙发!