仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:
- #include <REGX52.H>
- #define uchar unsigned char
- #define uint unsigned int
- #define data8 P0
- sbit rst=P1^0;
- sbit sck=P1^1;
- sbit sda=P1^2;
- sbit rs=P1^3;
- sbit rw=P1^4;
- sbit e=P1^5;
- sbit key1=P2^0;
- sbit key2=P2^1;
- sbit key3=P2^2;
- sbit start= P2^3;
- sbit ale=P1^6;
- sbit eoc=P1^7;
- sbit oe=P2^4;
- uchar table1[]="TIME:";
- uchar table2[]="DATE:";
- uchar table[]="0123456789:-";
- uchar code chuzhi[]={0x80,0x34,0x18,0x15,0x04,0x04,0x21,0x00};
- uchar code dizhi[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x80};
- uchar code chushi1602[]={0x38,0x0c,0x01};
- uchar chuncu[7]={0};
- uchar song,temp1,adc;
- void delayms(uint xms)
- {
- uchar i;uint j;
- for(j=xms;j>0;j--)
- for(i=110;i>0;i--);
- }
- void ad();
- void t0()
- {
- TMOD = 0x01;
- TH0 = 0x0FE;
- TL0 = 0x0C;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- void zl1602(uchar zlduan)
- {
- rs=0;
- rw=0;
- data8=zlduan;
- delayms(1);
- e=1;
- delayms(5);
- e=0;
- }
- void sj1602(uchar sjduan)
- {
- rs=1;
- rw=0;
- data8=table[sjduan];
- delayms(1);
- e=1;
- delayms(5);
- e=0;
- }
- void sc1602(uchar sjduan)
- {
- rs=1;
- rw=0;
- data8=sjduan;
- delayms(1);
- e=1;
- delayms(5);
- e=0;
- }
- void cs1602()
- {
- uchar i;
- for(i=0;i<3;i++)
- {
- zl1602(chushi1602[i]);
- }
- }
- void cs1302()
- {
- rst=0;
- sck=0;
- rst=1;
- }
- void xie1302(uchar temp) //1000 0000
- {
- uchar i;
- for(i=8;i>0;i--)
- {
- sda=temp&0x01; //0
- sck=0;
- sck=1;
- temp>>=1; //0100 0000
- }
- }
- uchar song1302()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
-
- if(sda)
- {
- song|=0x80;
- }
- sck=1;
- sck=0;
- song>>=1;
- }
- return(song);
- }
復制代碼
全部資料51hei下載地址:
ds1302+仿真.zip
(53.81 KB, 下載次數: 48)
2021-4-24 17:39 上傳
點擊文件名下載附件
歡迎打賞
|