鱼C论坛

 找回密码
 立即注册
查看: 208|回复: 3

51单片机数字钟用lcd液晶显示的代码

[复制链接]
发表于 2024-12-26 10:49:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求助单片机数字钟的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-12-26 10:54:32 | 显示全部楼层
要实现一个基于51单片机的数字钟,并使用LCD液晶显示,你可以参考以下简单的代码示例。这里假设你使用的是1602 LCD模块,代码仅供学习参考。

  1. #include <reg52.h>
  2. #include <lcd1602.h>  // 假设已经有一个lcd1602.h头文件进行LCD初始化和控制
  3. #include <intrins.h>

  4. #define uchar unsigned char
  5. #define uint unsigned int  

  6. uchar code table[] = "  00:00:00";  // 初始显示时间

  7. uchar second = 0, minute = 0, hour = 0;

  8. void delay(uint z) //简单的延时函数
  9. {
  10.     uint x, y;
  11.     for(x = z; x > 0; x--)
  12.         for(y = 110; y > 0; y--);
  13. }

  14. void Timer0Init(void) // 定时器0初始化
  15. {
  16.     TMOD |= 0x01; // 设置定时器工作模式
  17.     TH0 = 0x4C;   // 定时初值
  18.     TL0 = 0x00;
  19.     TR0 = 1;      // 启动定时器0
  20.     ET0 = 1;      // 开启定时器0中断
  21.     EA = 1;       // 开启总中断
  22. }

  23. void main()
  24. {
  25.     lcd_init(); // 初始化LCD
  26.     Timer0Init();

  27.     while(1)
  28.     {
  29.         lcd_write_command(0x80); // 设置LCD显示地址
  30.         lcd_write_string(table); // LCD显示字符串
  31.     }
  32. }

  33. void timer0_interrupt() interrupt 1 // 定时器0中断函数
  34. {
  35.     static uint cnt = 0;
  36.     TH0 = 0x4C;  // 重新加载初值
  37.     TL0 = 0x00;
  38.    
  39.     if (++cnt == 1000) // 1秒钟达成
  40.     {
  41.         cnt = 0;
  42.         second++;
  43.         if (second == 60)
  44.         {
  45.             second = 0;
  46.             minute++;
  47.             if (minute == 60)
  48.             {
  49.                 minute = 0;
  50.                 hour++;
  51.                 if (hour == 24)
  52.                 {
  53.                     hour = 0;
  54.                 }
  55.             }
  56.         }
  57.         
  58.         table[6] = second % 10 + '0';
  59.         table[5] = second / 10 + '0';
  60.         table[3] = minute % 10 + '0';
  61.         table[2] = minute / 10 + '0';
  62.         table[0] = hour % 10 + '0';
  63.         table[1] = hour / 10 + '0';
  64.     }
  65. }
复制代码


注意事项:
1. 你需要一个名为`lcd1602.h`的文件,其中包含LCD1602的初始化和字符写入函数。
2. 根据实际使用的LCD类型和硬件连接,可能需要调整初始化设置和端口。
3. 使用单片机开发时,请确保你的环境已正确配置。

如果有其他问题,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-26 11:13:02 | 显示全部楼层
在搞实训,但是一点进展都没有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-26 11:13:23 | 显示全部楼层
Llll0927 发表于 2024-12-26 11:13
在搞实训,但是一点进展都没有


做实训项目时,感到没有进展是很正常的。下面是一些步骤和建议,可以帮助你理清思路,推动项目进展:

1. 理解项目需求:
看看项目文档,确保你明确了解项目的要求和最终目标。如果有不清楚的地方,尽快咨询指导老师或同学。

2. 分析项目功能:
把项目分解成多个小功能模块。例如,一个数字钟可以分为时间获取模块、时间显示模块和按键控制模块。

3. 学习关键技术:
对于每个模块,确定需要学习的关键技术。例如,学习如何使用定时器来实现时间的递增,用LCD显示信息等。

4. 制定计划:
给自己设定一个时间表,每天集中攻克一个小问题。适当的计划会让任务看起来更可控。

5. 小步前进,逐步测试:
从实现简单的功能开始,比如显示一个固定字符在LCD上。确认这一点无误后,逐步增加复杂性。

6. 寻求帮助:
如果遇到困难,不要犹豫请求帮助。可以向老师、同学或在线社区询问。

7. 笔记和迭代:
在开发过程中,保持记录自己的尝试、错误、解决方法和进展。这有助于将来总结和优化。

以上步骤可以帮助你结构化地推进项目。如果有具体的技术难题,欢迎提出,我会尽力帮你解答!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-27 18:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表