如何在10位LED数码管显示自己的学号
发布网友
发布时间:2022-05-01 22:43
我来回答
共1个回答
热心网友
时间:2022-06-24 12:28
#include <reg51.h>
unsigned char num,num2=0;//num用于计数,刷新数码管,num2用于选择要显示的数字
unsigned char code display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//数码
unsigned char com[]={0x01,0x02,0x04,0x08};//位选地址
void main()
{
TMOD=0x01;//设置定时器0工作方式1
TH0 = (65536-917)/256;//1ms延时初值计算
TL0 = (65536-917)%256;;
EA=1;//开总中断
ET0=1;//定时器0中断
TR0=1;//开始计时
while(1){
if(num==10){ //定时器中断10次,也就是10ms
num=0; //清零
P1=~com[num2];//送入位选信号
P2=0xff;//消影
P2=display[num2];//送入段选信号
num2++; //num2=0~3,四个数码管轮流显示。
if(num2>=4)
num2=0;
}
}
}
void Timer0() interrupt 1 //定时器中断
{
TH0 = (65536-917)/256;//重新赋值
TL0 = (65536-917)%256;;
num++;//
}
然后就是一个使用点的例子,实现59s的计时,电路图和上边是一样的,直接上代码:
#include <reg51.h>
unsigned char code display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned char com[]={0x01,0x02,0x04,0x08};
unsigned char num,num2=0,time[4];
unsigned int num3;
void main()
{
TMOD=0x01;
TH0 = (65536-917)/256;
TL0 = (65536-917)%256;;
EA=1;
ET0=1;
TR0=1;
time[0]=0;
time[1]=0;
time[2]=0;
time[3]=0;
while(1){
if(num==10){
num=0;
P1=~com[num2];
P2=0xff;
P2=display[time[num2]];
num2++;
if(num2>=4)
num2=0;
}
if(num3==1000)//计数1000次,计时1s
{
time[3]++;//更新第四位
if(time[3]>=10)
{
time[3]=0;
time[2]++;//更新第三位
if(time[2]>=6)
time[2]=0;
}
num3=0;
}
}
}
void Timer0() interrupt 1
{
TH0 = (65536-917)/256;
TL0 = (65536-917)%256;;
num++;
num3++;
}
使用上述代码,就可以实现了
单片机C51编程(C语言):实现学号的显示(学号是10位数字)
如果直接用I/O口驱动,8位数码管就这样写:wei=位选 duan=段选 //断码表 uchar code shuzi[12]={0xc0,0xf9,0xa4,0xb0,0x99,//0,1,2,3,4,0x92,0x82,0xf8,0x80,0x90,//5,6,7,8,9,0x00,0xff};void led_scan(void){ uchar i,j;//共阳数码管 wei=0xff;j=0x01;for(i=...
单片机C51编程(C语言):用数码管实现学号的显示,直接显示。学号从7041931...
假设数目管共阴,用P0口控制7个段,用P1口控制8个位。//这里我只给出重点,简单的初始化操作你自己也可以写 unsigned char led7_seg[10] = {写入0到9对应7段码值};unsigned char led_dis[8] = {0,4,1,9,3,1};unsigned char led_end=1,position,time;void led_display();void main(...
单片机数码管静态显示学号1830508,用keil 最好有过程,在图上的过程上...
define uchar unsigned char // 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};void delay(uchar z){ uchar i,j;for(i=0;i<120...
数码管 先显示学号再通过按键显示年月日
也可以使用外接一个按键,来进行功能选择,不过感觉轮换显示的方式就行了,很实用。
一、数码管显示 1、六位数码管自己的姓名和学号(姓名为开头的英文字母...
1、六位数码管自己的姓名和学号(姓名为开头的英文字母) 2、效果为滚屏显示 这个简单,就是数码管的动态显示:把姓名和学号的数码管编码放在数组a[ ]中,用数组b[6]表示段选编码 第一次显示:数组b[6]选数组a[0]到a[5];第二次显示:数组b[6]选数组a[1]到a[6];……以此类推 中间加个...
用c语言编程,用数码管同时显示1-6或自己的学号后六位这6个数字,并让显...
sbit wela=P2^7;uchar num;uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z);void main(){ wela=1;//11101010 P0=0xea;wela=0;while(1){ for(num=0;num<16;num++){ dula=1;P0=table[num...
Proteus仿真,动态显示时数码管一闪一闪的,不稳定。
本人单片机新手,求大神指教。我在做显示学号(学号:201015020137),利用的是数码管动态显示,但是仿真时数码管一闪一闪的。程序如下:(没贴完整程序,因为贴不下。) #include <at89x51.h> #define led11 P3_0 #define led12 P3_1 #define led13 P3_2 #... 展开 qq...
显示译码器显示4位学号
如果您需要使用显示译码器来显示4位学号,可以采用以下步骤:1、选择符合需求的显示译码器:根据您的具体需求和硬件条件,选择支持4位数字显示的显示译码器。常见的显示译码器有BCD译码器、数码管译码器等。2、连接显示译码器:将显示译码器与控制芯片或其他驱动电路连接,以便通过输入信号控制译码器的工作...
单片机开发板STC89C52..想要在四个数码管显示自己的学号
我先虚拟你所使用的数码显示位最高4位 且单片机位数是8位 AHH=10 AH=90 AL=62 ALL=31 首先注意表格制作 0-9 对应的数据 不显示的数据为00H应该 那么放在 0A位上 0--1 -- 2 -- 3---4---5---6---7--8---9---A...L---H---P---E---F 0AFH,06H,...00H...
51单片机,8位共阴极数码管动态显示12位学号,按键调整走动速度,C语言的...
10, 10, 10, 10, 10, 10, 10, 10,1, 3, 9, 2, 5, 8, 0, 7, 4, 6, 3, 2,10, 10, 10, 10, 10, 10, 10, 10};unsigned char j = 0, k = 1;void DelayMS(unsigned int x){ unsigned char i;while(x--) for(i = 200; i > 0; i--);} void display(...