51秒表计数器+倒计时(数码管两位数)代码实现
时间: 2023-10-24 13:21:07 浏览: 266
基于51的数码管C语言倒计时程序
以下是51秒表计数器倒计时(数码管两位数)的代码实现:
```c
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示0-9的编码
void delay(uint x) //延时函数
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar count=60; //倒计时的初始值为60秒
uchar ten,unit; //ten表示十位数字,unit表示个位数字
while(1)
{
ten=count/10; //计算十位数字
unit=count%10; //计算个位数字
P2=0x00; //清空数码管显示
P1=0xfe; //第一位数码管显示
P0=table[ten]; //显示十位数字
delay(5); //5ms延时
P2=0x00; //清空数码管显示
P1=0xfd; //第二位数码管显示
P0=table[unit]; //显示个位数字
delay(5); //5ms延时
count--; //倒计时的秒数减1
if(count==0) //倒计时结束
{
while(1); //程序停在此处,不再执行
}
}
}
```
注:本程序使用了定时器来实现延时,因此需要在Keil中设置定时器。具体方法如下:
1. 点击菜单栏“Project” -> “Options for Target...”。
2. 在弹出的窗口中选择“C51” -> “C Compiler”选项卡,在“Preprocessor Symbols”中添加宏定义“FOSC=11059200L”(如果单片机的晶振频率不是11.0592MHz,请将该宏定义修改为相应的值)。
3. 选择“C51” -> “Target”选项卡,在“C51 Settings”中选择“Timers”选项卡。
4. 选择“Timer 0”或“Timer 1”,根据自己的需要进行设置。例如,设置定时器1为1ms定时器,需要将“Mode”设置为“2”,“Value”设置为“65536-11059”,“Clock”设置为“Fsys/12”。其中,“11059”是“1ms/(1/11.0592MHz)”的计算结果。
5. 设置完成后点击“OK”按钮保存设置。
阅读全文