1.?秒表秒表?? Դ??
2.å¦ä½ç¨c#åä¸ä¸ªç§è¡¨
3.ç¨c#设计ç§è¡¨ä»£ç ç¨åº
??? Դ??
使用搭配最小系统就能实现了。
关键在定时器上面,源码源程多地市网站源码如果不需要精确的秒表秒表领卡密源码就用C写个延迟函数。
具体可参考我的源码源程权威指南带源码空间:
单片机数码管显示数字递增
关键字: 单片机 动态扫描 数码管 整数递增 让单片机的数码管显示的数从0开始递增一直到,然后重新置0,再递增,如此循环.
还是用到了将要显示的数进行百位,十位,个位的分离.
从这篇开始,以后的程序就要注意程序的规范性,与可读性了.源代码如下(已经成功调通):
C代码
#include<reg.h>
#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==)
i = 0;
}
}
}
/** 显示一个3位的整数 **/
void display(uchar num)
{
uchar bai,shi,ge;
bai = num/;
shi = num%/;
ge = num%;
/* 显示个位 */
dig4 = 0;
write(table[ge]);
delay();
dig4 = 1;
/* 显示十位 */
dig3 = 0;
write(table[shi]);
delay();
dig3 = 1;
/* 显示百位 */
dig2 = 0;
write(table[bai]);
delay();
dig2 = 1;
}
/** 程序初始化函数 **/
void init()
{
clk = 0;
times = 0;
TMOD = 0x; //定时器模式1
TH0 = (-)/; //每毫秒产生一次中断
TL0 = (-)%;
TR0 = 1; //开始计时
EA = 1; //打开总中断开关
ET0 = 1;
}
/** 向数据码管写入一个字节数据 **/
void write(uchar u)
{
uchar i;
for(i=0;i<8;i++)
{
clk = 1;
sda = u&0x;
clk = 0;
u = u<<1;
}
}
/** 延迟函数 **/
void delay(uchar t)
{
uchar x,y;
for(x=t;x>0;x--)
for(y=;y>0;y--);
}
/** 1号中断 **/
void timer0() interrupt 1
{
TH0 = (-)/; //每毫秒产生一次中断
TL0 = (-)%;
times ++;
}
å¦ä½ç¨c#åä¸ä¸ªç§è¡¨
ç±äºç®åç¨å°äºC#çæå ³ç¥è¯ï¼ä½ä¹å没æC#çåºç¡ï¼æ以è¶çæºä¼æ£å¥½å¦ä¹ å¦ä¹ ãæ¬ç¯åæï¼è®°å½ä¸å©ç¨C#å®ç°ä¸ä¸ªç®åçç§è¡¨è®¡æ¶å¨ï¼åºæ¬çé¢å¦ä¸å¾ã
åè½è¯´æï¼ç¹å»âå¼å§âå¼å§è®¡æ¶ï¼ç¹å»âæåâæå计æ¶ï¼ç¹å»ââåæ¢ââåæ¢è®¡æ¶ï¼åç¹å»âå¼å§âï¼éæ°å¼å§è®¡æ¶ã
é¦å ï¼æ们å¨çªä½è®¾è®¡çªå£ç»åºè¯¥çé¢ï¼ç±1个Labelï¼3个buttonææãåå»æé®æ·»å äºä»¶ã
æ ¸å¿é¨åæ¯ç¨ç§è¡¨å¯¹è±¡Stopwatchåæ¶éTimerå®ç°çã
ç¨åºæºä»£ç å¦ä¸ï¼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace ChEx
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Timer time = new Timer();
Stopwatch sw; //ç§è¡¨å¯¹è±¡
TimeSpan ts;
static int count = 1;
private void button1_Click(object sender, EventArgs e)
{
//å¼å§æé®
button2.Enabled = true;
button3.Enabled = true;
if(button2.Text == "继ç»") //å¼å§åå°ç»§ç»æé®é置为æå
button2.Text = "æå";
sw = new Stopwatch();
time.Tick += new EventHandler(time_Tick); //æ¶é触åä¿¡å·
time.Interval = 1;
sw.Start();
time.Start();
}
void time_Tick(object sender, EventArgs e)
{
ts = sw.Elapsed;
label1.Text = string.Format("{ 0}:{ 1}:{ 2}:{ 3}", ts.Hours, ts.Minutes, ts.Seconds,ts.Milliseconds/);
}
private void button3_Click(object sender, EventArgs e)
{
//åæ¢æ¶é´æé®
sw.Stop();
time.Stop();
label1.Text = string.Format("{ 0}:{ 1}:{ 2}:{ 3}", 0, 0, 0, 0);
}
private void Form1_Load(object sender, EventArgs e)
{
button2.Enabled = false;
button3.Enabled = false;
}
private void button2_Click(object sender, EventArgs e)
{
if (button2.Text == "æå")
{
//æåäºä»¶æé®
button2.Text = "继ç»";
sw.Stop();
time.Stop();
}
else if (button2.Text == "继ç»")
{
//继ç»äºä»¶
button2.Text = "æå";
sw.Start();
time.Start();
}
}
}
}
ç§è¡¨è¿è¡ç»æå¦å¾æ示ã
ä¸ä¸æ¥å·¥ä½ï¼å¨å·¦ä¸æ¹æ·»å ä¸ä¸ªlabelï¼å®éªå¤æ¬¡æåçåè½ï¼å³è½ä¿åç§è¡¨çå¤ä¸ªä¸é´ç»æï¼å¦è®°å½å¤ååå¦çé¿è·æ绩çæ¶åï¼æåæé®åªæ¯è®°å½å°è¾¾ç»ç¹çåå¦çæ绩ï¼è®¡æ¶è¿å¨ç»§ç»ï¼è¿ä¸ªåè½ä¸é¾å®ç°ï¼ç»èªå·±ä¹ç»åä½ä¸ä¸ªå¨æçä½å°ã
-------------------------------------------------------------------------------------------------------
以ä¸æ¯çªä½è®¾è®¡å¨èªå¨çæç代ç ï¼è¾ å©åèã
#region Windows çªä½è®¾è®¡å¨çæç代ç
/// <summary>
/// 设计å¨æ¯ææéçæ¹æ³ - ä¸è¦
/// 使ç¨ä»£ç ç¼è¾å¨ä¿®æ¹æ¤æ¹æ³çå 容ã
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(, );
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(, );
this.button1.TabIndex = 0;
this.button1.Text = "å¼å§";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button3
//
this.button3.Location = new System.Drawing.Point(, );
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(, );
this.button3.TabIndex = 2;
this.button3.Text = "åæ¢";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// label1
//
this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)()))), ((int)(((byte)()))), ((int)(((byte)()))));
this.label1.Font = new System.Drawing.Font("å®ä½", F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)()));
this.label1.Location = new System.Drawing.Point(, );
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(, );
this.label1.TabIndex = 3;
this.label1.Text = "0:0:0:0";
//
// button2
//
this.button2.Location = new System.Drawing.Point(, );
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(, );
this.button2.TabIndex = 4;
this.button2.Text = "æå";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(, );
this.Controls.Add(this.button2);
this.Controls.Add(this.label1);
this.Controls.Add(this.button3);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.RightToLeftLayout = true;
this.Text = "ç§è¡¨";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
ç¨c#设计ç§è¡¨ä»£ç ç¨åº
private DateTime TimeStart = new DateTime();
private Boolean IsFirst = true;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (IsFirst)
{
TimeStart = DateTime.Now;
timer1.Enabled = true;
IsFirst = false;
}
else
{
timer1.Enabled = !timer1.Enabled;
}
}
private void button3_Click(object sender, EventArgs e)
{
TimeStart = DateTime.Now;
timer1.Enabled = false;
label1.Text = (DateTime.Now - TimeStart).ToString();
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = (DateTime.Now - TimeStart).ToString();
}