Thông báo

Collapse
No announcement yet.

Hỏi về đồng hồ thời gian thực 8051+LCD

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Hỏi về đồng hồ thời gian thực 8051+LCD

    Em đang làm đồ án môn học 1, có tham khảo code trên mạng, có đoạn code này các anh có biết thì giải thích dùm em.cho em hỏi hàm start, stop để làm gì (sda,scl,slc các chân DS1307 và dòng Data=Data|sda có tác dụng làm gì), câu lệnh màu đỏ có sai ko, tại sao lại có dấu ? nữa,học vixuli rồi mà ko thấy cái lệnh nào như vậy.
    Code:
    /**********************************************************************************/
      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
     //                    CAC CHUONG TRINH CON GIAO TIEP VOI RTC                   //
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
    // ca 2 dk start va stop dc tao ra boi	thiet bi chu
    void start_rtc(void) //dk start: 1 su cdoi tthai tu cao xuong thap tren duong sda trong khi
       {				 //duong scl dang o muc cao
    	scl=1;
    	sda=1;	
    	_nop_();
    	_nop_();
    	sda=0;
    	scl=0;
       }
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
    void stop_rtc(void)	//dk stop: 1 su cdoi trang thai tu muc thap len cao tren duong sda trong khi duong				
        {				// slc dang o muc cao
    	sda=0;
    	scl=1;
    	_nop_();
    	_nop_();
    	sda=1;
    	}
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
    void gui_rtc(unsigned char x)
        {	
    	unsigned char i;	
    	for(i=0;i<8;i++)
    	    {
    		sda=(x&0x80)? 1:0;  //dua bit du lieu ra chan SDA
    		scl=1;					  
    	   _nop_();
    	   _nop_();			  
    		scl=0;
    		x<<=1;			   //bit co trong so lon hon dc truyen truoc
    	    }
    	 scl=1; 			   //nhan bit ACK tu SLAVER	bao hieu ket thuc mot byte du lieu
    	_nop_();
    	_nop_();
    	 scl=0;
        }
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
    unsigned char nhan_rtc(void)
    {	
    	unsigned char Data,i;	
    	for(i=0;i<8;i++) // nhan vao 8 bit
    	  {
    		scl=1; 
    	 	Data<<=1;
    		Data=Data|sda;
    		scl=0;
         	} 	
    	sda=1;	//	  trong qua trinh doc mot chuoi byte tu slaver master gui bit ACK=> sda=1
    	scl=1; //master nhan/gui bit du lieu(sda) khi scl o muc cao
    	_nop_();
    	scl=0;
    	_nop_();//du lieu(sda) thay doi khi scl muc thap/
    	return Data;//tra gia tri cho ham
    }
    Last edited by doublemint_1; 03-04-2014, 18:11.

Về tác giả

Collapse

doublemint_1 Tìm hiểu thêm về doublemint_1

Bài viết mới nhất

Collapse

  • nguyendinhvan
    Trả lời cho Vấn đề về tốc độ quay
    bởi nguyendinhvan
    Sử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
    Hôm qua, 19:50
  • Andrea14
    Vấn đề về tốc độ quay
    bởi Andrea14
    Chào mọi người,

    Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
    12-12-2025, 12:42
  • bqviet
    Trả lời cho Đấu tắt điện cho máy tính bảng
    bởi bqviet
    Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
    06-12-2025, 17:17
Đang tải...
X