学习笔记之---简单时钟

在解决“简单时钟”的问题的时候,遇到了时钟的时间更新的问题(也就是秒数自动跳动)。最初试着用一个循环来写的,如下:

private void refresh(){
        pause();
        GetTime time2 = new GetTime();
        if(time2.second > second){
            second = time2.second;
        }
        refresh();
    }

但那时发现这个思路行不通,上网百了一下,建议都是用线程来实现,但是之前线程这一块没认真学,看来还真得补补了。

下面是百的一个数字时钟demo:

package test;

import   javax.swing.JFrame;
import   javax.swing.JLabel;
import   java.awt.BorderLayout;
import   java.awt.event.WindowListener;
import   java.awt.event.WindowEvent;
import   java.util.Date;
import   java.text.SimpleDateFormat;

public   class   ClockFrame   extends   JFrame   implements   Runnable,WindowListener
{
private   Thread   timer=null;
private   JLabel   jLabel=null;
private   SimpleDateFormat   sdf=null;
private   boolean   go;

public   ClockFrame()
{
super( "时钟测试 ");

sdf=new   SimpleDateFormat( "yyyy-MM-dd   HH:mm:ss ");
Date   now=new   Date();

jLabel=new   JLabel(sdf.format(now));
getContentPane().add(jLabel,BorderLayout.CENTER);
addWindowListener(this);
setSize(200    ,100);
setLocation(300,200);

go=true;
timer=new   Thread(this);
timer.start();
}

public   void   run()
{
while(go)
{
try
{
timer.sleep(1000);
}catch(InterruptedException   e){
e.printStackTrace();
}finally
{
jLabel.setText(sdf.format(new   Date()));
}
}
}
public   void   windowActivated(WindowEvent   e){}
public   void   windowClosed(WindowEvent   e){}
public   void   windowClosing(WindowEvent   e){
go=false;
setVisible(false);
System.exit(0);
}
public   void   windowDeactivated(WindowEvent   e){}
public   void   windowDeiconified(WindowEvent   e){}
public   void   windowIconified(WindowEvent   e){}
public   void   windowOpened(WindowEvent   e){}

public   static   void   main(String   args[])
{
new   ClockFrame().setVisible(true);
}
};

测试通过



### STM32 使用 OLED 显示屏的学习笔记与教程 #### 关于 STM32 和 OLED 的基础知识 STM32 是一种基于 ARM Cortex-M 架构的微控制器系列,广泛应用于嵌入式开发领域。OLED(有机发光二极管)显示屏因其高对比度、低功耗等特点,在许多项目中被用作显示设备。为了实现 STM32 对 OLED 屏幕的支持,通常需要完成硬件连接以及软件驱动程序的设计。 以下是有关 STM32 驱动 OLED 显示屏的一些关键知识点: #### 硬件连接方式 在 STM32 中,OLED 通常通过 IIC(I²C)、SPI 或 UART 接口进行通信。其中最常见的是 IIC 协议,因为它只需要两根线即可完成数据传输,简化了硬件设计[^1]。具体的硬件连接方法可以参考实际使用的模块手册或相关文档。 #### 软件初始化过程 对于 STM32 来说,使用 OLED 显示屏的第一步是对屏幕进行初始化配置。这一步骤包括设置通信协议参数、定义屏幕分辨率以及其他必要的寄存器操作。以下是一个简单的初始化代码示例: ```c #include "stm32f10x.h" #include "OLED.h" int main() { SystemInit(); // 初始化系统时钟 OLED_Init(); // 初始化 OLED 模块 while (1) { OLED_ShowString(2, 1, "Hello"); // 在第 2 行第 1 列显示字符串 "Hello"[^3] } } ``` 上述代码展示了如何调用 `OLED_Init()` 函数来启动 OLED 并利用 `OLED_ShowString` 方法向屏幕上写入文字信息。 #### 数据打印至 OLED 屏幕 如果希望将来自串口的数据实时展示到 OLED 上,则需编写额外的功能逻辑处理接收到的信息并将其传递给 OLED 控制接口。例如,可以通过中断服务例程捕获串口输入流,并逐字符绘制到指定位置上[^2]。 #### 进阶功能扩展 除了基本的文字输出外,还可以尝试实现更复杂的图形化界面效果,比如加载位图图像或者支持多语言字体渲染等功能。这些都需要深入理解底层库文件结构及其 API 定义说明。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值