本时钟使用 STC12C2052AD 单片机控制,采用共阳 4 位时钟数码管显示时间,并通过两个按键进行调时。当整点时,蜂鸣器会发出报时声。
所需材料
- STC12C2052AD 单片机一片
- 黄色共阳 4 位时钟数码管一块
- 6mm×6mm 按键两个
- 蜂鸣器一个
- 电阻若干
- 电容若干
- PCB 板一块
电路图
电路图如下所示:
程序
程序如下:
include <reg52.h> sbit SEG1 = P2^0; sbit SEG2 = P2^1; sbit SEG3 = P2^2; sbit SEG4 = P2^3; sbit SEG5 = P2^4; sbit SEG6 = P2^5; sbit SEG7 = P2^6; sbit SEG8 = P2^7; sbit KEY1 = P3^0; sbit KEY2 = P3^1; sbit BUZZER = P3^6; unsigned char code table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x80, 0x40 }; void display(unsigned char num) { SEG1 = table[num] & 0x01; SEG2 = table[num] & 0x02; SEG3 = table[num] & 0x04; SEG4 = table[num] & 0x08; SEG5 = table[num] & 0x10; SEG6 = table[num] & 0x20; SEG7 = table[num] & 0x40; SEG8 = table[num] & 0x80; } void delay(unsigned int n) { while (n--) { for (unsigned int i = 0; i < 100; i++); } } void main() { unsigned char hour = 0; unsigned char minute = 0; unsigned char second = 0; while (1) { display(hour / 10); delay(10); display(hour % 10); delay(10); display(0x80 | ':'); delay(10); display(minute / 10); delay(10); display(minute % 10); delay(10); display(0x80 | ':'); delay(10); display(second / 10); delay(10); display(second % 10); delay(10); if (second == 59) { second = 0; minute++; } if (minute == 59) { minute = 0; hour++; } if (hour == 24) { hour = 0; } if (KEY1 == 0) { if (hour < 23) { hour++; } } if (KEY2 == 0) { if (minute < 59) { minute++; } } if (second == 0) { BUZZER = 1; delay(1000); BUZZER = 0; } } }
制作步骤
- 绘制 PCB 板。
- 焊接元件。
- 烧录程序。
- 装入外壳。
注意事项
- 在焊接元件时,注意正负极不要接错。
- 在烧录程序时,选择正确的 COM 口和波特率。
- 在使用时钟时,请注意校准时间。
使用说明
- 使用按键 1 调节小时。
- 使用按键 2 调节分钟。
- 当整点时,蜂鸣器会发出报时声。
总结
本时钟是一款实用且易于制作的项目,它可以帮助您准确地掌握时间。通过使用数码管显示和单片机控制,该时钟既美观又可靠。本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!
添加新评论