?? dr.c
字號:
#include <reg52.h>
#include <math.h>
sbit P33=P3^3;
#define Uchar unsigned char
#define Uint unsigned int
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x37};
unsigned int gei,shi,bai,qian,wan,swan,bwan,UF;
unsigned long int R,XIANSHI,JISHU;
void delay(unsigned char n )
{ // 延時子程序
Uchar i,j;
for(j=0;j<n;j++)
for(i=0;i<10;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
bit lcd_bz()
{ // 測試LCD忙碌狀態
bit result;
rs = 0; //使能
rw = 1; //讀
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0 & 0x80);
ep = 0;
return result;
}
lcd_wcmd(Uchar cmd)
{ // 寫入指令數據到LCD
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;
}
lcd_pos(Uchar pos)
{ //設定顯示位置
lcd_wcmd(pos|0x80);
}
lcd_wdat(Uchar dat)
{ //寫入字符顯示數據到LCD
while(lcd_bz());
rs = 1;
rw = 0;
ep = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
lcd_init()
{ //LCD初始化設定
lcd_wcmd(0x38); //
delay(1);
lcd_wcmd(0x0c); //
delay(1);
lcd_wcmd(0x06); //
delay(1);
lcd_wcmd(0x00); //清除LCD的顯示內容
delay(1);
}
void display() using 2 // 寫入數據到LCD
{
Uchar i;
EA=0;
disdate[7]=cedate%10+0x30; //顯示數據按位分離
disdate[8]=cedate%100/10+0x30;
disdate[9]=cedate%1000/100+0x30;
disdate[10]=cedate%10000/1000+0x30;
disdate[11]='.' ;
disdate[12]=cedate%100000/10000+0x30;
lcd_init(); // 初始化LCD
lcd_pos(0); //設置顯示位置為第一行的第5個字符
for(i=0;i<16;i++) //顯示提示信息
{
lcd_wdat(hintdate[i]);
}
//在第二行顯示數據
lcd_pos(0x40);
lcd_wdat(disdate[12]); //送顯示數據;
lcd_wdat(disdate[11]);
lcd_wdat(disdate[10]);
lcd_wdat(disdate[9]);
lcd_wdat(disdate[8]);
lcd_wdat(disdate[7]);
EA=1;
}
jishuan()
{ //dianzu();
XIANSHI=((JISHU*1.000)*10000)/(R*1.09861);//0.5US PF
// XIANSHI=12345678;
if(XIANSHI>9999999)
{
XIANSHI=XIANSHI/1000;
UF=1;
}
gei=XIANSHI%10;
shi=XIANSHI%100/10;
bai=XIANSHI%1000/100;
qian=XIANSHI%10000/1000;
wan=XIANSHI%100000/10000;
swan=XIANSHI%1000000/100000;
bwan=XIANSHI/1000000;
}
Delay(tc)
{ unsigned int i,j;
for(i=0;i<tc;i++)
{ for(j=0;j<80;j++)
;
}
}
LED()
{
P2=0x7F;
P0=table[bwan];
Delay(1);
P2=0XBF;
P0=table[swan];
Delay(1);
P2=0xDF;
P0=table[wan];
Delay(1);
P2=0xEF;
P0=table[qian];
Delay(1);
P2=0xF7;
P0=table[bai];
Delay(1);
P2=0xFB;
P0=table[shi];
Delay(1);
P2=0xFD;
P0=table[gei];
Delay(1);
P2=0xFE;
if(UF==1)
{P0=table[17];}
else
{P0=table[16];}
Delay(1);
}
void int1() interrupt 2 using 0
{
dd: if (P33==1)
{
TR1=1;
EA=0;
dd1: if(P33==0)
{
TR1=0;
JISHU=TH1;
// JISHU=JISHU&0X00FF;
JISHU<<=8;
JISHU=JISHU+TL1;
jishuan();
// EA=1;
}
else
{
goto dd1;
}
}
else
{goto dd;}
// EA=0;
}
void main(void)
{
SP=0X70;
IT1=1;
TMOD=0X10;
TL1=0X00;
TH1=0X00;
EX1=1;
TR1=0;
EA=1;
XIANSHI=0;
UF=0;
while(1)
{
desplay();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -