1, 秒表计时,按S0开始计时,并由数码管显示,再按S0停止。若计满1分...
使用2051搭配最小系统就能实现了。关键在定时器上面,如果不需要精确的就用C写个延迟函数。具体可参考我的空间:单片机数码管显示数字递增关键字: 单片机 动态扫描 数码管 整数递增 让单片机的数码管显示的数从0开始递增一直到255,然后重新置0,再递增,如此循环. 还是用到了将要显示的数进行百位,十位,个位的分离. 从这篇开始,以后的程序就要注意程序的规范性,与可读性了.源代码如下(已经成功调通): C代码#include#define uint unsigned int #define uchar unsigned char sbit sda = P1^0; sbit clk = P1^1; sbit dig1 = P1^2; sbit dig2 = P1^3; sbit dig3 = P1^4; sbit dig4 = P1^ 5; uchar code table[]={0x7e,0x0c,0xb6,0x9e,0xcc,0xda,0xfa,0x0e,0xfe,0xde}; uchar times; void init(); void delay(uchar); void write(uchar); void display(uchar); void main() { uchar i = 0; init(); while(1) { display(i); if(times>2) { times = 0; i ++; if(i==256) i = 0; } } } /** 显示一个3位的整数 **/ void display(uchar num) { uchar bai,shi,ge; bai = num/100; shi = num%100/10; ge = num%10; /* 显示个位 */ dig4 = 0; write(table[ge]); delay(10); dig4 = 1; /* 显示十位 */ dig3 = 0; write(table[shi]); delay(10); dig3 = 1; /* 显示百位 */ dig2 = 0; write(table[bai]); delay(10); dig2 = 1; } /** 程序初始化函数 **/ void init() { clk = 0; times = 0; TMOD = 0x01; //定时器模式1 TH0 = (65536-50000)/256; //每500毫秒产生一次中断 TL0 = (65536-50000)%256; TR0 = 1; //开始计时 EA = 1; //打开总中断开关 ET0 = 1; } /** 向数据码管写入一个字节数据 **/ void write(uchar u) { uchar i; for(i=0;i0;x--) for(y=101;y>0;y--); } /** 1号中断 **/ void timer0() interrupt 1 { TH0 = (65536-50000)/256; //每500毫秒产生一次中断 TL0 = (65536-50000)%256; times ++; }
2, 单片机的秒表的计时启动和停止是怎么实现的
相同。体育秒表和手机秒表计时的时间是一样的抄,没有快慢之分,若体育秒表和手机秒表均没有质量问题,时间均相同。学会秒表按键的基本操作:1、记录一个时间:在计时器显示袭的情况下,按MODE键选择,即可出现秒表功能。按一下START/STOP按钮开始自动计秒,再按一下停止计秒,显示出所计数据。按LAP/RESET键,则自动复零。2、记录多个时间:若要纪录多个物体同时出百发,但不同时到达终点的运动,可采用多计时功能方式(具体可记录数量以表的说明书介绍为准)。即首先在秒表状态下按START/STOP开始,秒表开始自动计秒度,待物体到达终点时按一下LAP/RESET,则显示不同物体的计秒数停止,并显示在屏幕上方。此时秒表仍在记录,内部电路仍在继续为后面的物体累积计秒。全部物体记录完成后正常停表,按RECALL可进入查看前面的记录情况,上下翻动可问用START/STOP和LAP/RESET两键。3、时间、日期的调整:若需要进行时刻和日期的校正与调整,可按MODE键,待显示时、分、秒的计秒数字时,按住RECALL键2秒后见数字闪烁即可选择调整,直到显示出所需要调整的正确秒数时为止,再按答下RECALL键。
名词解释
秒表
秒表(stopwatch,计时器)是一种由暂停按钮、发条柄头、分针等组成,利用摆的等时性控制指针转动而计时的测时仪器。
记录
记录(拼音:jì lù),汉语词语,指把所见所闻通过一定的手段保留下来,并作为信息传递开去。