功能: 1、使用单片机内部定时器实现时分秒计时
2、能够设置闹钟时间
3、闹钟时间到,蜂鸣器响
4、使用LCD1602显示时间
部分程序: #include 'reg51.h'
#include 'lcd1602.h'
#define uchar unsigned char
#define uint unsigned int
sbit beep=P3^2;//蜂鸣器
sbit k1=P1^0;//按钮
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7;
uchar shi=11,fen=59,miao=50;//时间
uchar nao_shi=12,nao_fen=0;
uchar xian1[]='00:00:00';
uchar xian2[]='00:00';
uchar time=0;
//延时
void delay(uint i)
{
while(i--);
}
//主函数
void main()
{
beep=0;
init_1602();
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
if(!k1)//小时
{
delay(1000);
if(!k1)
{
if(shi<23)
shi++;
while(!k1);
}
}
if(!k2)
{
delay(1000);
if(!k2)
{
if(shi>0)
shi--;
while(!k2);
}
}
if(!k3)//分钟
{
delay(1000);
if(!k3)
{
if(fen<59)
fen++;
while(!k3);
}
}
if(!k4)
{
关键字:51单片机 简易时钟
引用地址:
基于51单片机的简易时钟设计
推荐阅读最新更新时间:2024-11-11 10:56
一种基于C51单片机的非抢占式的操作系统架构
摘 要:从Keil C51的内存空间管理方式入手,着重讨论实时操作系统在任务调度时的重入问题,分析一些解决重入的基本方式与方法:分析实时操作系统任务调度的占先性,提出非占先的任务调度是能更适合于Keil C51的一种调度方式。为此,构造这一实时操作系统,并有针对性地介绍此系统的堆管理方法、任务的建立以厦任务的切换等。 关键词:51单片机 实时操作系统 任务重八调度 目前,大多数的产品开发是在基于一些小容量的单片机上进行的。51系列单片机,是我国目前使用最多的单片机系列之一,有非常广大的应用环境与前景,多年来的资源积累,使51系列单片机仍是许多开发者的首选。针对这种情况,近几年涌现出许多基于51内核的扩展芯片,功能越来越齐全,速
[单片机]
C51单片机与PC串口通信的单片机部分程序
注意波特率是9600 功能:电脑通过串口给单片机发一个字节,单片机收到后又给电脑发回去 、#include #define uchar unsigned char #define uint unsigned int uint temp; bit flag; void init_ser1(); main() { init_ser1(); while(1) { if(RI==1) { P1=SBUF; RI=0; } if(flag==1) { ES=0;//暂时关闭接收 flag=0; SBUF=temp; while(!TI);//等待发送完毕 TI=0; ES=1; } } } void sel() interrup
[单片机]
51单片机点亮LED灯、流水灯
2-1点亮一个LED灯 1.首先在keil中新建一个工程,这里需要注意,将所写的工程可以统一一个地方进行存储,这样方便查找。之后再右击添加新文件 2.首先右击代码行,引用文件 3.之后再编写主函数 4.以其中亮一个LED灯为例,编写程序如下: P2=0xFE;//1111 1110 转换成十六进制0x表示前缀代表的是十六进制数 P2=0xFE;//1111 1110 下载程序后到STC-ISP中选择单片机的型号,串口号,打开相应的程序文件,进行下载编程 5.实现效果 6.当然,也可以加上循环语句表示让其一直循环下去,实现效果是一样的 通过点亮第一个LED灯,可以知道以八个一组为例改变010
[单片机]
基于51单片机的太阳能路灯控制系统设计方案
简介:太阳能路灯控制系统:51单片机练手项目,简单可复制。 带太阳能充电功能,oled显示, 白天根据光强判断开关灯晚上开灯,二级菜单可以设置时间日期。 太阳能充电:传统锂电池充电芯片TP4056,使用6V太阳能板,给3.7V18650电池充电。 经过资料显示 18650电池尽量不要让其电压低于2.7V,所以后级供电电路(5V升压电路)MT3608启动引脚EN脚 连接了LM393制成的电压比较器。和电池电压比较,电池电压低于2.7v,MT3608启动脚拉低关断。 供电:使用升压芯片MT3608给单片机供电,让电池电压稳定在5.1V,来提供稳定电压。 #include reg52.h #include oled.h #i
[单片机]
51单片机定时器设置入门 (STC89C52RC)
51单片机定时器设置入门 (STC89C52RC) STC单片机定时器设置 STC单片机定时器的使用可以说非常简单,只要掌握原理,有一点的C语言基础就行了。要点有以下几个: 1. 一定要知道英文缩写的原形,这样寄存器的名字就不用记了。 理解是最好的记忆方法。好的教材一定会给出所有英文缩写的原形。 2.尽量用形像的方法记忆 比如TCON和TMOD两个寄存器各位上的功能,教程一般有个图表,你就在学习中不断回忆那个图表的形像 TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER) 定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存
[单片机]
51单片机教程:按键输入、矩阵按键(按键巧用)proteus仿真+keil
IO口原理 (P1口最简单,所以这里只介绍P1,其他IO口原理类似) P1口原理 可以看到的是P1口的工作原理比较简单,首先用P1口做输入输出较为好理解。 1、内部总线:就是内部P1.X位寄存器的值,比如说内部总线P1.0上电压为0V,那么对应P1.0=0;内部总线P1.0上电压为5V,那么对应P1.0=1; 2、P1.X引脚:对应单片机引脚接口 3、读锁存器:读锁存器为1,允许读锁存器。为0,不允许读锁存器。 4、读引脚:为0不允许读引脚,为1允许读引脚 5、写锁存器:提供一个上升沿锁存数据(写数据到单片机IO口上时自动提供一个脉冲) 几个核心问题: 1、读锁存器与读引脚区别是什么? 读锁存器:读锁存器Q的电平 读引脚:
[单片机]
TFT画出矩形
以51单片机为平台,用TFT画出实心矩形! 以下程序关键在于自己的应用,有多余的经历则可以深入研究! 关键在于用!!! 希望能给大家带来帮助 #include reg52.h #define uint unsigned int #define uchar unsigned char #define TYPE_LCD_DATA 1 #define TYPE_LCD_COMMAND 0 #define LCD_SIZE_X 128 #define LCD_SIZE_Y 160 #define DATA P0 sbit LCD_RST = P2^7; //RST 引脚定义 sbit LCD_RD
[单片机]
MCS_51单片机与8255A的接口设计
所谓可编程的接口芯片是指其功能可由微处理机的指令来加以改变的接口芯片,利用编程的方法,可以使一个接口芯片执行不同的接口功能。目前,各生产厂家已提供了很多系列的可编程接口,MCS-51单片机常用的两种接口芯片是8255以及8155。 8255和MCS-51相连,可以为外设提供三个8位的I/O端口:A口、B口和C口,三个端口的功能完全由编程来决定。 1. 8255的内部结构和引脚排列 下图7为8255的内部结构和引脚图。 (1)A口、B口和C口。A口、B口和C口均为8位I/O数据口,但结构上略有差别。A口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲/锁存器组成。B口由一个8位的数据输出缓冲/锁存器和一个8位的
[单片机]