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

org的域名网站全能网站建设完全自学手册

org的域名网站,全能网站建设完全自学手册,去大连需要下载哪些软件,上海广告传媒有限公司1. 项目简介 在CT107D单片机综合训练平台上,利用定时器T0、数码管模块和2个独立按键(J5的2-3短接),设计一个具有清零、暂停、启动功能的秒表。秒表显示格式为:分-秒-0.05秒(即50ms)&#xff0c…

1. 项目简介

在CT107D单片机综合训练平台上,利用定时器T0、数码管模块和2个独立按键(J5的2-3短接),设计一个具有清零、暂停、启动功能的秒表。秒表显示格式为:分-秒-0.05秒(即50ms),例如 08-26-18 表示8分26秒900毫秒。

  • 独立按键S4:暂停/启动

  • 独立按键S5:清零

  • 按键均为按下有效。

本文将详细介绍代码实现,并提供完整的代码示例。


2. 硬件设计

2.1 硬件模块

  • 单片机:STC89C52RC

  • 数码管模块:用于显示时间,格式为 分-秒-0.05秒

  • 独立按键

    • S4:暂停/启动

    • S5:清零

  • 定时器T0:用于计时,每50ms触发一次中断。

2.2 硬件连接

  • 数码管段选接P0口,位选接P2口。

  • 独立按键S4接P3^3,S5接P3^2。


3. 软件设计

3.1 功能设计

  • 定时器T0:每50ms触发一次中断,用于更新秒表时间。

  • 数码管显示:显示当前时间,格式为 分-秒-0.05秒

  • 按键功能

    • S4:按下后切换秒表的启动和暂停状态。

    • S5:按下后清零秒表时间。

3.2 代码实现

以下是完整的代码实现:

#include <REGX52.H>

// 数码管段码表
unsigned char code SMG[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, 0xbf, 0x7f};

// 时间变量
unsigned char t_min = 0;  // 分钟
unsigned char t_s = 0;    // 秒
unsigned char t_ms = 0;   // 0.05秒单位

// 按键定义
sbit S4 = P3^3;  // 暂停/启动
sbit S5 = P3^2;  // 清零

// 选择HC573锁存器
void SelectHC573(unsigned char channel)
{
    switch(channel)
    {
        case 4: P2 = (P2 & 0x1f) | 0x80; break;
        case 5: P2 = (P2 & 0x1f) | 0xa0; break;
        case 6: P2 = (P2 & 0x1f) | 0xc0; break;
        case 7: P2 = (P2 & 0x1f) | 0xe0; break;
    }
}

// 数码管显示函数
void Display_SMG(unsigned char value, unsigned char site)
{
    SelectHC573(6);  // 选择位选锁存器
    P0 = 0x01 << site;  // 选择数码管位
    SelectHC573(7);  // 选择段选锁存器
    P0 = value;  // 显示段码
}

// 显示时间函数
void Display_Timer()
{
    Display_SMG(SMG[t_ms % 10], 7);  // 显示0.05秒个位
    Display_SMG(SMG[t_ms / 10], 6);  // 显示0.05秒十位
    Display_SMG(SMG[16], 5);         // 显示分隔符“-”
    Display_SMG(SMG[t_s % 10], 4);   // 显示秒个位
    Display_SMG(SMG[t_s / 10], 3);   // 显示秒十位
    Display_SMG(SMG[16], 2);         // 显示分隔符“-”
    Display_SMG(SMG[t_min % 10], 1); // 显示分钟个位
    Display_SMG(SMG[t_min / 10], 0); // 显示分钟十位
}

// 定时器初始化函数
void InitTimer()
{
    TMOD = 0x01;  // 定时器T0模式1
    TL0 = (65535 - 50000) % 256;  // 50ms定时初值
    TH0 = (65535 - 50000) / 256;
    
    ET0 = 1;  // 使能定时器T0中断
    EA = 1;   // 使能总中断
    TR0 = 1;  // 启动定时器T0
}

