最近研究起来了单片机,用的是国产STC98C52芯片。
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
买了很长时间了可是一直在那里放着,今天重新拿出来写了一段电子时钟的C++程序,利用充电宝供电,当作电子时钟挺不错的。
功能:
4个七段数码管作为时钟显示的主体两个显示小时,两个显示分钟,8个LED灯作为秒数的闪烁,4个独立按键分别为hour+1,hour+10,minute+1,minute+10。
查询LED电路,接入端为P1^0到P1^7。
数码管采用了驱动芯片,接入端为P2^0到P2^3。
按键的接入端如图所示。
有了各种电路的接入端,我们利用keil进行编程。
/*
* Copyright (c) 2015,烟台大学计算机学院
* All right reserved.
* 作者:邵帅
* 文件:temp.c
* 完成时间:2015年05月29日
*/
#include
#define uchar unsigned char
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit key1=P3^5;//按键
sbit key2=P3^4;
sbit key3=P3^3;
sbit key4=P3^2;
static unsigned char second,minute,hour;
unsigned int tcount;
unsigned char m;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0xf8,0x80,0x90};
void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display()
{
P0=table[hour/10];
P2_0 = 0;
delay(5);
P2_0 = 1;
P0=(table[hour%10]& 0x7f);
P2_1 = 0;
delay(5);
P2_1 = 1;
P0=table[minute/10];
P2_2 = 0;
delay(5);
P2_2 = 1;
P0=table[minute%10];
P2_3 = 0;
delay(5);
P2_3 = 1;
}
void main(void)
{
unsigned int a;
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(key1==0)
{
if(key1==0) //确认按键被按下
{
while(!key1);//松手检测
hour++;
}
}
if(key2==0)
{
if(key2==0)
{
while(!key2);
hour=hour+10;
}
}
if(key3==0)
{
if(key3==0)
{
while(!key3);
minute++;
}
}
if(key4==0)
{
if(key4==0)
{
while(!key4);
minute=minute+10;
}
}
for(a=100;a>0;a--)
{
display();
}
}
}
void t0(void) interrupt 1 using 0
{
tcount++;
if(tcount==4000)
{tcount=0;
second++;
if(second==60)
{second=0;
minute++;
if(minute==60)
{minute=0;
hour++;
if(hour==24)
{hour=0;
}
}
}
P1=~P1;
}
}
打包成hex文件,进行烧录。
运行单片机!
本来计划使用小米的盒子当外壳的,后来发现盒子有点小,就先裸机了,反正5V电不着~
关键字:51单片机 电子时钟
引用地址:
利用51单片机制作的电子时钟
推荐阅读最新更新时间:2024-03-16 14:55
基于51单片机的波形发生器的课程设计
一、 设计任务和性能指标 1.1 设计任务 按要求设计波形发生器并完成相关功能: (1)运用单片机控制产生多种波形,这些波形包括三角波、方波、锯齿波等。 (2)信号的发生器所产生波形的频率、幅值均为连续可调。 扩展功能 在上位机将波形实时显示出来,用红外线遥控器实现上述功能,其它功能。 1.2 性能指标 (1)幅值0~5V可调 (2)频率0~1KHz可调 二、设计方案 采用AT89C51单片机和数模转换器PCF8591实现波形的产生。波形的产生方法是用AT89C51单片机执行波形程序,向PCF8591转换器的输入端输入相应的数据,从而在DA转换电路输出端再通过运放电路转换得到相应的电压波形。在AT89C51的P
[单片机]
如何编写51单片机音乐程序
正好做了一个音乐程序,贡献出来给你吧,希望你能满意。 电路连接很简单,在P3.0端口接个蜂鸣器,不过效果一般。如果想效果好点,就加个放大电路,接个小功率喇叭就行。因为这里发电路不方便,所以如果需要放大电路,可加我QQ:7468485。 音乐程序的设计原理和程序如下: 设计原理 ⑴ 总体原理: 乐曲中不同的音符,实质就是不同频率的声音。通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。 ⑵ 单片机产生不同频率脉冲信号的原理: 1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复
[单片机]
51单片机-外部中断测脉冲个数
1.外部中断的常用功能 外部中断经常用来记录外部脉冲的个数,也就是当我们使用外部中断1时,如果想记录自身单片机的某个引脚的下降沿个数,只需用杜邦线把这个引脚和P3.3连接即可。 比如P2.3引脚产生这样的电平无规律跳转,则下降沿的个数为5 所以我们就用外部中断1来实现记录K4按键从按下到松手的抖动过程中经历了多少个下降沿,把下降沿的个数显示在数码管上。 2.程序思路 我们定义一个16位的全局变量pulse用来记录P2.3下降沿的个数,在中断函数中的任务就是简单的pulse自加,因为引脚遇到下降沿就会进入中断函数。 在主函数里就是负责数码管显示即可。 3.代码 #include reg52.h #include
[单片机]
51单片机-初识原理图
在中学物理电路知识中,用简易电路图表示电路的实际连接情况,而在单片机硬件连接上,我们则用原理图来表示单片机的引脚与开发板板上的芯片等相关硬件的引脚通过电路板上的覆铜线两者相连。 1.回顾 单片机入门往往是从点亮一盏灯开始,我们在中学时做物理电路实验用电池点亮灯泡时,只是随便将电灯泡+电阻+开关+电池通过导线连成回路接通开关就可以点亮了。 中学点灯电路图 2.电压表示 在电子电路中,我们都是采用发光二极管(LED)来发挥它在单片机应用中的作用,LED引脚有正负极之分,接反则不亮。在单片机原理图中,我们习惯用“丁”字型图标加注释“+5”来表示此处的电压有5V,用长短不一样的四杠直线的图标来表示此处的电压为0V,又或者说此处
[单片机]
51单片机C语言中.c文件和.h文件的关联
1)h文件作用 1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明; 2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。 2)h文件里应该有什么 常量,结构,类型定义,函数,变量申明。 3)h文件不应该有什么 变量定义, 函数定义。 4)extern问题 对于变量需要extern; 对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加static。 5)include包含问题 虽然申明和类型定义可以重复,不过推荐使用条件编译。 #ifndef _FILENAME_H, #define _F
[单片机]
27-基于51单片机的空调温度控制系统
具体实现功能 系统由STC89C51单片机+LCD1602液晶显示屏+L298N控制模块+直流电机+DS18B20温度传感器构成。 具体功能: (1)实现L298N对电机的控制,利用LCD1602直接、清晰明了的显示温度; (2) 基于测得的温度实现对电机转速的控制(利用电机模拟空调变频系统); (3)在自动模式下,温度越高,占空越高,转数越快。手动模式下,通过按键可以实现电机转速的控制。 设计背景 近些年来,随着空调行业的迅速发展,极大的占领了市场。与风扇相比,空调有强大的制冷功能,可以快速有效地降低环境温度。然而,空调也存在不少问题,例如,夏天吹时间长了容易得空调病,室内和室外温度不平衡容易热感冒;同时,由于
[单片机]
初学51单片机——简单的流水灯程序
#include reg52.h #include intrins.h //调用库函数 #define uint unsigned int #define uchar unsigned char void delay(uint);//延时函数 uchar a,b; void main() { a=0xfe; while(1) { P1=a; delay(500); a=_crol_(a,1);//利用库函数实现流水灯的左移 } } void delay(uint z) { uint i,j; for(i=z;i 0;i--) for(j=110;j 0;j--); }
[单片机]
基于51单片机的室内甲醛测试系统
甲醛是一种具有刺激气味的无色气体,也是一种潜在的致癌物质,对人体健康有较大的危害,许多疾病的诱发都与甲醛有关,如哮喘,白血病等。甲醛浓度在每立方米空气中达到0.06-0.07mg/m3时,儿童就会发生轻微气喘。当室内空气中甲醛含量为0.1mg/m3时,就有异味和不适感。达到0.5mg/m3时,可刺激眼睛,引起流泪,它对人体健康的危害不容忽视。单片机具有通用性强、体积小、价格低、稳定可靠等突出优点,在智能产品、测控系统等领域得到广泛的应用。本文设计的测试仪可现场可直接显示甲醛浓度值。当其浓度值小于国家规定的标准值(可按键修改)时绿灯亮,可以入住,当超过规定的室内居住标准值时红灯亮开始报警提醒人们暂时不要入住。 1 硬件介绍
[工业控制]