0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

串行口驱动LED显示的C语言源代码

Wildesbeast 来源:单片机教程网 作者:单片机教程网 2020-09-26 11:36 次阅读

//本文介绍一个串行口驱动led显示的c语言源程序

//一个74hc595位移寄存器驱动三极管驱动led位,

//两个74hc595驱动led段,方式位5位x8段x2=10个数码管

//5分频,每次扫描时间位1.25ms

//定义特殊符号

#define nul 0xf

#define qc 0xc

#define qb 0xb

#define q_ 0xa

#define q__ 0xd

#define q___ 0xe

#define qp 0x10

#define qe 0x11

#define qj 0x12

#define qn 0x13

#define qf 0x14

#define qa 0x15

#define qr 0x16

#define qd 0x17

#define qu 0x18

#define ql 0x19

#define qh 0x1a

#define qwen 0x1b

#define qt 0x1c

#define qla 0x1d

#define qlb 0x1e

#define qlc 0x1f

#define qld 0x20

#define qle 0x21

#define qlf 0x22

#define qlg 0x23

#define qldp 0x24

//显示段信息,不同led排列组合的段信息只需更改8个数值即可。

//因此,该定义具有通用性。

// 显示

// -d 20

// |c 40 |e 10

// - g 80

// |b 2 |f 4

// _a1 .dp 8

#define pa 1

#define pb 2

#define pc 0x40

#define pd 0x20

#define pe 0x10

#define pf 4

#define pg 0x80

#define pdp 8

//--------------

#define l0 pdp+pg

#define l1 255-pf-pe

#define l2 pdp+pc+pf

#define l3 pdp+pc+pb

#define l4 pdp+pa+pb+pd

#define l5 pdp+pb+pe

#define l6 pdp+pe

#define l7 pdp+pc+pg+pb+pa

#define l8 pdp

#define l9 pdp+pb

#define la pdp+pa

#define lb pdp+pd+pe

#define lc pdp+pg+pe+pf

#define ld pdp+pc+pd

#define le pdp+pe+pf

#define lf pdp+pe+pf+pa

#define l_ 255-pg

#define lnul 255

#define ll pdp+pg+pd+pf+pe

#define lp pdp+pa+pf

#define lt pdp+pd+pe+pf

#define lr pdp+pe+pf+pg+pa

#define ln pdp+pg+pa

#define lh pdp+pd+pe+pa

#define ly pdp+pb+pd

#define lu pdp+pg+pd

#define l__ pdp+pg+pb+pc+pe+pf

#define l___ l__-pg

#define l_1 255-pa

#define l_2 255-pa-pg

#define lj 255-(pe+pf+pa)

#define lwen 255-(pd+pe+pg+pb)

#define lall 0

#define lla 255-pa

#define llb 255-pb

#define llc 255-pc

#define lld 255-pd

#define lle 255-pe

#define llf 255-pf

#define llg 255-pg

#define lldp 255-pdp

//串行口驱动led显示程序定义结束

//串行送出的位信息,目前是10位led显示。

unsigned char code un_dig[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb};

//串行送出的短信息。

unsigned char code un_disp[]={l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,l_,lb,lc,l__,l___,lnul,lp,le,lj,ln,lf,la,lr,ld,lu,

ll,lh,lwen,lt,lla,llb,llc,lld,lle,llf,llg,lldp,lnul};

sbit d_clk=P0^0; //移位时钟

sbit d_dat=P0^1; //移位数据

sbit d_st=P0^2; //移位锁定

unsigned char dig; //位扫描计数器

unsigned char d[10]; //显示缓冲

//送出8位串行数据

void out_disp(unsigned char dd) {

unsigned char i;

for (i=0;i《8;i++) {

if (dd&1) d_dat=1; else d_dat=0;

d_clk=0;

dd》》=1;

d_clk=1;

}

}

//控制小数点和闪烁,显示数据|0x040表示有小数点;显示数据|0x80表示闪烁。

void out_displ(unsigned char dd) {

if (dd》=0x80) {

if (s001》flash_time) {out_disp(0xff);return;}

}

dd&=0x7f;

if (dd》=0x40) {

dd=un_disp[dd&0x3f]^pdp;

} else dd=un_disp[dd];

out_disp(dd);

}

unsigned int s001; //闪烁时间参考

