|
#include <reg52.h>
#include <intrins.h> //°üo¬NOP¿ÕÖ¸áîoˉêy_nop_
#include<stdio.h>
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef bit BOOL;
#define uchar unsigned char
#define uint unsigned int
sbit eoc=P3^0;
sbit oe =P3^1;
sbit st =P3^2;
sbit clk=P3^6;
sbit rs=P0^7;
sbit rw=P0^6;
sbit ep=P0^5;
uchar code table[]="0123456789";
uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x0,0x0};//êyÂë1ü12òõ¼¶ÏÔê¾0¡«9
uint ad_0809,a1,a2,a3;
uchar out;
void delaynms(uint x);
void display();
void ad0809();
void delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void delay (int m)
{
unsigned char i,j;
for (i=0;i<m;i++)
for (j=0;j<253;j++);
}
BOOL lcd_bz()
{
BOOL result;
rs=0; // ¶áÃ|DÅoÅ
rw=1;
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (BOOL)(P2&0x80);
ep=0;
result ;
}
lcd_wcmd (BYTE cmd)
{
while (lcd_bz());
rs=0;
rw=0;
ep=0;
_nop_();
_nop_();
P2=cmd ;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
lcd_pos (BYTE pos)
{
lcd_wcmd (pos|0x80);
}
lcd_wdat (BYTE dat)
{
while (lcd_bz());
rs=1;
rw=0;
ep=0;
_nop_();
_nop_();
P2=dat ;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
lcd_init ()
{
lcd_wcmd (0x38);
delay (1);
lcd_wcmd (0x0c);
delay (1);
lcd_wcmd (0x06);
delay (1);
lcd_wcmd (0x01);
delay (1);
}
void main()
{
lcd_init ();
delay (10);
TMOD=0X01;
TH0=(65536-2)/256;
TL0=(65536-2)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
ad0809();
ad_0809=out;
display();
lcd_pos (7);
lcd_wdat(table[a1]);
lcd_pos (8);
lcd_wdat(table[a2]);
lcd_pos (9);
lcd_wdat(table[a3]);
}
}
void T0_time()interrupt 1
{
TH0=(65536-2)/256;
TL0=(65536-2)%256;
clk=~clk;
}
void delaynms(uint x)
{
while(x-->0)
{
unsigned char k;
for(k=10;k>0;k--);
}
}
void display()
{
a1=(ad_0809*49/25)/100; //the highest bit
a2=(ad_0809*49/25)/10%10;
a3=(ad_0809*49/25)%100%10;
}
void ad0809()
{
P1=0xff;//input
oe=0;
st=0;
st=1;//Çå0
st=0;//Æô¶ˉ
delaynms(1);
while(!eoc); //eocμèóúáãμÄ»°£¬ÔúÕaàïμè′yÖ±μ½eoc=1£¬½áêøÑ-»·£¬ÏòÏÂÖ′DD
oe=1;
out=P1;
oe=0;
}
|
|