51单片机:8位数码管动态显示,从12345678开始,每次按S1键加1
2018-01-09 11:53
555 查看
源码
#include <reg52.h> #include <stdlib.h> #define uint unsigned long #define uchar unsigned char sbit N1 = P1^0; sbit N2 = P1^1; sbit N3 = P1^2; sbit N4 = P1^3; sbit N5 = P1^4; sbit N6 = P1^5; sbit N7 = P1^6; sbit N8 = P1^7; sbit S1 = P3^7; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0~916进制共阳极编码 uint num; void delayms(uint xms) //延时函数 { uint i,j; for(i=xms;i>0;i--) for(j=10;j>0;j--); } void display(unsigned long num) { N1=0; P0=table[(num%100000000)/10000000]; delayms(1); P0=0XFF; N1=1; N2=0; P0=table[(num%10000000)/1000000]; delayms(1); P0=0XFF; N2=1; N3=0; P0=table[(num%1000000)/100000]; delayms(1); P0=0XFF; N3=1; N4=0; P0=table[(num%100000)/10000]; delayms(1); P0=0XFF; N4=1; N5=0; P0=table[(num%10000)/1000]; delayms(1); P0=0XFF; N5=1; N6=0; P0=table[(num%1000)/100]; delayms(1); P0=0XFF; N6=1; N7=0; P0=table[(num%100)/10]; delayms(1); P0=0XFF; N7=1; N8=0; P0=table[num%10]; delayms(1); P0=0XFF; N8=1; } void main() { TMOD=0x01; //采用T0方式,将M1置0,M0置1,是方式一的定时器 EA=1; //外部中断总开关 EX0=1; // 允许外部中断0申请中断。 num=12345678; // 初始化12345678 while(1) { while(1) { display(num); if(S1==0) //判断是否按下 { delayms(50); if(S1==0) //再次确定 { num++; } while(!S1); //消抖 delayms(50); while(!S1); break; //跳出所在的第一个while循环 } } } }
相关文章推荐
- 51单片机数码管的动态显示
- 51单片机入门之五:数码管显示(动态)
- 基于proteus的51单片机仿真实例七十八、使用BCD译码器实现8位数码管显示应用实例
- 51单片机数码管动态显示
- 51单片机开发系列三_数码管动态扫描显示
- 一天:51单片机从入门到一个动态数码管显示数字控制
- 单片机数码管动态显示
- 基于proteus的51单片机仿真实例五十九、1位数码管显示实例
- 51单片机数码管动态扫描C程序
- 51 单片机 C 语言编程:矩阵键盘输入,显示在数码管
- 51 数码管动态显示 [李园7舍_404]
- 51单片机:6位数码管动态显示,从600000开始,每0.5秒加1
- 51单片机之动态数码管的实现
- 8位数码管动态扫描显示变化数据
- 单片机数码管动态显示—C语言版
- 51单片机--8 位数码管动态显示 12 位数字
- 基于proteus的51单片机仿真实例七十九、8位数码管驱动芯片max7221应用实例
- 整理2010年51单片机程序--4*4按键与数码管显示
- 时钟一:51单片机用替换的方法在数码管上显示时钟
- 定时器控制数码管动态显示(单片机)