赞
踩
具体要求,采用动态扫描的方式让,6个数码管前三个显示秒数,后两个显示毫秒。第四个不用。秒数精确到1%。
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define N 2000 //定义中断初值。2000 x 1/12MHz x 12 = 2ms
- uchar point; //中断点,或计数点。比如point的值为5,那么当经过5个N(2000)时会计数一次。
- uchar code table[] = { //数码管能显示的数值0x0~0xf
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71};
- sbit dula = P2^6; //数码管段选引脚定义
- sbit wela = P2^7; //数码管位选引脚定义
-
- int wenum; //控制显示哪个数码管
- uchar code wetable[] = { //用到的数码管位选开关
- 0xfe,0xfd,0xfb,0xef,0xdf};
-
- int fre = 0; //作为发生时钟计数次数的计数。时钟计数5次为10ms(5 x 2ms)。
- uint s,ms; //秒,毫秒
-
- uint numBuffer[3] = {0};
- //用于存取s,ms每一位的存储。比如s=123秒。那么numBuffer[0]=1;numBuffer[1]=2;numBuffer[2]=3
- uint timebuffer[5] = {0}; //因为毫秒的显示只有两位计数0~99.秒的计数三位0~999。所以共5个存储空间即可。
- void divNumber(uint ); //分离整数。把整数的百、十、个三位的数值
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。