亂寫的程序,用的是論壇板子,真的搞不定了,讀數(shù)據(jù)時,P1置什么數(shù)據(jù),讀出的就是什么數(shù)據(jù),887數(shù)據(jù)口接的是P1口
程序如下:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
void delay(uchar);
void ds_write(uchar,uchar);
uchar ds_read(uchar);
void set_time();
void init();
sbit ds_cs = P3^0;
sbit ds_as = P3^1;
sbit ds_rw = P3^2;
sbit ds_ds = P3^3;
sbit wei=P2^7;
sbit duan=P2^6;
uchar code table_d[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};
uchar code table_w[]={
0xfe,
0xfd,
0xfb,
0xf7,
0xef,
0xdf,
0xbf,
0x7f,
};
void main()
{
uchar miao;
init();
while(1)
{
miao=ds_read(0x00);
wei=1;
P0=table_w[0];
wei=0;
duan=1;
P0=table_d[miao/10];
duan=0;
P0=0xff;
delay(1);
wei=1;
P0=table_w[1];
wei=0;
duan=1;
P0=table_d[miao%10];
duan=0;
P0=0xff;
delay(1);
}
}
void init()
{
ds_write(0x0a,0x20);
ds_write(0x0b,0x86);
ds_write(0x0b,0x06);
set_time();
}
void delay(uchar z)
{
uchar x,y;
for(x=0;x<z;x++)
{
for(y=0;y<200;y++);
}
}
//往DS12C887寫數(shù)據(jù)函數(shù)
void ds_write(uchar add,uchar date)
{
ds_cs=0;
ds_ds=1;
ds_rw=1;
ds_as=1;
//P1=0xff;
P1=add;
ds_as =0;
ds_rw=0;
P1=0xff;
//delay(1);
P1=date;
ds_rw=1;
ds_as=1;
ds_cs=1;
}
//讀取DS12C887的數(shù)據(jù)
uchar ds_read(uchar add)
{
uchar a;
ds_rw=1;
ds_ds=1;
ds_as=1;
//P1=0xff;
ds_cs=0;
P1=add;
ds_as=0;
ds_ds=0;
P1=0xff; //這里置什么數(shù)據(jù),讀出來的就是什么數(shù)據(jù),暈死了
//delay(1);
a=P1;
//delay(1);
ds_ds=1;
ds_as=1;
ds_cs=1;
return a;
}
void set_time()
{
ds_write(0,0);
ds_write(1,0);
ds_write(2,48);
ds_write(3,0);
ds_write(4,14);
ds_write(5,0);
ds_write(6,6);
ds_write(7,31);
ds_write(8,7);
ds_write(9,10);
}
|