void int_t0(void) interrupt 1 {

unsigned char dd;

TL0=TL0+30;TH0=0xfb; //800

time++;

if ((++s001)》=800) s001=0;

// 显示

if ((++dig)》4) dig=0;

d_st=0;

dd=d[dig+5];

out_displ(dd);

dd=d[dig];

out_displ(dd);

out_disp(un_dig[dig]);

d_st=1;

}

//串行口驱动led显示程序主程序开始

void main(void) {

unsigned char i;

TMOD=0x1;

TR0=ET0=1;

EA=1;

for (i=0;i《10;i++) d[i]=i; //display test

while (1) {}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22608

    浏览量

    647423
  • 三极管
    +关注

    关注

    142

    文章

    3526

    浏览量

    119803
  • 寄存器
    +关注

    关注

    30

    文章

    5183

    浏览量

    118354
收藏 人收藏

    评论

    相关推荐

    串行口通信技术教程下载

     MCS-51内部除含有4个并行I/O接口外,还有一个串行通信I/O,通过该串行口可以实现与其他计算机系统的串行通信。本章通过实训完成一个
    发表于 09-30 11:07

    串行口的编程

    如何用简单的C语言串行口
    发表于 12-22 16:22

    大神解释下串行口扩展

    基于16c550的串行口扩展系统设计。。有没有大神帮帮忙啊。。
    发表于 06-07 19:03

    《微机原理与汇编语言》89C51串行口串行通信技术

    `《微机原理与汇编语言》89C51串行口串行通信技术[hide][/hide]`
    发表于 04-05 12:51

    51单片机 汇编语言 串行口发送,求代码

    用汇编语言写,串行口发送10个数据,用中断的方式,求代码
    发表于 12-14 16:56

    89C51单片机异步串行口的通信原理和编程

    单片机双机通信一、实验目的二、实验内容三、实验步骤四、C代码如下五、实验结果六、实验体会一、实验目的掌握89C51单片机异步串行口的通信原理和编程掌握
    发表于 11-09 07:32

    串行口和并行通信方式

    一、串行口和并行通信方式并行通信方式串行通信方式异步串行通信方式同步串行通信方式串行通信方式单
    发表于 11-22 06:11

    如何用串行口扩展并行输出口

    串行口扩展并行输出口一、实验目的二、实验内容三、实验步骤四、C代码如下五、实验结果六、实验体会一、实验目的掌握AT89C52串行口方式0的
    发表于 12-06 06:20

    uart串行口通信的相关资料推荐

    的系统。串行口通信就被发明出来,下面来了解串行口通信(uart)。几个概念为了能更好理解串行口通信,在介绍它之前,先来看看几个概念,补充知识,方便深入明白uart工作原理。通信方式通信方式有两...
    发表于 12-09 08:14

    串行口结构与相关寄存器

    目录前言一、串行口结构与相关寄存器1、串行口结构2、相关SFR二、串行口的工作方式三、串行口的初始化前言串行口知识简单整理一、
    发表于 01-19 07:59

    如何使用单片机串行口通信

    一、目标单片机甲机P1端口外接8位拨码开关;乙机P0外接8只LED。要求使用单片机串行口通信,在查询状态下使单片机乙机的8只LED能够显示甲机8位拨码开关的状态。二、布线三、实现四、结
    发表于 01-20 07:55

    串行口的工作方式0介绍

    前言上一篇就已经介绍串行口通信相关概念,寄存器。对串行口通信已经有一定的了解。还介绍串行口工作方式1,这个方式所用最多,务必会用。现在来介绍工作方式0,2,3。下面来了解一下。串行口
    发表于 02-17 06:16

    基于C语言LED呼吸灯简单源代码

    基于C语言LED呼吸灯简单源代码
    发表于 03-10 10:49 16次下载
    基于C<b class='flag-5'>语言</b>的<b class='flag-5'>LED</b>呼吸灯简单<b class='flag-5'>源代码</b>

    CC2540驱动的C语言源代码

    CC2540驱动的C语言源代码
    发表于 03-10 11:13 5次下载
    CC2540<b class='flag-5'>驱动</b>的C<b class='flag-5'>语言</b><b class='flag-5'>源代码</b>

    LED线性阵列显示源代码下载

    LED线阵显示源代码
    发表于 04-24 09:57 6次下载