找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3454|回復(fù): 0
收起左側(cè)

[原創(chuàng)]DS1302 求助

[復(fù)制鏈接]
ID:37854 發(fā)表于 2012-5-17 00:04 | 顯示全部樓層 |閱讀模式
一套程序下來LCD 就顯示第一行 : : 第二行00:00:00 然后不動(dòng)了 預(yù)計(jì)是LCD 顯示沒問題 問題應(yīng)該是 處在 DS1302 的 操作上 苦想 幾日都無法找出原因 才到此地求救,求各位高手指點(diǎn)一二。謝謝。 #include #define uchar unsigned char #define uint unsigned int sbit rs=P2^4; sbit rw=P2^5; sbit e=P2^6; sbit clk=P2^3; sbit ds=P2^2; sbit rst=P2^1; sbit bf=P0^7; uchar code shu[]="0123456789"; uchar code yihang[]=" - - "; uchar code erhang[]=" : : "; uchar i,j,miao,fen,shi,ri,yue,nian,xingqi,dsshu; void delayus(unsigned char n) { unsigned char i; for(i=0;i0;x--) for(y=100;y>0;y--); } bit lcdmang(void) //LCD 忙=1 不忙=0 { bit mang; rs=0; rw=1; e=1; delayus(4); mang=bf; e=0; return mang; } void lcddate(uchar date)//寫數(shù)據(jù) { while(lcdmang()==1); rs=1; rw=0; P0=date; delay(5); e=1; delay(5); e=0; } void lcdcom(uchar com)//寫指令 { while(lcdmang()==1); rs=0; rw=0; P0=com; delay(5); e=1; delay(5); e=0; } void init() { i=0; lcdcom(0x38); lcdcom(0x0c); lcdcom(0x06); lcdcom(0x01); lcdcom(0x80+0x00); while(yihang!='\0') { lcddate(yihang); i++; delay(20); } lcdcom(0x80+0x40); i=0; while(erhang!='\0') { lcddate(erhang); i++; delay(20); } i=0; } /*LCD顯示子程序部分*/ /*1302子程序部分*/ void dsxie(uchar com,uchar date)//com為命令,date為數(shù)據(jù) { rst=0; clk=0; delay(2); rst=1; delay(2); for(i=0;i<8;i++) { clk="0; " delayus(2); ds="com&0x01; " delayus(2); clk="1; " delayus(2); com="com" >>=1; } for(i=0;i<8;i++) { clk="0; " delayus(2); ds="date&0x01; " delayus(2); clk="1; " delayus(2); date="date" >>=1; delayus(2); } rst=0; } unsigned char dsdu(uchar com) //com為命令 返回讀出數(shù)據(jù) { unsigned char dsshu; rst=0; clk=0; rst=1; delayus(2); for(i=0;i<8;i++) { clk="0; " delayus(2); ds="com&0x01; " delayus(2); clk="1;" delayus(2); com="com" >>=1; delayus(2); } for(i=0;i<8;i++) { dsshu="dsshu" >>1; delayus(2); if(ds==1) dsshu|=0x80; delayus(2); clk=1; delayus(2); clk=0; delayus(2); } rst=0; return dsshu; } void dsinit() //向LCD 寫初始化數(shù)據(jù) { dsxie(0x8e,0x00); dsxie(0x80,0x00);//miao dsxie(0x82,0x00);//fen dsxie(0x84,0x00);//shi dsxie(0x86,0x00);//ri dsxie(0x88,0x00);//yue dsxie(0x8a,0x01);//xingqi dsxie(0x8c,0x11);//nian } dsdudll(void)// 1302全部讀出 { miao=(dsdu(0x81)&0x7f)/16*10+(dsdu(0x81)&0x7f)%16; fen=(dsdu(0x83)&0x7f)/16*10+(dsdu(0x83)&0x7f)%16; shi=(dsdu(0x85)&0x7f)/16*10+(dsdu(0x85)&0x7f)%16; ri=(dsdu(0x87)&0x7f)/16*10+(dsdu(0x87)&0x7f)%16; yue=(dsdu(0x89)&0x7f)/16*10+(dsdu(0x89)&0x7f)%16; nian=dsdu(0x8d)/16*10+dsdu(0x8d)%16; } void main() { init(); dsinit(); while(1) { dsdudll(); lcdcom(0x80+0x46); lcddate(shu[miao/10]); lcddate(shu[miao%10]); lcdcom(0x80+0x43); lcddate(shu[fen/10]); lcddate(shu[fen%10]); lcdcom(0x80+0x40); lcddate(shu[shi/10]); lcddate(shu[shi%10]); } }
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表