利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开始每1秒钟加1。
现成的有与之差不多的,功能是倒计时,到一定值后停止
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77,
0x7C, 0x39, 0x5E, 0x79, 0x71, 0x76, 0x38, };
sbit duan=P2^0;
sbit wei=P2^1;
uchar temp,tem,flag,chu;
uint dsec;
void init ();
void delay (uchar );
void display ();
void main ()
{
init ();
while (1)
{
display();
}
}
void init ()
{
flag=0;
temp=0xfe;
tem=0x01;
chu=0xff;
dsec=432;
TMOD=0x11;
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
TH1=(65535-50000)/256;
TL1=(65535-50000)%256;
P1=0x00;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
}
void delay (uchar x)
{
uchar y;
for ( ;x>0;x--)
for (y=50;y>0;y--);
}
void display ()
{
uchar shu ,j,zi;
wei=1;
P0=temp;
wei=0;
duan=1;
P0=table[zi];
delay(2);
duan=0;
P0=0xff;
shu++;
if (shu==6) {shu=0 ;}
switch (shu)
{
case 0 : zi=7; break;
case 1 : zi=6 ;break ;
case 2 : zi=5; break;
case 3 : zi=dsec/100;break ;
case 4 :zi=dsec%100/10; break ;
case 5 :zi=dsec%10 ;break;
default : break ;
}
temp=_crol_(temp,1);
j++;
if(j==6)
{
j=0;
temp=0xfe;
}
}
void tr0 () interrupt 1
{
uchar ms;
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
ms++;
if (ms==10)
{
ms=0;
dsec--;
if (dsec==398)
{
TR0=0;
flag=1;
}
}
}
void tr1 () interrupt 3
{
uchar tt,time;
TH1=(65535-50000)/256;
TL1=(65535-50000)%256;
tt++;
if(tt==10)
{
tt=0;
if (flag==0)
{
P1=tem;
tem=_crol_(tem,1);
}
else
{
P1=chu;
chu=~chu;
time++;
if(time==6)
{
TR1=0;
}
}
}
}
你好! 用7个数码管?完成0-9计数?
这一个数码管就够,剩下的6个做什么
共阳数码管中断程序:
#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 bai,shi,ge;
void init();
void delay(uint);
void display(ucharbai,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(ucharbai,ucharshi,ucharge)
{
P1=0xfd;
P0=table[bai];
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()
{
bai=num/100;
return bai;
}
uint fs()
{
shi=num%100/10;
return shi;
}
uint fg()
{
ge =num%100%10;
return ge;
}
扩展资料
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单片机
系统设计
1.实验内容摘要
本实验利用单片机的定时器/计数器定时和记数的原理,结合dvcc实验箱上的集成电路芯片8032、LED数码管以及实验箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本实验设计了四个开关按键:其中一个按键按下去时以1秒加一开始计时,即秒表开始键(本实验中当开关从1变为0时开始计时),另一个按键按下去时暂停计时,使秒表停留在原先的计时(本实验中当相应开关从1变为0时即停止计时),第三个按键按下去时清0(本实验中当相应开关从1变为0时即停止计时),第四按键按下去则是以每10ms秒快速加一计时(本实验中当开关从1变为0时开始计时)。本实验中开始时都要使各按键回到各初始位置,即都处于1状态。
关键词:LED数码管,计时器,
2.功能:
用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加1。另设计一个“开始”按键和一个“复位”按键。并且增加了一个“暂停”按键和一个“快加”按键(每10ms快速加一)
3.实验目的:
3.1、 通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。
3.2、 掌握定时器、外部中断的设置和编程原理。
3.3、 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
4.意义:
该实验通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、快加功能,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义。
所做工作
根据相关的单片机材料,利用所学的单片机知识,结合DVCC系列单片机微机仿真实验系统中的软件和硬件(集成电路芯片8032,七段数码管,开关电路及时钟信号电路,按键等),编写能够实现该项目的软件程序,最后将软、硬件有机的结合起来,进行有效的调试,达到完成该实验课程设计的目的要求。
5.实验内容:
用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一。另设计一个“开始”按键和一个“复位”按键。再增加一个“暂停”按键和一个“快加”按键(每10ms快速加一)。
按键说明:按“开始”按键,开始计数,数码管显示从00开始每秒自动加1;按“复位”按键,系统清零,数码管显示00;按“暂停”按键,系统暂停计数,数码管显示当时的计数;按“快加”按键,系统每10ms快速加1,即数码显示管在原先的计数上快速加1。
6.设计思路及描述:
该实验要求进行计时并在数码管上显示时间,则可利用DVCC系列单片机微机仿真实验系统中的芯片8032(芯片的功能类似于芯片AT89C51,其管脚功能也和AT89C51的管脚功能类似)中的P3.2管脚做为外部中断0的入口地址,并实现“开始”按键的功能;将P3.3做为外部中断1的入口地址,并实现“清零”按键的功能;将P3.0做为数据信号DATA输入的入口地址;将P3.1做为时钟信号CLK输入的入口地址。定时器T0作为每秒加一的定时器;定时器T1作为“快加”键的定时器。其中“开始”按键当开关由1拨向0(由上向下拨)时开始计时;“清零”按键当开关由1拨向0(由上向下拨)时数码管清零,此时若再拨“开始”按键则又可重新开始计时。
7.原理图:
10、实验程序
;******************************************************
; 设计选题:秒表系统设计
; 描述: 2位LED数码显示"秒表",显示时间为00~99秒,每秒自动加1,
; 一个"开始"键,一个"复位"键,一个"暂停"键,一个“快加”键。
; 调用子程序:暂停键子程序,计时键子程序,清0键子程序,加一子程序
; 显示子程序,定时子程序
;所用特殊寄存器:寄存器A,寄存器C
;所用中断:外部中断INT0、INT1,定时器T0、T1
; 实验作者: 薛艳—通信0401班09号;******************************************************
org 0000h
ajmp main ;主程序入口地址
org 0003h
ajmp zhongduan0 ;中断0入口地址
org 000bh
ajmp yanshi ;定时器T0入口地址
org 0013h
ajmp zhongduan1 ;中断1入口地址
org 001bh
ajmp dingshi1 ;定时器T1入口地址
org 0030h
;*****************************************************
; 主程序
;*****************************************************
main: mov tcon,#05h ;主程序开始 外部中断跳变模式
mov tmod,#11h ;定时器0,1模式1
mov ie,#8fh ;开总中断,中断0,1,定时器0,1
mov dptr,#tab
mov r1,#00h
mov r2,#00h
mov r3,#40 ;循环次数40
mov tl0,#2Ch ;置初值,定时25MS
mov th0,#0CFh
mov tl1,#78h ;置初值,定时10MS
mov th1,#0ech
clr tr0 ;关定时器
clr tr1
;*****************************************************
; 暂停键K3,快加键K4程序
;*****************************************************
here:jb p1.0,here
show:clr tr1
clr tr0
acall xianshi
kuaijia:jb p1.2,kuaijia ;等待P1.2为0 快加
clr tr0
setb tr1
here3:jnb p1.2,here3
ajmp here
;*****************************************************
; 外部中断INT0子程序-----计时按键K1子程序
;*****************************************************
zhongduan0: setb tr0 ;计时按键
reti
;*****************************************************
; 外部中断INT1子程序----复位按键K2子程序
;*****************************************************
zhongduan1:clr tr0 ;复位按键
clr tr1
mov 12h,#00h
mov 11h,#00h
acall xianshi ;调用显示子程序
mov r1,#00h
mov r2,#00h
reti
;*****************************************************
; 加一子程序
;*****************************************************
jia1: inc r1 ;加1子程序
cjne r1,#0ah ,loop ;判断是否到表尾
mov r1,#00h
inc r2
cjne r2,#0ah,loop
mov r2,#00h
loop: mov 12h,r1 ;重新赋值
mov 11h,r2
ret
;*****************************************************
; 显示子程序
;*****************************************************
xianshi: mov r7,#02h ;2个数码管显示子程序
mov r0,#12h
loop5: mov r6,#08h ;8位2进制数
mov a,@r0
movc a,@a+dptr
loop6: rlc a ;循环左移
clr p3.1
mov p3.0,c
setb p3.1
djnz r6,loop6
dec r0
djnz r7,loop5
ret
;*****************************************************
; 定时器T0子程序
;*****************************************************
yanshi: mov tl0,#2Ch ;定时子程序
mov th0,#0CFh
djnz r3,loop7
acall jia1 ;调用加1子程序
acall xianshi ;调用显示子程序
mov r3,#40
loop7: reti
;*****************************************************
;定时器T1子程序
;*****************************************************
dingshi1:mov tl1,#78h ;置初值,定时10MS
mov th1,#0ech
clr tr0
setb tr1
mov 12h,r1
mov 11h,r2
jnb p1.0,show
acall jia1
acall xianshi
lop7: reti
;*****************************************************
tab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
十一、课程设计心得体会
1、 认真审题,看懂题目的要求!选择适当的课题,不益太简单或者太难。做到既能把课题完成又能锻炼自己的能力!
2、 根据课题要求,复习相关的知识,查询相关的资料。
3、 根据实验条件,找到适合的方案,找到需要的元器件及工具,准备实验。
4、 根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序。然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。
5、 还要根据实验的实际情况,添加些额外程序来使系统更加的稳定,如开关的消震荡(采用延迟)。
6、 程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。
7、 该实验的程序可以参考DVCC系列单片机微机仿真实验系统实验指导书中的串并转换实验,也可自己根据自己熟悉的方法来编程。
8、 在设计控制开关时,注意2个中断的打开和关闭的先后顺序,否则就会出错。
9、 这次的单片机课程设计重点是理论与实际的相结合。不再只读书了。
10、 该设计从头到尾都要自己参与,熟悉了对整个设计的过程,更系统的锻炼了自己。 希望可以帮到你.!
我刚刚写好的 我的数码管是共阳的 用中断函数来写
#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 bai,shi,ge;
void init();
void delay(uint);
void display(ucharbai,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(ucharbai,ucharshi,ucharge)
{
P1=0xfd;
P0=table[bai];
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()
{
bai=num/100;
return bai;
}
uint fs()
{
shi=num%100/10;
return shi;
}
uint fg()
{
ge =num%100%10;
return ge;
}
这个不难的 你自己动手练习一下就会了的
/***********************************************************
***************************倒计时***************************
***********************************************************/
#include<reg52.h>
#define uint unsigned int
uint qian,bai,shi,ge;
int a;
unsigned char code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void chushihua(); //初始化函数
void delay(unsigned int i); //延时函数
void xianshi(uint qian,uint bai,uint shi,uint ge); //显示函数
void main()
{
int b=6543;
chushihua(); //初始化子函数。
while(1)
{
if(a==20)
{
b--;
// P1=~P1;
a=0;
if(b==6529)
TR0=0;
qian=b/1000;
bai=b%1000/100;
shi=b%1000%100/10;
ge=b%1000%100%10;
}
xianshi(qian,bai,shi,ge);
}
}
void exter1() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
void chushihua()
{
EA=1;
ET0=1;
TR0=1;
TMOD=0x01;
TH0=(65536-50000)/256; //装初值
TL0=(65536-50000)%256; //装初值
}
void delay(unsigned int i)
{
while(i--);
}
void xianshi(uint qian,uint bai,uint shi,uint ge)
{
P2=3;
P0=table[ge];
delay(50);
P2=2;
P0=table[shi];
delay(50);
P2=1;
P0=table[bai];
delay(50);
P2=0;
P0=table[qian];
delay(50);
}
51单片机用4个按键,每个按键被按下都会使数码管显示一个数值
5. [问答题] [技能题画10配线图写出程序]按下按钮S1,数码管显示1;按下按钮S2,数码管显示2;按下按钮S3,数码管显示3;按下按钮S4,数码管显示4;能互相直接切换。按下停止按钮后,数码管熄灭。。
利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开...
现成的有与之差不多的,功能是倒计时,到一定值后停止 include <reg52.h> include <intrins.h> define uchar unsigned char define uint unsigned int uchar code table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77,0x7C, 0x39...
MCS-51单片机4个I\/O口的作用是什么?三总线是如何分配的?为什么说能作为...
4个I\/O口的作用是:第一功能是普通I\/O口,其中P0口需外接上拉电阻;第二功能各不相同,分别为:P0口:作外部三总线的地址总线(低8位)\/数据总线;P1口:作扩展型芯片的外部引脚,例如52的C\/T2外部信号输入,S52之WDT的报警输出等;P2口:作外部三总线的地址总线(高8位);P3口:作串口、定...
51单片机中用4个开关控制4个发光二极管的C语言程序设计
TX-1单片机开发板 独立键盘开关接在P3.4到P3.7口#include<reg52.h>sbit p34=P3^4;sbit p35=P3^5;sbit p36=P3^6;sbit p37=P3^7;void delay(uint z);main(){while(1){if(p34==0)P1=0xfe;if(p35==0)P1=0xfd;if(p36==0)P1=0xfb;if(p37==0)P1=0xf7;}} ...
51单片机通过4个按键控制4路12V继电器,按下一个按键时启动相应的继电器...
CKEY2;1号键转判断2号键 ANL ,#C3H;2-3键控制继电器断 RET CKEY2: CJNE A,KEY2,CKEY3;2号键转判断3号键 ANL ,#CCH;1-3键控制继电器断 RET CKEY3: CJNE A,KEY3,CKEY4;3号键转判断4号键 ANL ,#0F0H;1-2键控制继电器断 RET CKEY4: CJNE A,KEY4,ERROR;4号键键值错误退 ANL...
51单片机用4个按钮分别控制四个LED的程序
} } if(key3 == 0){ delay(200); \/\/按键防抖 if(key3 == 0){ led1=0; \/\/如果低电平亮就=0 led2=0;led3=1;led4=0;} } if(key4 == 0){ delay(200); \/\/按键防抖 if(key4 == 0){ led1=0; \/\/如果低电平亮就=0 led2=0;led3=0;led4=1;} } } } ...
mcs-51单片机4个I\/O的作用是什么?三总线如何分配的?为什么说能作为I\/O...
51单片机的4 个口都 可作为IO口使用,并不是说只有P1口能作为IO口。应该是P0、P2和P3除了IO口外还有第二功能 。而P1口只有IO口功能。P0口可作为数据总线口,它可以对外部存储器低8 位读写。P2口也可以作为系统 扩展时的高8 位地址。P3口除了IO口功能 外,还有第二功能,即P3.0(串行输入口...
8051单片机的4个I\/O口在使用上有哪些分工和特点
8051单片机的4个I\/O口主要有P0、P1、P2、P3。P0口下拉能力较强;P3口有较多的复用功能;P0、P1口当访问外部存储器时可做为DB和AB口,P2口一般做为通用IO口使用。P1,P2,P3具有内部上拉双向输出IO口,P0口无内部上拉电阻为开漏输出,如果做为普通IO口使用,除P0口需要外加上拉电阻,其功能一致。
51系列单片机 程序设计 用4个开关控制步进电机进行启动停止正转和反转...
而且步进电机的控制一定要先设置好定时器。2、功能模块定义:四个按键对应四个函数,每个函数实现不同功能,对于正反转,先定义控制电机每一步时P0口的数据列表,把列表地址赋给DPTR,即TAB1,和TAB2,分别为正转和反转的数据列表,当按下按键1、2的时候,分别把对应的地址赋给DPTR,然后在定时器1的...
51单片机,利用0和1两个数字组成16种模式,并用四个开关控制数码显示一...
以下是使用51单片机(如STC89C52)和4个开关来控制数码管显示一位密码的简单示例代码。假设使用的是共阴数码管,并且数码管的引脚连接到了单片机的P0口。include <reg52.h> \/\/ 引入单片机寄存器定义头文件\/\/ 数码管显示的密码模式,共16种,每种模式使用4位二进制表示unsigned char password[16] = { ...
陈没良老鹳: 用个移位处理就行了 set(void) {static char cnt = 0;P1 = 0x01 << cnt; cnt ++;if (cnt == 4) {cnt = 0; } }
香格里拉县13238519469: 51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序. - ?
陈没良老鹳: #include<reg51.h>#define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9 uchar time,scanled,tiao; uchar disdat[6]="201803"; void delay(unsigned int x) {unsigned int i,j;for(i=0;i<x;i++)...
香格里拉县13238519469: 51单片机问题 编写4个LED数码管循环显示2008的程序. 用C语言写.. - ?
陈没良老鹳: #include<reg51.h> //----------------------------------------------- void delay(unsigned int i) //延时 {unsigned char j;while(i--) for(j = 0; j < 115; j++); } //----------------------------------------------- void main(void) {unsigned char n1;unsigned char code SEG[] = {0xc0, ...
香格里拉县13238519469: 怎么用51单片机驱动4位8段数码管作一个简单的计时器?程序怎么写?要求写出每条语句的解释.要用汇编的! - ?
陈没良老鹳: 动态显示的要点就是先位选,送段码(这2 个先后也可换一下)延时1~5ms,关显示(即关位选).再下一位.... 我空间里的这个可以参考.http://hi.baidu.com/47okey/blog/item/180367355f735da6d1a2d328.html
香格里拉县13238519469: 求由51单片机控制4x4键盘输入,4个数码管(采用动态扫描)显示 C语言编程思路! - ?
陈没良老鹳: 可以这样写,先计算按了几下了,按下若小于4次,让四个段选端前几个端导通,按下数超过或等于4次你就可以用扫屏的方式来显示就好了.比如第一下按的是8你就可以设置if和else语句组合啊!先有个数组d[]={0xf7;0xfb;0xfd;0xfe}//段选,按了几下设为变量uint a//无符号字符型,if(a<4){if(a=1)P2=d[a-2];P1=data[8];delay();········if(a-1){··········}if(a-2){··········}};else(············)太多了我就不写了.
香格里拉县13238519469: 用89c51单片机和4位数码管做一个动态显示的时钟,程序怎么编写,求大神帮助. - ?
陈没良老鹳: # include <reg51.h> // 显示 0 1 2 3 4 5 6 7 , 8位数码管 试试 char code table[] = {0x3f, 0x06, 0x5b, 0x4f,0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c,0x39, 0x53, 0x79, 0x71}; void delayms(int k); void main() { while (1) { char i = 0; for (P3 = 0xfe; P3 !...
香格里拉县13238519469: 用51单片机4位数码管显示"H38C”,"L25C",C语言程序分别怎么写?P1口是段码输出口,P2.7 - P2.4口是扫描口. - ?
陈没良老鹳: #include<reg52.h>#include<intrins.h> typedef unsigned char uchar; typedef unsigned int uint;//共阳数码管 uchar code table[] = { 0x89,0xb0,0x80,0xc6, //H38C的编码 0xc7,0xa4,0x92,0xc6}; //L25C的编码//延时函数 void delay(uchar t) { uchar i; while...
香格里拉县13238519469: 怎样用51单片机P3.3口外部电平变化做一个4位数码管显示的计数器?要求用C语言编写 - ?
陈没良老鹳: /*p0口接段选,p1口接位选*/#include"reg51.h"#define uchar unsigned char#define uint unsigned int uchar qian,bai,shi,ge; uint num=0; uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管的编码 void ISR(void)//中断...
香格里拉县13238519469: (51单片机)找一个电子时钟的(C语言)程序,用LED灯做秒表,四个数码管做时 - 分.急急急!?
陈没良老鹳: 有XS128的 //延时控制 void delay(void) { int m,n; for(m=14000;m;m--) { for(n=1000;n;n--) {} } } void LED(void) { PORTB=0XFE; delay(); PORTB=0XFC; delay(); PORTB=0XF8; delay(); PORTB=0XF0; delay(); PORTB=0XE0; delay(); PORTB=0XC0; ...
香格里拉县13238519469: 要求用51单片机写个程序,1524864在4个共阳数码管循环滚动,P0口连接数码 - ?
陈没良老鹳: #include#define uchar unsigned char uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0到9 uchar dis[]={1,5,2,4,8,6,4,1,5,2}; uchar base=0,cnt=0; void delay(int a) { uchar i; while(a--)fori=0;i<120;i++); } void t0isr() interrupt 1 { TH0=(...