#include "stc15f2k60s2.h"#include "intrins.h"//#include "unit.h"unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char b,num; sbit SCL=P2^0;sbit SDA=P2^1;void Delay5us() { unsigned char i; _nop_(); i = 11; while (--i);} void init(){ P42=0; P27=1; P26=0; P25=0; P0=0XFF; P27=1; P26=0; P25=1; P06=0;}void delay(unsigned char m){ unsigned n,j; for(n=0;n<m;n++) for(j=0;j<919;j++);}void i2c_start(){ SCL = 1; SDA = 1; Delay5us(); SDA=0; Delay5us(); SCL=0; Delay5us();} void i2c_stop(){ SCL=1; SDA=0; Delay5us(); SDA=1; Delay5us();}char write_zijie(unsigned char x){ unsigned char i; for(i=0;i<8;i++) { SCL=0; Delay5us(); if(x&0x80==1) { SDA=1; } else { SDA=0; } x=x<< 1;//左移一位 SCL= 1; Delay5us(); } SDA=1; Delay5us(); SCL=1; while(SDA)//非應答 { delay(1); if(SDA==1) SCL=0; Delay5us(); return 0; } SCL=0; Delay5us(); return 1;} unsigned char read_zijie(){ unsigned char shou; unsigned char i; for(i=0;i<8;i++) { SCL = 1; Delay5us();//資料穩定 shou=shou<<1; if(SDA==1) {shou=shou|SDA; //假設傳送的shou=0,左移一位為0 或之后shou=1 Delay5us();} SCL=0; Delay5us(); } return shou;}void write_at24c02(unsigned char dizhi,unsigned char shuju){ i2c_start(); _nop_(); write_zijie(0xa0); //yingda(); write_zijie(dizhi); //可以是0-ff //yingda(); write_zijie(shuju); // yingda(); i2c_stop(); //delay(10);} unsigned char read_at24c02(unsigned char dizhi){ unsigned char temp; i2c_start(); write_zijie(0xa0); // yingda(); write_zijie(dizhi); //可以是0-ff // yingda(); i2c_start(); write_zijie(0xa1); //yingda(); temp=read_zijie(); i2c_stop(); return temp; delay(10);}void duanxuan(){ P42=0; P27=1; P26=1; P25=1; } void weixuan() { P42=0; P27=1; P26=1; P25=0; }void display(unsigned char m){ duanxuan(); P0=tab[m/10]; weixuan(); P0=0x01; delay(5); duanxuan(); P0=tab[m%10]; weixuan(); P0=0x02; delay(5);}void xinit(){TMOD = 0x00;TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;AUXR=0x00;EA=1;ET1=1;TR1=1;}void zhongduan() interrupt 3{ b++; if(b==20) { b=0; num++; if(num==61) num=0; }}//void dakai()//{// P42=0;// P25=0;// P27=1;// P26=0;// P0=num;}void main(){ init(); xinit(); write_at24c02(0x00,num); num=read_at24c02(0x00); while(1) { display(num); }}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/268694.html
標籤:疑難問題
上一篇:請大神幫忙,在線等待!
