1.单片机外观图
2.相关原理图
3.案例目的
数字钟是通过计数模拟时钟,将计数值转换成时间形式,以格式时-分-秒在LED数码管上进行显示,并通过按键调节扫描频率,该实验分8个等级,通过对应8个二极管从左至右指示扫描频率越来越高的8中扫描频率。
4.源代码片段分析
4.1 导入头文件以及变量定义
#include<STC15F2K60S2.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit led_sel=P2^3;//发光二极管的负极
sbit key1= P3 ^2; //控制数码管扫描频率
/*---------变量定义---------*/
//七段码(段选),0-9
uchar duanxuan[] = {
0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f};
uchar const line = 0x40; //横杠的七段码
int key1ActionFlag = 0; //值为1时表示按键操作
char timeAddOneFlag = 0; //标记为1,此时需要秒+1
int ledActionFlag=0; //led灯的标志
uint ledOnFlag = 0; //led灯亮
char tubeOnFlag = 0; //数码管亮
int myDisplay[8] = {
0}; //数码管显示的内容
int ledValue = 1; //led显示的数值
uint currHour = 0;
uint currMinute = 0;
uint currSecond = 0;
uint interCount = 0;
uint keyDownTime = 0;
uint scanTime = 1; //扫描时间
uint currBit = 0; //当前显示的位
4.2 数码管代码片段
/**
* 数码管设置为显示指定的数值
*/
void changeAll(long num)