❶ 设计一个单片机编程,两位的简易秒表,记时单位60-50s,用两位的数码管
这是一个基于单片机的简易秒表设计,采用两位数码管显示,记时范围为60-50秒。程序的核心在于如何精确计时并在数码管上显示。程序中定义了一个全局变量sec来记录当前的秒数,并通过一个静态变量t来实现每毫秒计时的功能。
具体实现上,首先初始化定时器0,设置工作模式、溢出值,并开启中断和定时器。在主函数中,通过P0和P2口分别控制十位和个位数码管的显示。当定时器0中断时,通过更新TH0和TL0来重置定时器,同时更新t和sec的值。当t达到1000时,表示一秒钟已过,sec递增,若超过60秒则重置。
需要注意的是,此程序假设数码管为共阳极类型,即数码管的公共端接高电平,各位段码通过低电平控制。若使用共阴极数码管,则需将Ledchar数组中的值进行相应调整,具体可以通过查找相关资料获得。
在实际应用中,可以将P0和P2接上相应的数码管,根据需要调整电路连接。通过调整定时器的溢出值,还可以改变计时的精度和范围。此外,为了提高显示效果,还可以添加一些控制逻辑,如计时结束时的提示音或闪烁效果等。
这个简易秒表的设计简单直观,适合初学者理解和学习单片机编程的基本概念和技巧。通过这样的实践,可以更好地掌握数码管显示和定时器中断编程的方法。
❷ 求两位数码管显示一个倒数时间的单片机程序,比如显示从99到0
//两位数码管显示倒计数99~00,51单片机。
#include<reg52.h> // 倒计数
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar ,shi;
uint a1,a2;
sbit D1=P3^0; // 位选1 P1口段码输出
sbit D2=P3^1; // 位选2
sbit key=P3^7; // 启动/停止
bit y ;
void main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
=0;
shi=0;
while(1)
{
if(key==0)
{
}
}
}
void timer0()interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
a1++;
y = ~y;
if(a1==100)
{
a1=0;
if(key==1) a2--;
if(a2>=100) a2=99;
}
D1 = 1; D2 = 1;
if(y==1)
{
P1=table[a2/10];
D1=0;
}
else
{
P1=table[a2%10];
D2=0;
}
}
❸ 利用单片机实现两位数码管显示功能。
DAT EQU 30H
SCANLED EQU 32H
FSDAT EQU 33H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#01H
MOV TH0,#0F4H
MOV TL0,#048H
MOV P2,#00H
MOV SCANLED,#0
MOV 30H,#5
MOV 31H,#0
MOV FSDAT,#50
SETB EA
SETB ET0
SETB TR0
LOOP:
JB P3.0,LOOP1
JNB P3.0,$
INC FSDAT
MOV A,FSDAT
CJNE A,#100,LOOP01
LOOP01:
JC LOOP02
MOV FSDAT,#99
LOOP02:
MOV A,FSDAT
MOV B,#10
DIV AB
MOV 30H,A
MOV 31H,B
SJMP LOOP
LOOP1:
JB P3.1,LOOP2
JNB P3.1,$
MOV A,FSDAT
JZ LOOP11
DEC FSDAT
LOOP11:
MOV A,FSDAT
MOV B,#10
DIV AB
MOV 30H,A
MOV 31H,B
SJMP LOOP
LOOP2:
JB P3.2,LOOP
JNB P3.2,$
MOV FSDAT,#50
MOV 30H,#5
MOV 31H,#0
SJMP LOOP
;--------------------
T0ISR:
PUSH ACC
CLR TR0
MOV TH0,#0F4H
MOV TL0,#48H
SETB TR0
MOV DPTR,#LEDTAB1
T000:
MOV R0,#DAT
MOV A,SCANLED
ADD A,R0
MOV R0,A
MOV A,SCANLED
JNZ T001
MOV P2,#02H
SJMP T0DIS
T001:
MOV P2,#01H
T0DIS:
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
INC SCANLED
MOV A,SCANLED
ANL A,#01H
MOV SCANLED,A
POP ACC
RETI
;--------------------
LEDTAB1:
DB 0C0H ;"0" 00H
DB 0F9H ;"1" 01H
DB 0A4H ;"2" 02H
DB 0B0H ;"3" 03H
DB 99H ;"4" 04H
DB 92H ;"5" 05H
DB 82H ;"6" 06H
DB 0F8H ;"7" 07H
DB 80H ;"8" 08H
DB 90H ;"9" 09H
DB 88H ;"A" 0AH
DB 83H ;"B" 0BH
DB 0C6H ;"C" 0CH
DB 0A1H ;"D" 0DH
DB 86H ;"E" 0EH
DB 8EH ;"F" 0FH
DB 0FFH ;" " 10H
;--------------------
❹ 51单片机怎么实现两位数的加减
51单片机
51单片机是对所有兼容Intel 8051指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。
中文名
51单片机
外文名
mcu
定义
兼容Intel 8031系统的单片机统称
始祖
Intel公司始创的8004单片机
缺点
不具备自编程能力
快速
导航
功能
学习
仿真
区别
主要产品
*Intel(英特尔)的:80C31、80C51、87C51,80C32、80C52、87C52等;
*ATMEL(爱特梅尔)的:89C51、89C52、89C2051,89S51(RC),89S52(RC)等;
*Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品;
STC(国产宏晶)单片机:89c51、89c52、89c516、90c516等众多品牌。
功能
·8位CPU·4kbytes程序存储器(ROM) (52为8K)
·128bytes的数据存储器(RAM) (52有256bytes的RAM)
·32条I/O口线·111条指令,大部分为单字节指令
·21个专用寄存器
·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
·一个全双工串行通信口
·外部数据存储器寻址空间为64kB
·外部程序存储器寻址空间为64kB
·逻辑操作位寻址功能·双列直插40PinDIP封装
·单一+5V电源供电
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。
学习
作为一个初学者,如何单片机入门?
实际上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以了,自学过这2门课程的高中生也够条件。设备上,一般是建议购买一个仿真器,例如,的“双功能下载线”就具有良好的稳定性和较快的下载速度,上位机可扩展,可以下载更多的单片机及嵌入式芯片。通过实验,这样才可以进行实际的,全面的学习。日后在工作上,仿真器也大有用处。还有,一般光有仿真器是不行,还得有一个实际的电路,即学习板,如图,即为,单片机最小系统。
❺ 单片机两位数码管显示数字
#include<reg51.h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,dat=29;
void t0isr() interrupt 1
case 0:P2=0x02;P0=distab[dat/10];
break;
case 1:P2=0x01;P0=distab[dat%10];
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
分类
数码管也称LED数码管,不同行业人士对数码管的称呼不一样,其实都是同样的产品。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
以上内容参考:网络-数码管
❻ 单片机里的7SEG-MPX2-CC是什么
两位共阴七段数码管。
7SEG表示七段数码管,MPX2-表示是两位,CC是表示共阴。
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。