1. 秒表(精确00.00),四位共阴数码管显示,单片机S52控制,要求可以暂停、开始,P2口控制段,P3口控制位
用一个定时器,模式1,10ms周期,开了中断就行了。每次进入中断就调用一次键盘函数、计时函数、显示函数。
计时:两字节分别做小数和整数部分,每次中断小数+1,小数大于99清0整数+1
键盘:状态机控制,分为:M1.没按下;M2.刚按下;M3.已按下;M4.刚松开。4个状态,只有从M2刚按下确认为M3已按下的时候执行键盘动作,每次转换状态后多退出键盘程序。运行顺序是:先是M1,检测到0转M2,检测到1不动作;M2时检测到0转M3并执行键盘动作,检测到1转M1;M3时检测到0转M4,检测到1不动作;M4时检测到0转M1,检测到1转M3.
显示:在4个数码管间循环,每次只显示1位,每次进入程序改变显示位,分别是整数的十位、整数的个位、小数的十位、小数的个位。
2. 利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开始每1秒钟加1。
共阳数码管中断程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=
{
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x83,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uint num,a;
uchar ,shi,ge;
void init();
void delay(uint);
void display(uchar,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
{
init();
while(1)
{
display(fb(),fs(),fg());
}
}
void init()
{
num=0;
a=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display(uchar,ucharshi,ucharge)
{
P1=0xfd;
P0=table[];
delay(1);
P1=0xfb;
P0=table[shi];
delay(1);
P1=0xf7;
P0=table[ge];
delay(1);
}
void timeoff() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65526-50000)%256;
a++;
if(a%20==0)
{
num++;
if(num==999)
{
num=0;
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uint fb()
{
=num/100;
return ;
}
uint fs()
{
shi=num%100/10;
return shi;
}
uint fg()
{
ge =num%100%10;
return ge;
}
(2)单片机数码管4位秒表扩展阅读
2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
一个全双工串行通信口
外部数据存储器寻址空间为64kB
外部程序存储器寻址空间为64kB
逻辑操作位寻址功能·双列直插40PinDIP封装
单一+5V电源供电
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。
参考资料来源:网络-51单片机
3. 51单片机的4位数码管做简易秒表C语言程序
#include"dz110306140.h"这是什么头文件
4. 单片机如何用四位数码管来做0-250的计时器
这个问题真的不能帮到你了,因为你问的问题我真的不是太理
5. 我用51单片机做了一个秒表,使用四位共阴数码管显示,但是数码管很暗,怎么是数码管增加亮度
把一个多位数(大于9的数)分别显示在两个数码管上面就是把这个数的每一位拆开,用数码管的动态扫描进行显示。至于闪动,不就是一亮一灭吗?就用个定时器定时,在一秒的时间内,一半时间是亮的,一半时间是灭的,不就闪烁了嘛
6. 51单片机4位数码管做秒表,C语言编程含有控制开关开始停止清零。
晶振频率,没有限定?
7. AT89C51单片机用4位数码管做秒表,要求用动态扫描做,汇编语言
4位数码管动态扫描的电路,并编程实现6位数码管同时显示"135。
STRT EQU P1.0
CLRR EQU P1.1
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT0
ORG 30H
MAIN:
MOV SP,#60H
MOV R4,#20
MOV TMOD,#01H
MOV TH0,#3CH;12M晶振时定时初值取#3CB0H,还可细调如 TL=#0B7H,可以更准
MOV TL0,#0B0H
SETB ET0
SETB EA
(7)单片机数码管4位秒表扩展阅读:
比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在底层,通常是程序优化或硬件操作的场合。
8. 单片机编程制作电子秒表能显示分(0-99),秒(0-59)
你好
楼主。
很幸运的看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
对于你的问题我爱莫能助!
可能是你问的问题有些专业了。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。
希望我的回答也能够帮到你!
祝你好运。
快过年了,
最后祝您全家幸福健康快乐每一天!
9. 用单片机做一个四位数码管秒表显示000.0--059.9
我的是数字秒表的,也一样吗