数码管笔记1

#include<reg52.h>

  • 数码管前三位显示一个跑表,从000999之间以1%
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用C51单片机来实现1小时计时,可以使用定时器模块来实现。以下是一个简单的实现思路: 1. 设置定时器的时钟源和预分频系数,以确定定时器的计数速度。 2. 设置定时器的计数值,以确定定时器的定时时间。 3. 在程序中使用中断服务函数来处理定时器中断,并在中断服务函数中更新数码管显示的时间。 4. 在主函数中循环调用定时器启动函数,启动定时器开始计时。 具体实现代码如下: ``` #include <reg51.h> #define uchar unsigned char #define uint unsigned int sbit D1 = P1^0; // 数码管1 sbit D2 = P1^1; // 数码管2 sbit D3 = P1^2; // 数码管3 sbit D4 = P1^3; // 数码管4 uchar code table[] = { // 用于数码管显示数字的码表 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; uint count = 0; // 计数器,记录经过的秒数 void timer0() interrupt 1 { // 定时器0中断服务函数 TH0 = 0x4c; // 重新设置定时器初值 TL0 = 0x00; count++; // 计数器加1 if (count >= 3600) count = 0; // 计数器溢出,重新开始计时 } void display(uchar num) { // 数码管显示函数 D1 = 1; P0 = table[num % 10]; D1 = 0; D2 = 1; P0 = table[num / 10 % 10]; D2 = 0; D3 = 1; P0 = table[num / 100 % 10]; D3 = 0; D4 = 1; P0 = table[num / 1000 % 10]; D4 = 0; } void main() { TMOD = 0x01; // 定时器0工作在模式1 TH0 = 0x4c; // 定时器初值 TL0 = 0x00; EA = 1; // 开启总中断 ET0 = 1; // 开启定时器0中断 TR0 = 1; // 启动定时器0 while (1) { display(count); // 每次循环更新数码管显示 } } ``` 在上面的代码中,定时器0工作在模式1,每次计数完毕后会触发中断服务函数。在中断服务函数中,重新设置定时器初值,计数器加1,如果计数器达到1小时,就将计数器清零重新开始计时。在主函数中,不断循环调用数码管显示函数,以更新数码管显示的时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值