// 定时器T0中断服务函数
void ServiceTimer() interrupt 1
{
    TL0 = (65535 - 50000) % 256;  // 重装初值
    TH0 = (65535 - 50000) / 256;
    
    t_ms++;  // 0.05秒单位加1
    if (t_ms == 20)  // 1秒到
    {
        t_s++;  // 秒加1
        t_ms = 0;
        if (t_s == 60)  // 1分钟到
        {
            t_min++;  // 分钟加1
            t_s = 0;
            if (t_min == 100) t_min = 0;  // 分钟溢出清零
        }
    }
    
    Display_Timer();  // 刷新数码管显示
}

// 按键扫描函数
void Scanf_Key()
{
    static bit key_state = 1;  // 按键状态
    if (S4 == 0 && key_state)  // 检测S4按下
    {
        Delay(20);  // 简单去抖
        if (S4 == 0)
        {
            TR0 = ~TR0;  // 切换启动/暂停
            key_state = 0;
        }
    }
    else if (S4 == 1)
    {
        key_state = 1;  // 按键释放
    }

    if (S5 == 0)  // 检测S5按下
    {
        Delay(20);  // 简单去抖
        if (S5 == 0)
        {
            t_min = 0;  // 清零时间
            t_s = 0;
            t_ms = 0;
            while (S5 == 0);  // 等待按键释放
        }
    }
}

// 主函数
void main()
{
    InitTimer();  // 初始化定时器
    while (1)
    {
        Scanf_Key();  // 扫描按键
    }
}

4. 代码解析

4.1 定时器T0

  • 定时器T0设置为模式1,每50ms触发一次中断。

  • 在中断服务函数 ServiceTimer() 中,更新时间变量 t_mst_s 和 t_min,并刷新数码管显示。

4.2 数码管显示

  • 使用 Display_Timer() 函数显示当前时间,格式为 分-秒-0.05秒

  • 通过 SelectHC573() 函数选择数码管位选和段选锁存器。

4.3 按键功能

  • S4:按下后切换秒表的启动和暂停状态。

  • S5:按下后清零秒表时间。


5. 总结

本文基于CT107D单片机综合训练平台,设计了一个具有启动、暂停和清零功能的秒表。通过定时器T0实现精确计时,数码管显示时间,独立按键控制秒表状态。代码结构清晰,功能完善,适合初学者学习和参考。


6. 参考资料

  • STC89C52RC数据手册

  • CT107D单片机综合训练平台用户手册


版权声明:本文为博主原创文章,转载请注明出处。
作者:[杜子不疼]


希望这篇博客对你有所帮助!如果有任何问题,欢迎在评论区留言讨论。

http://www.15wanjia.com/news/194435.html

相关文章:

  • wx网站开发如何制作海报宣传图片
  • 网站目标关键词公司简介模板范本
  • html5网站模板 站长网在定点二进制运算器中减法运算一般通过
  • 沧州做网站的公司排名wordpress 的主题修改
  • 网站建设开发ppt自己做的一个网站怎么赚钱
  • 网站开发过程中感想莆田seo
  • 360网站排名优化沈阳企业黄页免费
  • 物流网个人网站建设网站开发需求范本
  • 深圳市网站开发附近网络维修
  • 如何推销网站淘宝美工
  • 建设银行反钓鱼网站兴安盟市住房和城乡建设局网站
  • wordpress识别手机跳转网站湖南正规竞价优化公司
  • 郑州网站开发公司哪家好gps建站教程
  • 网站开发电商项目的成本管理怎么写国家企业信息公示网查询官网
  • 网站制作比较好的公司国内建站平台
  • 深圳网站建设找哪免费下载安卓软件
  • 手机网站功能开发方案王业美三个字组成的子
  • 网站优化建议书支付公司网站建设费账务处理
  • 兴远建设网站网站脚本怎么做
  • 汕头制作网站软件青岛高端网站建设
  • 中卫网站设计公司排名wordpress点击文字弹窗
  • 网站设计参考网址网站推广大概需要多少钱
  • 做网站所需要哪方面的知识做学校网站需要备案么
  • 创建自己的博客网站鱼台建设局网站
  • 网站建设运营期末考试深圳建立公司网站公司
  • 网站建设补充协议范本衡水武邑县建设局网站
  • 广州专业网站开发wordpress书
  • 建设交易平台网站多少钱线上赚钱正规平台
  • 莆田外贸网站建设推广生鲜网站制作
  • 网站用品推广网页固定ip做网站怎么备案