1.如何做数码管显示0
这个也能做毕业设计
/* 程序详细功能介绍:
* 利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阳数码管的a-h的笔段上,
* 数码管的公共端通过三极管8550选通。在数码管上循环显示0-9数字,显示时间的间隔可通过修改延时程序。
* LED数码显示原理:
* 七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,
* 可分成共阴极型和共阳极型。
* LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,
* 不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,
* 由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。
* 下面给出共阳极的字形码
*/
#include <AT89X51.H>
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char dispcount;
void delay02s(void);
void main(void)
{
P1_0=0;//选通第一位数码管的阳极位选端,即给数码管的共阳极供电
while(1)
{
for(dispcount=0;dispcount<10;dispcount++)
{
P0=table[dispcount];
delay02s();
}
}
}
void delay02s(void)
{
unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=30;j>0;j--)
for(k=248;k>0;k--);
}
2.单数码管循环怎么显示0到9
原发布者:兑现那诺言妮儿
单只数码管循环显示0-9报告设计题目:单只数码管循环显示0~9设计要求:单片机控制1只数码管,循环显示0~9需求分析:本设计要求单只数码管循环显示0~9,这里采用的是共阴极数码管。让数码管显示数字的步骤为:1)使数码管的公共端接地(共阴极)上。2)将显示码送到单片机的P0口,向数码管的各个段输出不同的电平,使单个数码管循环显示0-9这10个数字。复位电路:
在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。基本的复位方式单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。设计原理:一、数码管显示原理 我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指
3.单个数码管循环显示0到9的程序
主函数中的P2 = LED_CODE[led];led++;可以删去,没有任何的意义
因为定时和循环显示都在中断函数里面完成了,主函数只是起了一个初始化的作用,led++影响LED_CODE[led]的值,它使LED_CODE[10] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }数组中的10个值依次赋给P2,依次显示0——9的数字,即当led = 0时,P2接受0xC0,对应数码显示0,当led = 1时,P2接受LED_CODE[1]=0xF9,对应显示1,依次类推,从而显示0——9。
4.一位数码管循环显示0到9实验程序
具体程序如下:
#include <reg51.h>
#define uchar unsigned char
sbit P20=P2^0;
void delay_ms(unsigned int ms) //1ms延时
{
uchar a;
while(ms--)
for(a=123;a>0;a--);
}
uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F};
void main()
{
while(1)
{ uchar b;
P20=0;
P0=tab[b];
delay_ms(1000);//1s延时
b++;
if(b==10)
b=0;
}
}
扩展资料:
数码管原理
数码管常用段数一般为7段有的另加一个小数点,还有一种数码管是类似于3位“+1”型。数码管位数有半位,1,2,3,4,5,6,8,10位等。数码管根据LED的接法不同分为共阴和共阳两类,了解数码管的这些特性,数码管对编程是很重要的。
因为不同类型的数码管,除了数码管的硬件电路有差异外,数码管编程方法也是不同的。数码管的发光原理是一样的,只是数码管的电源极性不同而已。
数码管颜色有红,绿,蓝,黄等几种。数码管广泛用于仪表,时钟,车站,家电等场合。选用数码管时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用数码管内部引脚图片。
数码管引脚定义每一笔划都是对应数码管一个字母表示数码管DP是小数点。数码管透过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是数码管动态驱动。每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应。
尽管实际上各位数码管并非同时点亮LED数码管,但只要数码管扫描的速度足够快,数码管给人的印象就是一组稳定的显示资料,数码管不会有闪烁感,数码管动态显示的效果和静态显示是一样的,数码管能够节省大量的I/O口,而且数码管功耗更低。
5.利用C语言编程在单只静态数码管循环显示0~9的10个数字
说明:主程序中的循环语句反复将 0~9 的段码送至 P0 口,使数字 0~9 循环显示
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
//主程序
void main()
{
uchar i=0;
P0=0x00;
while(1)
{
P0=~DSY_CODE[i];
i=(i+1)%10;
DelayMS(300);
}
}
6.单片机的PO口连数码管,现控制数码管循环显示0
把 数码管的 1-9 的 对应的码算出来就好了例如:#include //数字0-9的字形码unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};unsigned char dispcount;void delay02s(void);void main(void){P1_0=0;//选通第一位数码管while(1){for(dispcount=0;dispcount<10;dispcount++){P0=table[dispcount];delay02s();}}} void delay02s(void){unsigned char i,j,k;for(i=20;i>0;i--)for(j=30;j>0;j--)for(k=248;k>0;k--);}补充:单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
7.用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示
有一个一模一样的提问,好吧,俺再发布一次 给你一份我自己写的,利用四位数码管显示模拟时钟的程序吧,供你研究 另外,再给你一个一位数码管的,是你要求的那种 这两个都是利用单片机的定时器中断来产生秒信号的 下面这个是 四位数码管的,最下边的是一位数码管的,端口不一样的话,自己改下/***************************************************************************/#include 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 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;}//如果达到一小时,小时加一 }/***************************************************************************/。
8.急
#include
9.利用C语言编程在单只静态数码管循环显示0~9的10个数字
说明:主程序中的循环语句反复将 0~9 的段码送至 P0 口,使数字 0~9 循环显示*/#include
转载请注明出处众文网 » 单只数码管循环显示0-9毕业论文