

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

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]