173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stc15单片机的数码管实验

htxw 2023-03-15 资讯中心 38 ℃

STC15数码管显示学号

这次做的是用单片机控制数码管显示学号,比用纯数字电路简单方便了许多。相信会有更多的人能够顺利完成。

其实数码管只是LED的一种有序组合,在忘记引脚排序的情况下可以用万用表的通断档来进行测量,从而区分出哪个引脚对应着数码管的哪段LED,同时也可以知道该数码管是共阳还是共阴的。

数码管分为共阳数码管和共阴数码管,区别仅在于他们的内部电路连接方式不同:

如上图

本次用到的单片机还是上次焊接的最小系统板(也可以使用面包板,这个分分钟就能搭建出一个电路来了),建议大家还是自己多动手实践一下,去吧电路焊接一下,这个也是个基本的技能之一。

下面是一个基本的面包板内部结构图:

本次用到的单片机引脚是P0口,如下绿色方框内的部分,共8个IO口:

硬件部分连线如下(这里的连接方式决定了后面程序编写时的编码部分):

一般能在软件中修改的东西最好别去动硬件,除非硬件有问题。

编码举例(仅供参考):

下面是程序部分:

由于这次的硬件比较简单,我就不搭建了啊,你们还是要去练习练习哈!

有点晚,我也该睡觉了!

51单片机STC15控制LED数码管

修改segment=code7[i];那行

定值输出,当i=0表示输出最低位,当i=5表示输出最高位

如要输出定值325981

修改代码

dislpay()

{

uchar i,t,segment;

uint n=325981//n为要输出的正整数值

for(i=0;i6;++i)

{

segment=code7[n%10];

n/=10;

lchclk=0;

...//原代码不变即可

}

}

当然也可将需要表示的正整数n作为display函数参数来做,更具有通用性

stc15f2k60s2单片机如何显示3用数码管

对于共阳极数码管,只要使数码管的a,b,c,d,g段引脚上送入低电平,其他段引脚送入高电平即可显示3,对于a,b,c,d,e,f,g,dp顺序排列的数据线,控制数据为00001101(B)或0x0d(H)。

基于stc15单片机的串口通信,发送数据用数码管显示(源程序)

#includereg51.h

#define uchar unsigned char

uchar code ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳级数码管码表0-9

uchar time,scanled;

uchar disdat[2];

bit flag=0;

void dischg() //显示码转换

{

disdat[0]=s_dat/10; //秒转换

disdat[1]=s_dat%10;

}

void t0isr() interrupt 1 //秒计时

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

time++;

if(time=20)

{

time=0;

s_dat++;

flag=1;

}

}

void t1isr() interrupt 3 //显示控制

{

TH1=(65536-4000)/256;

TL1=(65536-4000)%256;

duan=1;

P0=0xff; //消隐

duan=0;

wei=1;

P0=1scanled; //位码

wei=0;

duan=1;

P0=disdat[scanled];

duan=0;

scanled++;

scanled%=2; //共8位显示

}

main()

{

TMOD=0x21; //定时器0和1都为模式1

TH0=(65536-50000)/256; //定时器0,50毫秒中断一次

TL0=(65536-50000)%256;

TH1=0xfd;

TL1=0xfd;

SCON=0x40;

TR1=1;

TR0=0;

ET0=1;

EA=1;

scanled=0;

time=0;

dischg();

while(1)

{

if(flag)

{

flag=0;

SBUF=s_dat;

while(TI==0);

TI=0;

}

}

}

单片机STC15W设计LED数码管程序报错?

楼上已经把两点都指出了:

①头文件中有重复定义。你看看是不是不慎把STC15.h中的内容复制粘贴过,出现了重复内容。

②源程序中有汉字全角符号。例如粗略一眼就能看到第64行的左右小括号不正常、是全角的。你需要自己检查一遍书写…

用STC15F2K60S2单片机设计数字电压表

//实验用程序 测试通过 STC15F2K60S2 @11.0592MHZ

#include "reg51.h"

#include "intrins.h"

typedef unsigned char BYTE;

typedef unsigned int WORD;

sfr ADC_CONTR = 0xBC;

sfr ADC_RES = 0xBD;

sfr ADC_LOW2 = 0xBE;

sfr P1ASF = 0x9D;

BYTE ch = 0; //ADC回路数

/*----------------------------

延时

----------------------------*/

void Delay(WORD n){

WORD x;

while (n--){

x = 5000;

while (x--);

}

}

/*----------------------------

ADC中断

----------------------------*/

void adc_isr() interrupt 5 using 1{

ADC_CONTR = !0x10;

P2=ADC_RES;

ADC_CONTR = 0x80 | 0x00 | 0x08 | ch;

}

/*----------------------------

初始化ADC

----------------------------*/

void InitADC(){

P1ASF = 0xff;

ADC_RES = 0;

ADC_CONTR = 0x80 | 0x00 | 0x08 | ch;;

Delay(2);

}

void main(){

InitADC(); //初始化ADC

IE = 0xa0;

while (1);

}

stc15单片机的数码管实验的介绍就聊到这里吧,感谢您花时间阅读,谢谢。

本文标签:stc15单片机的数码管实验

<