题目:
用数码管的前两位显示一个十进制数,变化范围为00~59,开始时显示00,每按下S2键一次,数值加1;每按下S3键一次,数值减1;每按下S4键一次,数值归零;按下S5键一次,利用定时器功能使数值开始自动每秒加1,再次按下S5键,数值停止自动加1,保持显示原数。(来自郭天祥老师的51单片机练习)
代码:
初始化函数:
void Init()
{
LE = 0;//锁住led灯,防止实验过程中灯亮
WLE = 1;//打开位选
P0 = 0xfc;
WLE = 0;//关闭位选
P0 = 0xff;//消影
DLE = 1;//打开段选
P0 = Table[0];
DLE = 0;//关闭段选
delay_1ms(10);
TMOD = 0x01;//定时器工作类型
TH0 = (65536 - 45872) / 256;//50ms
TL0 = (65536 - 45872) % 256;
EA = 1;//总中断
ET0 = 1;//T0中断
TR0 = 0;//开启T0
num = 0;
tt = 0;
}
1ms延时函数:
//延时1ms函数
void delay_1ms(uint z)
{
uint x,y;
for(x = z;x > 0;x--)
{
for(y =110;y > 0;y--){}
}
}
四个独立按键函数:
//按键2函数
void Switch2()
{
while(SW2 == 0)
{
delay_1ms(10);//消抖
if(SW2 == 0)
{
num++;//加1
}
while(SW2 == 0);//等待按键释放
}
}
//按键3函数
void Switch3()
{
while(SW3 == 0)
{
delay_1ms(10);//消抖
if(S
51单片机数码管数值控制编程实践

该博客围绕51单片机编程展开,题目要求用数码管前两位显示00 - 59的十进制数,通过按键实现数值的加减、归零及自动加1等操作。给出了初始化、延时、按键、显示等函数代码,并分享了按键消抖、数码管显示衔接、定时器控制等编程心得。
最低0.47元/天 解锁文章
3029

被折叠的 条评论
为什么被折叠?



