Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
wafer.jpg

Đồng hồ kỹ thuật số sử dụng vi điều khiển 89C52 / 89S52

E-mail Print PDF
digital clock.JPGĐây là một trong những projects đơn giản cho những người mớibắt đầu.Projects nhỏ này sẽ cung cấp cho bạn một sự hiểu biết rõ ràng về lập trình vi điều khiển.Projects đồng hồ kỹ thuật số bạn sẽ có cái nhìn sâu sắc về cách thức vi điều khiển được sử dụng để làm cho nó hoạt động như một đồng hồ kỹ thuật số.

digital clock.JPG
Thành phần:
  • 1 vi điều khiển89C52 (hoặc 89S52)
  • 2 tụ gốm -22pF
  • 1 switch
  • 1 tụ điện-10uF, 25V
  • 1 crystal oscillator-11.0592MHz
  • 16x2 màn hình LCD
  • 1 điện trở 10k
Sơ đồ mạch

schematic diagram.JPG

Code:
MÃ:
#include "REGX52.H"[/I][/B] [B][I]#include "delay.h"[/I][/B] [B][I]#include "lcd.h"[/I][/B] [B][I]void main(void)[/I][/B] [B][I]{[/I][/B] [B][I]int hr=0; /*initiate hour=0 */[/I][/B] [B][I]int min=0; /*initiate minutes=0 */[/I][/B] [B][I]int sec=0; /*initiate seconds=0 */[/I][/B] [B][I]P1=0xff; /*set port 1 as input port */[/I][/B] [B][I]P2=0x00; /*set port 2 as output port*/[/I][/B] [B][I]while(1)[/I][/B] [B][I]{ LCD_INIT(); /*initialize LCD*/[/I][/B] [B][I]if (P1_4==0)/*if P1_4 is grounded enter the 12hr loop */[/I][/B] [B][I]{[/I][/B] [B][I]for (sec=0;sec<60;sec )[/I][/B] [B][I]{[/I][/B] [B][I]LCD_DisplayNum(hr,2);[/I][/B] [B][I]LCD_STRING(":");[/I][/B] [B][I]LCD_DisplayNum(min,2);[/I][/B] [B][I]LCD_STRING(":");[/I][/B] [B][I]LCD_DisplayNum(sec,2);[/I][/B] [B][I]LCD_STRING(" (12 HR)");[/I][/B] [B][I]delay_sec(1);[/I][/B] [B][I]LCD_CLEAR();[/I][/B] [B][I]if (sec==59)[/I][/B] [B][I]{[/I][/B] [B][I]min=min 1;[/I][/B] [B][I]if(min==60)[/I][/B] [B][I]{[/I][/B] [B][I]if(hr==11&&min==60&&sec==59)[/I][/B] [B][I]{hr=0;min=0;sec=0;}[/I][/B] [B][I]else[/I][/B] [B][I]{ hr=hr 1;[/I][/B] [B][I]min=0;}[/I][/B] [B][I]}[/I][/B] [B][I]}[/I][/B] [B][I]} }[/I][/B] [B][I]else[/I][/B] [B][I]{[/I][/B] [B][I]if(P1_5==0) /*if P1_5 is grounded enter the 24hr loop */[/I][/B] [B][I]{[/I][/B] [B][I]for (sec=0;sec<60;sec )[/I][/B] [B][I]{[/I][/B] [B][I]LCD_DisplayNum(hr,2);[/I][/B] [B][I]LCD_STRING(":");[/I][/B] [B][I]LCD_DisplayNum(min,2);[/I][/B] [B][I]LCD_STRING(":");[/I][/B] [B][I]LCD_DisplayNum(sec,2);[/I][/B] [B][I]LCD_STRING(" (24 HR)");[/I][/B] [B][I]delay_sec(1);[/I][/B] [B][I]LCD_CLEAR();[/I][/B] [B][I]if (sec==59)[/I][/B] [B][I]{[/I][/B] [B][I]min=min 1;[/I][/B] [B][I]if(min==60)[/I][/B] [B][I]{[/I][/B] [B][I]if(hr==23&&min==60&&sec==59)[/I][/B] [B][I]{hr=0;min=0;sec=0;}[/I][/B] [B][I]else[/I][/B] [B][I]{ hr=hr 1;[/I][/B] [B][I]min=0;}[/I][/B] [B][I]}[/I][/B] [B][I]}[/I][/B] [B][I]} }}[/I][/B] [B][I]LCD_INIT();[/I][/B] [B][I]}[/I][/B] [B][I]}[/I][/B] [B][I]
 
 

Related Articles

Chat Zalo