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#其他问题#

登录 或 注册 后才可以进行评论哦!
还没有评论,抢个沙发!