当前位置: 首页 > news >正文

数码管静态显示一位字符(STC89C52单片机)

#include <reg52.h>

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

//用数组来存储数码管的真值表,数组将在下一章详细介绍
unsigned char code LedChar[] = {
    0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};

void main()
{
    unsigned char cnt = 0;  //记录T0中断次数
    unsigned char sec = 0;  //记录经过的秒数

    ENLED = 0;    //使能U3,选择数码管DS1
    ADDR3 = 1;
    ADDR2 = 0;
    ADDR1 = 0;
    ADDR0 = 0;
    TMOD = 0x01;  //设置T0为模式1
    TH0  = 0xB8;  //为T0赋初值0xB800
    TL0  = 0x00;
    TR0  = 1;     //启动T0
    
    while (1)
    {
        if (TF0 == 1)        //判断T0是否溢出
        {
            TF0 = 0;         //T0溢出后,清零中断标志
            TH0 = 0xB8;      //并重新赋初值
            TL0 = 0x00;
            cnt++;           //计数值自加1
            if (cnt >= 50)   //判断T0溢出是否达到50次
            {
                cnt = 0;            //达到50次后计数值清零
                P0 = LedChar[sec];  //当前秒数对应的真值表中的值送到P0口
                sec++;              //秒数记录自加1
                if (sec >= 16)      //当秒数超过0x0F(15)后,重新从0开始
                {
                    sec = 0;
                }
            }
        }
    }
}
 

相关文章:

  • 【架构】-- StarRocks 和 Doris 介绍与选型建议
  • 使用open3d将pcd点云按照颜色等级分块显示并令其随颜色变化播放
  • 【EasyPan】项目常见问题解答(自用持续更新中…)
  • 论文笔记-arXiv2025-FilterLLM
  • 【论文阅读23】-地下水预测-TCN-LSTM-Attention(2024-11)
  • 24.中医知识问答删除历史对话功能前端代码实现
  • 基于Redis实现高并发抢券系统的数据同步方案详解
  • candence allegro 17.4 如何永久更改快捷键
  • LangGraph(一)——QuickStart样例中的第一步
  • Lucky配置反向代理+Https安全访问AxureCloud服务(解决证书续签问题)
  • 基于Hadoop的音乐推荐系统(源码+lw+部署文档+讲解),源码可白嫖!
  • Linux基础学习--linux的文件权限与目录配置
  • C++ 封装成DLL,C#调用
  • Linux卸载删除gitlab
  • JVM内存模型与垃圾回收
  • cgroup threaded功能例子
  • 工厂模式:简单工厂模式
  • 使用纯前端技术html+css+js实现一个蔬果商城的前端模板!
  • 【LeetCode】1.两数之和
  • 重新定义户外防护!基于DeepSeek的智能展开伞棚系统技术深度解析
  • 护航民营企业出海,上海设37家维权工作站、建立近百人专家团队
  • 福建浯屿岛垃圾排海追踪:堆存已清理,当地称今后会日产日清日运
  • 第一集|《蛮好的人生》蛮好,《悬镜》挺玄
  • 从板凳席到指挥台,横扫广东男篮的少帅潘江究竟有何神奇
  • 梅德韦杰夫:如果欧盟和美国 “撒手不管”,俄罗斯会更快解决俄乌冲突
  • 网信部门持续整治利用未成年人形象不当牟利问题