导航:首页 > 操作系统 > 单片机中三位数码管原件

单片机中三位数码管原件

发布时间:2024-11-28 09:18:17

❶ 用51单片机程序显示3位7段数码管,求具体程序

假设为共阴极数码管,驱动输入端接单片机P1口,共阴极接P2口的0.1.2.脚。我的程序如下,当前显示数字123
#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef long int uint32;
code uint8 number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay_ms(uint16 x)//1ms延时
{
uint8 i = 121;
while(x > 0)
{
i = 121;
while(i > 0)
i --;
x --;
}
}
void xianshi(uint16 x)
{
uint8 i=0;
for(i=0;i<=2;i++)
{
P2=~(1<<i);
switch(i)
{
case 0:P1=number[(x/1)%10];break;
case 1:P1=number[(x/10)%10];break;
case 2:P1=number[(x/100)%10];break;
default:break;
}
delay_ms(10);
}
}
main()
{
while(1)
{
xianshi(123);
}
}

❷ 3位数码管引脚图,与单片机的接法!如何区分共阴共阳!

如果有电路图,你可以参考电路图。至于是共阴或共阳,你可以用代码来测试一下,让连接数码管的IO输出高电平或低电平。大部分单片机的数码管都是共阳极的,因为单片机IO默认输出是高电平。共阴或共阳关键在“共”字上,只要用万用表测量数码管的8个引脚中那一个引脚是接电源的负极或是正极,只要找出这一个引脚就知道是共阴或是共阳了,因为只有一个引脚和其他的7个引脚是不同的。

❸ 用51单片机设计3位led数码显示管作秒表00.0-99.0求设计电路与c语言程序

#include "STC12C54.H"
#define uchar unsigned char
#define uint unsigned int
#define dataport P1//P1直接驱动数码管的8个阳极
sbit wei1=P3^3;//再有三个管脚接3个三极管驱动数码管的阴极
sbit wei2=P3^4;

sbit wei3=P3^5;
uint a=0;//中断次数计数,一次50ms,20次为1 秒
//共阴数码管七段码
uchar TABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//延时子程序
void delay1ms(uint t)
{

uint i,j,k;
for(i=t;i>0;i--)
for(j=15;j>0;j--)
for(k=27;k>0;k--);
}
//显示子程序
void display(uint n)
{
uchar a1,a2,a3;
a1=n/100%10;
a2=n/10%10;
a3=n%10;
wei1=1;
dataport=TABLE[a1];
delay1ms(1);
wei1=0;
dataport=0x80|TABLE[a2];//这里多个小数点
delay1ms(1);

wei3=1;
dataport=TABLE[a3];

delay1ms(1);
wei3=0;
}
void init(void)
{
TMOD=0X01;
TH0=(655536-50000)/256;//定时50ms
TL0=(655536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P1M0=0;
P1M1=0xff;//P1口设为推挽输出,驱动能力强
P3M0=0;
P3M1=0x38;//P3.3P3.4 P3.5口设为推挽输出
}
void main(void)//主程序
{
init();//初始状态设定
while(1)
{
display(a/2);//显示计数值,以十分之一秒为单位
}
}
void timer0(void)interrupt 1//中断子程序
{
TH0=(655536-50000)/256;
TL0=(655536-50000)%256;
a++;
if(a==1980)a=0;//1980次是99秒
}

❹ 利用51单片机和3位数码管实现10分钟内的简易计时器

修改如下:
#include<reg51.h>
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbitkey1=P2^7;
sbitkey2=P2^6;
sbitweiH=P3^0;
sbitweiM=P3^1;
sbitweiL=P3^2;
uintnum=0,ge=0,shi=0,fen=0,k;//num用来计数,ge为各位显示,shi为十位显示,fen为分钟显示

voiddelayms(uintxms)
{
uinti,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}

ucharkey1scan(void)
{if(key1==0)
{delayms(10);
if(key1==0)
{while(!key1);
return1;
}
return0;
}

ucharkey2scan(void)
{if(key2==0)
{delayms(10);
if(key2==0)
{while(!key2);
return1;
}
}
return0;
}

voidshowtime()interrupt1//时间显示
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
num++;
num%=3;
switch(num)
{
case0:
weiL=1;//显示秒的个位
P1=0xff;
P1=table[ge];
delayms(5);
weiL=0;
break;
case1:
weiM=1;//显示秒的十位
P1=0xff;
P1=table[shi];
delayms(5);
weiM=0;
break;
case2:
weiH=1;//显示分钟,只显示0-9
P1=0xff;
P1=table[fen];
delayms(5);
weiH=0;
break;
}

voidmain()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
num=0;
while(1)
{
if((key1scan()==1)&&(key2scan()!=1))break;//按键1按下,按键2未按下开始计时
}
while(1)
{
delay(1000);
ge++;
if(ge>9)
{
ge=0;
shi++
if(shi>5)
{
fen++;
if(fen>9)fen=0;
}
}
showtime();
}
}

阅读全文

与单片机中三位数码管原件相关的资料

热点内容
数据库查询系统源码 浏览:614
php5314 浏览:354
完美国际安装到哪个文件夹 浏览:666
什么app可以扫一扫做题 浏览:537
程序员编码论坛 浏览:923
淘点是什么app 浏览:658
中国高等植物pdf 浏览:453
51单片机时间 浏览:181
后台如何获取服务器ip 浏览:265
单片机流水灯程序c语言 浏览:232
程序员第二职业挣钱 浏览:237
运行里怎么输入服务器路径 浏览:838
pythonstepwise 浏览:508
刘一男词汇速记指南pdf 浏览:61
php认证级别 浏览:366
方舟编译啥时候推送 浏览:1009
php手机验证码生成 浏览:675
哲学思维pdf 浏览:14
凌达压缩机有限公司招聘 浏览:534
weblogic命令部署 浏览:36