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

【TB作品】msp430g2553单片机,秒表,LCD1602,Proteus仿真

功能

秒表

在这里插入图片描述

动图:

在这里插入图片描述

部分代码

这段代码是用C语言编写的,用于在基于德州仪器MSP430微控制器的平台上实现一个简易的电子秒表功能。

#include <msp430.h>
#include "LCD.h"

unsigned int    second      = 0;
unsigned int    millisecond100  = 0;
char        Stopwatch_open  = 0;

int main( void )
{
    unsigned char display_str[15], str_count;

    WDTCTL = WDTPW | WDTHOLD;       /* stop watchdog timer */

    if ( CALBC1_1MHZ == 0xFF )      /* If calibration constant erased */
    {
        while ( 1 )
            ;               /* do not load, trap CPU!! */
    }
    DCOCTL  = 0;                    /* Select lowest DCOx and MODx settings */
    BCSCTL1 = CALBC1_1MHZ;          /* Set range */
    DCOCTL  = CALDCO_1MHZ;          /* Set DCO step + modulation * / */

    Port_init();                    /* lcd */
    LCD_init();                     /* lcd */


    LCD_write_str( 0, 0, "Stopwatch" );
    _EINT();
    while ( 1 )
    {
        /*按键输入 */
        P1DIR   &= ~BIT3;
        P1SEL   &= ~BIT3;
        P1REN   |= BIT3;
        P1OUT   |= BIT3;
        if ( !(P1IN & BIT3) )
        {
            while ( !(P1IN & BIT3) )
                ;
            Stopwatch_open = !Stopwatch_open;      /* 开始或者暂停 */
        }
        delay_ms( 10 );

        str_count           = 0;
        display_str[str_count++]    = (second / 60) % 100 / 10 + '0';
        display_str[str_count++]    = (second / 60) % 10 + '0';
        display_str[str_count++]    = ':';
        display_str[str_count++]    = (second % 60) % 100 / 10 + '0';
        display_str[str_count++]    = (second % 60) % 10 + '0';
        display_str[str_count++]    = '.';
        display_str[str_count++]    = (millisecond100) % 10 + '0';
        display_str[str_count++]    = 0;
        Port_init(); /* lcd */
        LCD_write_str( 0, 1, display_str );
    }
}


#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A( void )
{
    static char num2 = 0;
    if ( Stopwatch_open )
    {
        num2 = (num2 + 1) % 10;
        if ( num2 == 9 )
        {
            millisecond100++;
            if ( millisecond100 == 10 )
            {
                millisecond100 = 0;
                second++;
            }
        }
    }
}



全部代码

在这里插入图片描述

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

相关文章:

  • 使用dockerfile快速构建一个带ssh的docker镜像
  • AI程序员来了,大批码农要失业
  • 树--搜索二叉树
  • 大一C语言课设 服装销售系统 代码实现与项目总结
  • 深入探讨分布式ID生成方案
  • ES脚本启动报错修改
  • 新能源汽车推行精益生产:绿色动力下的效率革命
  • Java常规题技术分享
  • 单实例11.2.0.4迁移到11.2.0.4RAC_使用rman异机恢复
  • 新手教程之使用LLaMa-Factory微调LLaMa3
  • 【MATLAB】概述1
  • 富格林:揭露黑幕平台保障安全
  • C++ 混合运算的类型转换
  • 读书-《蛤蟆先生去看心理医生》
  • 从1.0到4.0,看看你公司的费控模式是第几代?
  • Vitis HLS 学习笔记--控制驱动与数据驱动混合编程
  • 常见排序算法之选择排序
  • python之生成器表达式
  • 数字水印 | 附彩色图像论文:盲式水印嵌入的方法
  • 汽车软件单元测试分析
  • 商务部:中方愿同各国一道加强合作,促进跨境电商健康可持续发展
  • 巴基斯坦信德省卡拉奇发生爆炸
  • 李彦宏:技术迭代速度之快从业30年来未见过,要提升执行力战胜对手
  • 从“重规模”向“重回报”转变,公募基金迎系统性改革
  • 建筑瞭望|融入自然的新泳池,治愈了中央公园的历史旧伤
  • 苏丹宣布与阿联酋断交