用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒,定时功能用单片机中断显示
在主函数加一个判断语句就可以。上电复位的函数里吧所有位致零,
硬件电路是什么样的啊? 硬件电路不同 程序也是不一样的 想要得到帮助 就具体说明一下你的硬件 还是硬件也要一同设计呢?
有一个一模一样的提问,好吧,俺再发布一次
给你一份我自己写的,利用四位数码管显示模拟时钟的程序吧,供你研究
另外,再给你一个一位数码管的,是你要求的那种
这两个都是利用单片机的定时器中断来产生秒信号的
下面这个是 四位数码管的,最下边的是一位数码管的,端口不一样的话,自己改下
/***************************************************************************/
#include<reg51.h>
sbit p20=P3^7; sbit p21=P3^6; sbit led=P2^7;//按键及LED端口定义
sbit Axs=P1^3; sbit Bxs=P1^2; sbit Cxs=P1^1; sbit Dxs=P1^0;//数码管位选端口
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示编码
unsigned int h,m,s,t,n;
/***************************************************************************/
void YS(char hs)//延时函数
{char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}
/***************************************************************************/
void XS(int xh,int xm) //显示子函数
{
char d1,d2,d3,d4;
d1=(xh/1)%10; d2=(xh/10)%10;//分离小时
d3=(xm/1)%10; d4=(xm/10)%10;//分离分钟
P0=table[d1];Cxs=0;YS(10);Cxs=1;//小时个位
P0=table[d2];Dxs=0;YS(10);Dxs=1;//小时十位
P0=table[d3];Axs=0;YS(10);Axs=1;//分钟个位
P0=table[d4];Bxs=0;YS(10);Bxs=1;//分钟十位
P0=0x7f; P1=0xfd; YS(10); P1=0xff;//小数点
}
/***************************************************************************/
void main(void)
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//定时器初始化
while(1)//主循环
{
if(p20==0){YS(10);if(p20==0){h++;if(h>23){h=0;}}while(!p20){XS(h,m);}}
if(p21==0){YS(10);if(p21==0){m++;if(m>59){m=0;}}while(!p21){XS(h,m);}}
XS(h,m);//调用数码管显示函数
}
}
/***************************************************************************/
void int1() interrupt 1 //定时器中断
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;t++;
if(t>500){t=0;led=~led;}//LED闪烁
if(n>1000){n=0;s++;}//如果达到一秒,秒加一
if(s>59){s=0;m++;}//如果达到一分,分加一
if(m>59){m=0;h++;}//如果达到一小时,小时加一
if(h>23){h=0;}//如果达到24小时,小时清零
}
/***************************************************************************/
/***************************************************************************/
#include<reg51.h>
sbit Axs=P1^3;//数码管位选端口
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示编码
unsigned int h,m,s,t,n;
/***************************************************************************/
void YS(char hs)//延时函数
{char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}
/***************************************************************************/
void main(void)
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//定时器初始化
while(1)//主循环
{
P0=table[m];Axs=0;YS(10);Axs=1;//小时个位
}
}
/***************************************************************************/
void int1() interrupt 1 //定时器中断
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;
if(n>1000){n=0;m++;}//如果达到一秒,秒加一
if(m>9){m=0;}//如果达到一小时,小时加一
}
/***************************************************************************/
是想好了
用Atmega 16单片机做一个8段数码管显示时钟程序设计
{lcd[3]=min%10;lcd[4]=min\/10; spi_xie(5,lcd[4]);spi_xie(4,lcd[3]);}void show_h(uchar hou){lcd[6]=hou%10;lcd[7]=hou\/10; spi_xie(8,lcd[7]);spi_xie(7,lcd[6]);}void show_d(uchar n){ uchar j;lcd[j]&=0x7f;for(j=0;j<8;j++){ if(n==j) lcd...
利用51单片机驱动一个8段数码管,实现0—F计数
设置一个数码管段位表ledtable,共16个,值就是共阴8 段(含小数点)数码管的段码。 8 段从上面一横开始顺时针依次为a、b、c、d、e、f、g(中间的横)和h(小数点),分别接在单片机IO口的0~7 ,例如要显示0,则段码为0011 1111 即0x3f 。 其它,你可自行推出。程序上实现:ORG 0000HMA...
怎样用一个单片机控制8个数码管
如果是一个8段数码管的8个段码,直接连接8个I\/O到对应的8个段的控制端即可,通过I\/O输出高低电平控制对应的段码。如果是8个数码管,则,每个数码管的8个断码控制线并联总线到I\/O,作为数据控制。每个数码管的使能端口单独控制,或者使用进位模式,做选择控制哪一个数码管显示。
8段led数码管怎么找单片机
拿8段1位数码管做例子。8段指有8个LED,如果是共阴极的,那这8个LED的负极连在一起,正极不连。8个LED的8个正极分别连一个限流电阻,再接到单片机一个IO引脚上。负极接一个NPN三极管的集电极,三极管的发射极接地,基极接一个电阻(可用10K)再接到一个IO引脚上。
用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒...
另外,再给你一个一位数码管的,是你要求的那种 这两个都是利用单片机的定时器中断来产生秒信号的 下面这个是 四位数码管的,最下边的是一位数码管的,端口不一样的话,自己改下 \/***\/ include<reg51.h> sbit p20=P3^7; sbit p21=P3^6; sbit led=P2^7;\/\/按键及LED端口定义 sbit Axs=...
如何用单片机控制8段共阳数码管进行动态显示!!!
段还是位噢位的就参考这个6位的 org 0000h start:mov r0,#00h mov r2,#20h l1: mov a,#00h mov dptr,#8002h movx @dptr,a l2:mov a,r0 mov dptr,#tab movc a,@a+dptr mov dptr,#8004h movx @dptr,a mov dptr,#8002h mov a,r2 movx @dptr,a acall l3 inc r0 mov a...
用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒...
另外,再给你一个一位数码管的,是你要求的那种 这两个都是利用单片机的定时器中断来产生秒信号的 下面这个是 四位数码管的,最下边的是一位数码管的,端口不一样的话,自己改下 \/***\/ include<reg51.h> sbit p20=P3^7; sbit p21=P3^6; sbit led=P2^7;\/\/按键及LED端口定义 sbit Axs=...
如何设计基于单片机的多功能8路抢答器
1.基本功能:(1) 同时供8名选手比赛,分别用8个按钮S0 ~ S7表示。(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。(3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,扬声器发出声响提示,并在七段数码管上显示选手号码。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除...
设计一位8段数码管静态显示接口电路,选用单片机P0作数据信号,并列表写 ...
\/\/数码管显示0~9的段码表,程序运行中当数组值不发生变化时,\/\/前面加关键字code ,可以大大节约单片机的存储空间 P2=0x7f; \/\/P2.7引脚输出低电平,数码显示器第7位接通电源工作 while(1) \/\/无限循环 { for(i=0;i<10;i++){ P0=Tab[i]; \/\/让P0口输出数字的段码92H delay()...
利用51单片机驱动一个8段数码管,实现o-f计数
基础应用。不过得先了解单片机和数码管。
蓬琛好及: 展开全部#include#define uchar unsigned char#define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; uchar num; uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x07,0x7d,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//我用的是573 还有延时也很...
大丰市13660794087: 单片机驱动8位数码管 - ?
蓬琛好及: 设位码接P1; uchar buf[8] = {0}; void display( ){ //1ms运行一次 static uchar w = 0; P1 = 0; P0 = duan[buf[w]]; P1 = (1 << w); w = (w + 1) % 8; //循环+1 }
大丰市13660794087: 求大神做一个C51单片机的程序.问题如下:实现8位共阴数码管循环显示数字20121111,顺便求图.不胜感激!?
蓬琛好及:;项目五 ;任务2 ;点亮8位8段LED数码管 ;CA 共阳 - Common Anode 共同正极 ;CC 共阴 - Common Cathode 共同负极 PORT_O0 EQU P0;DIGITRON字符输出 PORT_O1 EQU P2;DIGITRON字位输出 ORG 0000H LJMP MAIN ORG 0030H ...
大丰市13660794087: 单片机开发板数码管编程 8个数码管依次显示5,每个显示1S,循环 - ?
蓬琛好及: 看你的数码管怎么接,比如段接P1口,位接P2口 #include<reg52.h> #include <intrins.h>unsigned char a;void main(void) {P1=0x6d;//5的段码P2=0;a=0x80; TMOD=0x01;TH0=0xd8;TL0=0xf0; EA=1;ET0=1;TR0=1;while(1){P2=a;} } ...
大丰市13660794087: 可以请问下单片机里边74LS164控制八段数码管的显示应该如何设置CLR和CLK还有DATA端得数值来控制八段数码管 - ?
蓬琛好及: CLR 为清零端,低电平有效,该脚加低电平时,输出被置零,用一个I/O来控制它,起到灭零作用.CLK为脉冲计数输入端,用单片机的某个I/O口输出脉冲给它 DATA的8个输出端用来接8个LED
大丰市13660794087: 单片机是怎么控制8个数字的数码管?8个数字要64个引脚,单片机总共才40个引脚? - ?
蓬琛好及: 驱动的方法有很多,你说的这是单片机直接静态驱动,这种驱动方式编程上最简单,但是消耗IO口太多,一般2位以上的数码管都不用它. 使用单片机直接动态驱动,8位数码管只需要占用16个IO口,其中8个输出段选信号,8个输出片选信号,这种方式比较常用,编程上也不是特别麻烦. 使用锁存器(比如74HC573)通过IO口分时复用来实现,8位数码管只需要8个IO口,段选和片选共用这8个IO口. 最终极的办法:通过串入并出移位寄存器级联驱动,这种方法是静态驱动,无论多少位数码管,只需占用2个IO口,单片机将段选信号串行发出,静态驱动没有片选信号.
大丰市13660794087: 用单片机控制数码管工作 - ?
蓬琛好及: 1. 接电源:vcc(pin40)、gnd(pin20).加接退耦电容0.1uf 2. 接晶体:x1(pin18)、x2(pin19).注意标出晶体频率(选用12mhz),还有辅助电容30pf 3. 接复位:res(pin9).接上电复位电路,以及手动复位电路,分析复位工作原理 4. 接配置:ea(...
大丰市13660794087: 单片机,P0显示P2控制,8个数码管让第1个显示0~9然后第2个,8个循环显示,用汇编写,也就是asm后缀的文件 - ?
蓬琛好及: 定义8个显示缓冲,8个数码管对应8个显示缓冲,改变显示缓冲的数据就改变了数码管显示内容
大丰市13660794087: 在单片机AT89C51的8位数码管上依次循环"7 - 0" 做程序 做图 - ?
蓬琛好及: ORG 0000HJMP BEGINORG 0030H TABLE: ; 共阴极数码管显示代码表DB 3FH,06H,5BH,4FH,66H ;01234DB 6DH,7DH,07H,7FH,6fh ;56789 DELAY: MOV R5,#20 LOOP4: MOV R6,#50H ;延时20X20ms LOOP5: MOV R7,#100DJNZ R...
大丰市13660794087: 用89c52单片机怎么通过74ch595芯片控制8位数码管呢??
蓬琛好及: 用89c52单片机 的 任意 3 个 IO 口 通过74ch595芯片(串转并), 用 扫描显示的方法 控制8位数码管 的显示, 一片 为 段码 输出,一片为 位选 输出.