基于AT89C51单片机的倒数计时器设计

这篇具有很好参考价值的文章主要介绍了基于AT89C51单片机的倒数计时器设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.设计任务

利用AT89C51单片机为核心控制元件,设计一个简易的数字电压表,设计的系统实用性强、操作简单,实现了智能化、数字化。

本设计采用单片机为主控芯片,结合周边电路组成LED彩灯的闪烁控制系统器,用来控制红色的LED闪烁发光,实现LED灯在倒计时结束后闪烁,该LED灯控制器可以通过开始键来控制倒计时系统的开始然后可以通过暂停按键控制倒计时的中止暂停,再次按下按键后倒计时继续直到倒计时结束,随后红色LED灯闪烁。

2. 设计要求

2.1系统方案论证

根据设计任务,分析设计系统的组成,给出实现设计任务的几种方案,分析比较几种设计方案的优略,本着尽量以软件代替硬件,同时力求电路简单,工作可靠的原则,确定总体设计方案。

2.2系统硬件电路设计

根据系统设计方案进行软、硬件的分配,软、硬件设计分别进行。硬件设计包括单片机最小系统和扩展接口及配置,硬件结构在设计时要选择合适的元器件,硬件电路要简洁、工作可靠,需用Proteus绘制整个系统的电路仿真原理图。

2.3软件设计

根据该系统要求的功能进行软件设计,简述软件的功能,并根据每个模块的功能绘制软件流程图,根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求加以注释。

结合数码管模块和键盘模块,设计一个可设置计时器和倒计时器功能的系统,通过数码管,单片机,嵌入式硬件

#include <REGX52.H>
#include <INTRINS.H>
// delay模块
void delay(unsigned int xms)
{
    unsigned char i, j;
    while (xms > 0, xms--)
    {
        i = 2;
        j = 239;
        do
        {
            while (--j)
                ;
        } while (--i);
    }
}
 
// END delay模块
 

void nixie(unsigned char location, i)
{
    switch (location)
    { // 0是灭
    case 1:
        P2_0 = 1;
        P2_1 = P2_2 = P2_3 = 0;
        break;
    case 2:
        P2_1 = 1;
        P2_0 = P2_2 = P2_3 = 0;
        break;
    case 3:
 
        P2_2 = 1;
        P2_0 = P2_1 = P2_3 = 0;
        break;
    case 4:
        P2_3 = 1;
        P2_0 = P2_1 = P2_2 = 0;
        break;
    }
 
    P0 = ~nixienum[i];
    delay(1);   //显示一段时间
    P0 = ~0x00; //段码清0,消影
}
// END 数码管显示模块
 
// START LED部分
sbit Led = 0xB1;      // P3_1//LED端口:
void Led_Delay500us()
{
    unsigned char i;
 
    _nop_();
    i = 247;
    while (--i)
        ;
}
 
void Led_Time(unsigned int ms)
{
    unsigned int i;
    for (i = 0; i < ms * 2; i++)
    {
        Led = !Led;
        Led_Delay500us();
    }
}
// END LED部分
 
// START 初始化函数
void init(int i, int j)
{
    nixie(3, i);
    nixie(4, j);
}
// END 初始化函数
 
// START 判断按键按下     //由于是模拟软件,delay不需要很高,这里的可以再调低点
unsigned char key()
{
    unsigned char KeyNumber = 0;
    if (P1_3 == 0)
    {
        delay(10);
        while (P1_3 == 0)
            ;
        delay(10);
        KeyNumber = 4;
    }
    if (P1_4 == 0)
    {
        delay(10);
        while (P1_4 == 0)
            ;
        delay(10);
        KeyNumber = 5;
    }
 
    return KeyNumber;
}
// END 判断按键按下
 
//暂停的原理是,k4按下,然后while卡滞,while内按键判断,再次按下k4继续,
int timeSecond = 30; //倒数的秒数
int flag = 1;        //用于暂停部分,第一次按下变0(代表触发暂停),第二次按下再变1(代表当前次暂停结束)
 
// START 数码管显示函数
void show()
{
    if (timeSecond < 10)
    {
        nixie(3, 10);
        nixie(4, timeSecond);
    }
    else
    {
        nixie(3, timeSecond / 10); //取二位秒数第一位,十位
        nixie(4, timeSecond % 10); //取二位秒数第二位,个位
    }
}
void display()
{
 
    for (timeSecond; timeSecond >= 0; timeSecond--)
    {
        int i = 0;
        if (key() == 4)
        {
            flag = 0;
            while (flag == 0)
            {
                if (key() == 4)
                    flag = 1;
                show();
            }
        }
        //这里每次show都会延时2毫秒(一次nixie一毫秒),那show出1秒,只要循环500次show就行
        // show其它部分也消耗时间,故再减少循环次数,此方法是为了视觉
        for (i; i < 25; i++)
        {
            show();
            delay(38); //减去show内两次nixie消耗的
        }
    }
}
// END 数码管显示函数
 
