51 单片机定时器数码管 从1数到100(带三个按键控制开始,暂停,复位)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51 单片机定时器数码管 从1数到100(带三个按键控制开始,暂停,复位)相关的知识,希望对你有一定的参考价值。
#include <reg51.h> #define uint unsigned int #define uchar unsigned char sbit wei=P2^7; sbit duan=P2^6; sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//1~9 //0~9,0x77,0x7c,0x39,0x5e,0x79,0x71 uint number; void delay(uint xms)//延迟函数 { uint i;uchar j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void show(uint ge,uint shi) { ge=number%10; shi=number/10; wei=1; P0 = 0xfe; wei=0; duan=1; P0=table[shi]; duan=0; P0=0xff; delay(5); wei=1; P0=0xfd; wei=0; duan=1; P0=table[ge]; duan=0; P0=0xff; delay(5); } void initial_mcu() { TMOD=0x01; //定时器0和1工作在16位模式 TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; //TR0=1; } void buttons() { if(key1==0) { delay(10); //键盘消抖 if(key1==0) { number=0; } } if(key2==0) { delay(10); //键盘消抖 if(key2==0) { TR0=1; } } if(key3==0) { delay(10); //键盘消抖 if(key3==0) { TR0=0; } } } void main () { initial_mcu();//定时器初始化 while(1) { buttons(); show(); } } void timer0() interrupt 1 { uint num; TH0=(65536-45872)/256; TL0=(65536-45872)%256; num++; if(num==20) { num=0; number++; if(number==100) { number=0; } } }
以上是关于51 单片机定时器数码管 从1数到100(带三个按键控制开始,暂停,复位)的主要内容,如果未能解决你的问题,请参考以下文章
利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开始每1秒钟加1。
基于51单片机的交通灯Proteus仿真设计_带紧急开关+可调时间(源码+仿真+报告)