(分享设计)这是昨天做的4动态数码管显示数据实验设计
电路设计较为简单·,通过按键的调节,实现
数码管的动态显示。proteus仿真及工程文件
都是原创,分享出来。望各位大神多指教。
单片机源程序:
- #include <reg51.h>
- #define INT8U unsigned char
- #define INT16U unsigned int
- sbit K1 = P2^0;
- sbit K2 = P2^1;
- INT8U code SEG_CODE[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
- INT16U Count = 2017;
- INT16U Temp;
- INT8U array[] = {0,0,0,0};
- INT8U Adjust = 0;
- INT8U Pre_key = 0x0F;
- void delay_ms(INT16U x)
- {
- INT8U t; while(x--) for(t = 0; t < 120; t++);
- }
- void digit(INT16U n)
- {
- array[0] = 0; while (n >= 1000) { array[0]++;n -= 1000;}
- array[1] = 0; while (n >= 100) { array[1]++;n -= 100;}
- array[2] = 0; while (n >= 10) { array[2]++;n -= 10;}
- array[3] = n;
- }
-
- void main()
- {
- INT8U i;
- while(1)
- {
- P2 = 0x0F;
- if(!K1)
- {
- delay_ms(100);
- if(!K1)
- {
- delay_ms(100);
- Count++;
- }
- }
- if (!K2)
- {
- delay_ms(100);
- if (!K2)
- {
- delay_ms(100);
- Count--;
- }
- }
- digit(Count);
- for (i=0;i<4;i++)
- {
- P0=0;
- P3=1<<i;
- P3=~P3;
- P0=SEG_CODE[array[i]];
- delay_ms(4);
- }
- }
- }
复制代码
全部资料51hei下载地址:
4数码管动态显示数据.rar
(17.95 KB, 下载次数: 29)
|