单片机C51编程(C语言):实现学号的显示(学号是10位数字)

作者&投稿:局刮 (若有异议请与网页底部的电邮联系)
单片机C51编程(C语言):用数码管实现学号的显示。我们学号是从704193101到704193146。~

是否要输入?还是直接显示?
是用串口输入?还是键盘输入?
补充问题,我看到补充后会给与解答.

动态显示后三位,前六位因数值固定,用数码管直接显示,不于单片机连接。数码管用共阳。
main函数部分根据自己情况自行编制
以下为显示部分

uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code ACT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void delay(uint k)
{
unsigned int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++){;}
}
}

void display(uint date)
{
P0=SEG7[date%10];P2=ACT[0];delay(1);
P0=SEG7[(date%100)/10];P2=ACT[1];delay(1);
P0=SEG7[(date%1000)/100];P2=ACT[2];delay(1);
P0=0X00;P2=0Xff;
}

#include
#include
#define uchar unsigned char
void convert();
void display();
void delay();
//共阴:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
code unsigned char Led[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71};
uchar num,sw,gw;
void main()
{
num=0;
while(1)
{
convert();
display();
delay();
num++;
if(num==100)num=0;
}
}
void convert()
{
sw=num/10;
gw=num%10;

}
void display()
{
P1=Led[gw];
P2=Led[sw];
}
void delay()
{
uchar i,j,k;
for(k=0;k<2;k++)
for(i=0;i<250;i++)
for(j=0;j<250;j++);
}
使用仿真软件电路连接如下图

你用什么驱动数码管呢?
不同的驱动,程序写法不同。
如果直接用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=0;i<8;i++)
{
duan=shuzi[i];
wei=!j;
delay(200);
j<<=1
;
}
wei=0xff;
}

你用什么驱动数码管呢?

不同的驱动,程序写法不同。

如果直接用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=0;i<8;i++)
{
duan=shuzi[i];
wei=!j;
delay(200);
j<<=1 ;
}
wei=0xff;
}

你要在什么上面显示?是数码管还是LCD?数码管需要查表把数字转换为显示的代码。LCD则需要数字的ASCII码。

要是显示9位,还不如直接用LCD1602显示好了,接口都少用一些,而且也就十快钱左右吧。

是啊~~ 用LCD 还是数码管
如果用数码管 还有用有十位的~

C51单片机:用数码管显示0到999的值。求c语言程序和原理图
答:include<reg51.h> define uchar unsigned char uchar temp;int key1,key,disbuf;// 此表为 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};...

c51单片机问题C语言
答:单片机支持汇编编程的C51编程。1、汇编编程,传统的汇编代码。缺点:可读性不强,优点:代码精简 2、C51编程,使用专用C语言编程。缺点:代码不精简,优点:可读性强。KeilC和IAR等编译软件,同时支持C51和汇编代码。

请高手用单片机C语言编写c51时钟程序,含有6个数显管,3个按键,要自己写...
答:define DOU 1818//按键消抖时间sbit led_1=P2^0;sbit led_2=P2^1;sbit led_3=P2^2;sbit led_4=P2^3;sbit led_5=P2^4;sbit dp=P1^7;sbit an_mod=P2^5;sbit an_movright=P2^6;sbit an_up=P2^7;unsigned char code tab[]={0x90,0xd7,0xa2,0x86,0xc5,0x8c,0x88,0xd6,...

c语言编程c51单片机
答:include <reg51.h> define uchar unsigned char define uint unsigned int main(){ uint xdata *xp;//定义指向片外RAM的指针 uint data *p;//定义指向片内RAM的指针 uchar i;//定义循环变量 xp=0x100;//指向片外RAM的100H单元 p=0x30;//指向片内RAM的30H单元 for(i=0;i<10;i++){//...

单片机C51 C语言编程问题!!!
答:void display(uchar shi,uchar ge){ uint ledout[1],i; //这里应该是ledout[2]我在proteus上进行了仿真,但是不知道什么原因,只对共阳极LED数码管好使。我就把程序稍微做了改动,仿真结果可以正确计时。我把程序贴在下面供参考 include<reg52.h> define uchar unsigned char define uint unsig...

用C语言对单片机编程如何定义C51单片机
答:sbit P00=P0^0;sbit P01=P0^1;……//数字是我臆造的,不同的CPU值是不同的.这样子的定义可以让你只需要知道怎么用端口,而不需要去知道端口位置.所以当你知道端口位置时,不用包含头文件,自己写这些宏定义,也能达到同样的效果。你说的ATx51是不是指atmel的系列单片机??是的话,用reg51就可以...

C51单片机编程
答:include<reg51.h> define uchar unsigned char define uint unsigned int sbit high_key=P1^0;sbit low_key=P1^1;sbit led=P2^0;sbit speak=P2^1;uint count;void delay(uint x){ uchar j;while(x--){ for(j=0;j<125;j++){;} } } void main(void){ high_key=0;low_key=1;le...

用C51单片机控制12个LED流水灯的C语言程序怎么写?
答:include "REG52.H"//控制引脚定义 sbit LED1 = PX.X; //P0.0-P3.7任意引脚 ... ... ...sbit LED12 = PX.X;//宏定义灯亮灯灭 define LED1_ON( ) LED1 =0 //阳极接电源 define LED1_OFF( ) LED1 =1 //阳极接电源 ... ... ...define LED12_ON( )...

C51单片机编程,按键控制流水灯
答:include "reg51.h"unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED灯的花样数据 void delay(unsigned char time){ //延时函数 unsigned int j=15000;for(;time>0;time--)for(;j>0;j--);} void main(){ bit dir=0,run=0; //标志位定义及初始化 char i;while(1){ ...

单片机c51求大神写一个C语言程序!挺急的
答:include<reg51.h>#include<intrins.h>void delay(int a){unsigned char i;while(a--)for(i=0;i<120;i++);}void ext0() interrupt 0{P1=0xff;delay(5000);}main(){unsigned char led=0xfe;EX0=1;IT0=1;EA=1;while(1) { P1=led; led=_crol_(led,1); delay(...