// START 主函数部分
void main()
{
    while (1)
    {
        init(3, 0); //初始化
        if (key() == 5)
        {
            display();
            init(3, 0);        //结束显示的时间
            Led_Time(3000); //显示完结到0时,3秒LED闪烁
            timeSecond = 30;
        }
    }
}
// END 主函数部分

完整代码点开链接私信  免费  获取。

【iBot机器人工作室的个人空间-哔哩哔哩】 https://b23.tv/ryUWVKa文章来源地址https://www.toymoban.com/news/detail-769383.html

到了这里,关于基于AT89C51单片机的倒数计时器设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于AT89C51单片机的温度计设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87773445 源码获取 主要内容: 设计一个简易温度计;要求电路实现如下功能: 设计通过单片机和数码管、led灯等组成,可以显示温度,并且可以显示大于零度的温度和小于零度的温度,还可以超出

    2024年02月05日
    浏览(22)
  • 基于AT89C51单片机的简易计算机设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87715642?spm=1001.2014.3001.5503 源码获取 主要内容: 本设计是以单片机AT89C51为核心的简易计算器设计,要通过芯片AT89C51实现计算器程序运行来完成加、减、乘和除的简单计算功能。 基本要求: 1、采

    2024年02月08日
    浏览(27)
  • 基于AT89C51单片机的电子万年历系统

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87708258 源码获取 主要内容: 电子万年历系统以实时时钟芯片DS1302和AT89C52单片机为主要研究对象,着重进行51单片机控制系统的设计研究和如何读取DS1302内部时钟信息的研究。以及运用18B20进行实

    2024年02月09日
    浏览(27)
  • 基于AT89C51单片机的电子秒表设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87775018添加链接描述 源码获取 主要内容: 设计一个电子秒表,至少具有以下功能:开始/暂停、记录、复位等。设计方案主要分为实验的系统分析,具体的设计方案,以及最终的测试,最终完成实

    2024年02月16日
    浏览(27)
  • 基于AT89C51单片机的电子时钟设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87779867?spm=1001.2014.3001.5503 源码获取 主要内容: 使用DS1302芯片作为计时设备,用6个7段LED数码管或者LCD162作为显示设备,实现时钟功能; 基本要求: (1)可以分别设定小时、分钟和秒,复位后时

    2024年02月06日
    浏览(24)
  • 基于AT89C51单片机的电子琴设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87848430?spm=1001.2014.3001.5503 源码获取 主要内容: 设计一个简易的电子琴,至少具有可以弹奏并发出不同的音调。电子琴方案主要分为实验的系统分析,具体的实施方案,以及最终的实验检验,最终

    2024年02月07日
    浏览(25)
  • 基于AT89C51单片机的智能浇花系统设计

    目 录 摘 要 I ABSTRACT I 1 绪论 1 1.1 课题背景和意义 1 1.1.1选题背景 1 1.1.2研究意义 1 1.2 国内外发展现状及趋势 2 1.3研究主要内容 3 2 总体设计方案 5 2.1 浇灌系统设计的需求 5 2.2 总体设计方案选定 5 3 系统硬件设计 6 3.1 LCD1602显示接口线路 6 3.2 ADC0832简介 6 3.3 湿度传感器介绍 7

    2024年02月05日
    浏览(22)
  • 基于AT89C51单片机的计算器设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87759134?spm=1001.2014.3001.5503 源码获取 主要内容: 本次设计所提出的一种基于单片机技术的简易计算器的方案,能更好的解决计算机计算的问题,随着数字生活的到来,单片机在生活中越来越重要,它

    2024年02月03日
    浏览(16)
  • 基于AT89C51单片机的交通灯设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87763760?spm=1001.2014.3001.5503 源码获取 主要内容: 设计一个能够控制十二盏交通信号灯的模拟系统,:利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。 基本要

    2024年02月08日
    浏览(26)
  • 基于AT89C51单片机的十字路口交通灯设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87849986?spm=1001.2014.3001.5503 源码获取 主要内容: 本项目中采用单片机 AT89C51为中心器件来设计交通信号灯控制器, 系统实用性强、操作简单、扩展性强。本设计系统就是由单片机最小系统、交通灯

    2024年02月09日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包