乱写的程序,用的是论坛板子,真的搞不定了,读数据时,P1置什么数据,读出的就是什么数据,887数据口接的是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写数据函数 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的数据 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; //这里置什么数据,读出来的就是什么数据,晕死了 //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); }
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |