独立键盘实验报告

这篇博客介绍了两个独立按键的单片机实验,分别实现数码管跑表显示和控制功能。实验中,跑表以1%秒速度运行,按键用于暂停、继续和清零。遇到的问题是在按键按下时,数码管仅显示最后一位,如何解决这个问题成为了一个挑战。
摘要由CSDN通过智能技术生成

/**************************************************

实验名称:独立按键实验一

实验目的:数码管前三位显示一个跑表,从000到999之间

      以1%秒速度运行,当按下一个独立键盘时跑表

  停止,松开手后跑表继续。用定时器设计表。

实验备注:按下按键时跑表是停止了,但只显示最后一位

  数字,因为执行按键程序的while了,display

 就没有继续动态显示前两位数码管的数字,能

 否改善这个问题咧?

**************************************************/


#include<reg52.h>


#define uchar unsigned char

#define uint unsigned int


sbit key_01 = P3^4;

sbit DUAN = P2^6;

sbit WEI = P2^7;


uchar flag;

uint num;

uchar bai, shi, ge;

uchar code duan_table[]=

{0x3f,0x06,0x5b,0x4f,

 0x66,0x6d,0x7d,0x07,

 0x7f,0x6f,0x77,0x7c,

 0x39,0x5e,0x79,0x71};


uchar code wei_table[]=

{0xfe,0xfd,0xfb,

 0xf7,0xef,0xdf};


void delay_1ms(uchar);

void display(uchar,uchar,uchar);


void main()

{


num = 0;

flag = 0;

TMOD = 0x01;

TH0 = (65536-9216)/256;

TL0 = (65536-9216)%256;

EA = 1;

ET0 = 1;

TR0 = 1;

while(1)

{

while(key_01 == 0)//等待按键释放

{

delay_1ms(5);

if(key_01 == 0)

{

ET0 = 0;

}

}

ET0 = 1;

if(flag == 10)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值