单片机C语言程序设计:8 只数码管滚动显示数字、字符

发布者:创新驿站最新更新时间:2013-06-06 来源: 21ic关键字:单片机  C语言  程序设计 手机看文章 扫描二维码
随时随地手机看文章

单片机C语言程序设计:8 只数码管滚动显示数字、字符

/*  名称:8 只数码管滚动显示单个数字

说明:数码管从左到右依次滚动显示

0~7,程序通过每次仅循环选通一只数码

*/

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//延时

void DelayMS(uint x)

{

uchar t;

while(x--) for(t=0;t<120;t++);

}

//主程序

void main()

{

}

uchar i,wei=0x80;

while(1)

{

for(i=0;i<8;i++)

{

P2=0xff;        //关闭显示

wei=_crol_(wei,1);

P0=DSY_CODE[i];发送数字段码

P2=wei;          //发送位码

DelayMS(300);

}

}
 

/*  名称:8 只数码管动态显示多个不同字符

说明:数码管动态扫描显示 0~7。

*/

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; [page]

//延时

void DelayMS(uint x)

{

uchar t;

while(x--) for(t=0;t<120;t++);

}

//主程序

void main()

{

uchar i,wei=0x80;

while(1)

{

for(i=0;i<8;i++)

{

P0=0xff;

P0=DSY_CODE[i];发送段码

wei=_crol_(wei,1);

}

}

}
/*  名称:8 只数码管闪烁显示数字串

 


*/

说明:数码管闪烁显示由 0~7 构成的一串数字

本例用动态刷新法显示一串数字,在停止刷新时所有数字显示消失。

 

#include

#define uchar unsigned char

#define uint unsigned int

//段码表

uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//位码表

uchar code DSY_IDX[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

//延时

void DelayMS(uint x)

{

uchar t;

while(x--) for(t=0;t<120;t++);

}

//主程序

void main()

{

uchar i,j;

while(1)

{

for(i=0;i<30;i++)

{

for(j=0;j<8;j++)

{

P0=0xff;

P0=DSY_CODE[j];    //发送段码

P2=DSY_IDX[j];    //发送位码

DelayMS(2);

  }

} [page]

P2=0x00; //关闭所有数码管并延时

DelayMS(1000);

}

}

 

 

 

 

 

 

/*  名称:8 只数码管滚动显示数字串

说明:数码管向左滚动显示 3 个字符构成的数字串

*/

#include

#include

#define uchar unsigned char

#define uint unsigned int

//段码表

uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//下面数组看作环形队列,显示从某个数开始的 8 个数(10 表示黑屏)

uchar Num[]={10,10,10,10,10,10,10,10,2,9,8};

//延时

void DelayMS(uint x)

{

uchar t;

while(x--) for(t=0;t<120;t++);

}

//主程序

void main()

{

uchar i,j,k=0,m=0x80;

while(1)

{ //刷新若干次,保持一段时间的稳定显示

for(i=0;i<15;i++)

{

for(j=0;j<8;j++)

{  //发送段码,采用环形取法,从第 k 个开始取第 j 个

P0=0xff;

P0=DSY_CODE[Num[(k+j)%11]];

m=_crol_(m,1);

P2=m;    //发送位码

DelayMS(2);

  }

}

k=(k+1)%11; //环形队列首支针 k 递增,Num 下标范围 0~10,故对 11 取余

}

}

关键字:单片机  C语言  程序设计 引用地址:单片机C语言程序设计:8 只数码管滚动显示数字、字符

上一篇:华硕多款产品选用Atmel maXTouch T系列单芯片控制器
下一篇:8位单片机 16位 32位区别?

推荐阅读最新更新时间:2024-03-16 13:25

单片机EM78P156的I/O口复用技巧
0 引言 大多单片机设计中都需要很多的引脚来实现各种各样的输入检测和输出显示或控制功能。这在引脚数不能再增加的前提下。常常会显得引脚数不够。所以能否把芯片的固有资源发挥到极致,往往是决定此系统性价比的关键。本文借鉴软件操作系统的分时复用原理,来把任务分成多个时间片,在不同的时间片执行不同的任务。从而实现了较少I/O口的多功能控制。 1 EM78P156N单片机的主要功能 EM78P156N是台湾义隆公司推出的8位单片机,图1所示是该芯片的引脚排列图。该器件的主要功能如下: ◇工作电压:2.5~5.5 V; ◇工作温度范围:-40℃~85℃; ◇工作频率在晶振模式时的范围为:DC~20MHz(5V)、DC~8MHz(3V)
[单片机]
<font color='red'>单片机</font>EM78P156的I/O口复用技巧
单片机I/O口的开漏输出及推挽输出区别
推挽输出:可以输出高,低电平,连接数字器件; 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止. 要实现 线与 需要用OC(open collector)门电路.是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小,效率高。输出既可以向负载灌电流,也可以从负载抽取电流。 ////////////////////////////////////
[单片机]
<font color='red'>单片机</font>I/O口的开漏输出及推挽输出区别
基于AT89C51单片机的电动车无线遥控系统
  本系统以单片机AT89C51 为电动车的控制核心, 利用红外遥控器配以红外接收头及直流电机的正反转控制电路来实现电动车的运动控制。系统由红外线遥控器, 红外线接收模块, 电动机驱动模块, 显示及声光指示模块, 方向控制模块等几部分组成。系统流程如图1, 原理框图如图2. 图1 原理流程图 图2 系统框图   1 红外遥控系统   通用红外遥控系统由发射和接收两大部分组成, 应用编/ 解码专用集成电路芯片来进行控制操作, 如图3 所示。发射部分包括键盘矩阵、编码调制、LED 红外发送器; 接收部分包括光、电转换放大器、解调、解码电路。 图3 红外遥控系统框图 1. 1 遥控发射器及编码   当发
[单片机]
基于AT89C51<font color='red'>单片机</font>的电动车无线遥控系统
51单片机总线与非总线的程序对比
简介:三总线简称ADC,这总是让我想起ADC的芯片,A是地址总线,D是数据总线,C是控制总线,是控制片外ROM、RAM和I/O的。 #include #include #define uchar unsigned char #define uint unsigned int uchar code table = The distance is ; uchar code table1 = 00.0cm ; sbit shuru=P1^0; sbit yidianling=P1^0; sbit yidianyi=P1^3;//延时 void delay(uint z) { uint x,y;
[单片机]
51<font color='red'>单片机</font>总线与非总线的程序对比
PIC单片机在线串行编程(ICSP)的实现
  ICSP(In-Circuit Serial Programming)即在线串行编程,通过保持RB6和RB7引脚为低电平,VDD 为编程电压,并将MCLR(VPP)引脚电压从VIL增加到VIHH,器件便进入编程/校验模式。此时,RB6为编程时钟线,RB7为编程数据线。在该模式下,RB6和RB7都是施密特触发器输入,当RB7驱动数据时,它是CMOS输出驱动。   复位后,为使器件进入编程/校验模式,程序计数器(PC)指向00h地址。然后可向器件发送一个6位的命令,根据这一命令是装入还是读出,14位编程数据将被提供给器件或是从器件中读出。但是在线串行编程模式下,看门狗定时器电路不能产生器件复位。 硬件电路 在线串行编程电路应该注意
[单片机]
PIC<font color='red'>单片机</font>在线串行编程(ICSP)的实现
Microchip为中国各高校电子工程专业优秀学生颁发奖学金
  近日,全球领先的整合 单片机 、混合信号、模拟器件和闪存专利解决方案的供应商—— Microchip  Technology Inc.(美国微芯科技公司)向来自六所中国一流大学的52名优秀大学生授予了奖学金,作为 Microchip 大学计划的一种体现。本年度首场颁奖典礼于4月3日在广州举行。下面就随嵌入式小编一起来了解一下相关内容吧。   奖学金获得者根据一系列严格的标准从六所大学电子工程专业顶尖的本科及硕士研究生候选名单中挑选而出。首先,他们必须参加过 Microchip 联合实验室组织的各种活动,通过相关课程并在评估中取得优异的成绩。其次,他们必须积极参与过创新活动,获得“微芯杯”电子设计竞赛奖项,或者曾使用Micro
[嵌入式]
【自学51单片机】6 ---数码管动态显示、中断系统介绍
1、数码管的动态显示 1.1 动态显示基本原理 静态显示:通过三八译码器控制一个数码管显示数值。 动态显示:又称动态扫描,通过轮流点亮数码管(一个时刻只有一个点亮),利用人眼视觉的余晖效应,让人看数码管看起来全部点亮。 如何实现动态显示? 把数码管的整体扫描时间(整体扫描时间 =单个数码管点亮时间*数码管个数)限定在10ms以内即可。当刷新频率大于100HZ,即刷新时间小于10ms,就可做到无闪烁。设计程序时选一个接近10ms,又比较规整的值就可。 1.2 数码管动态显示秒表(0~999999) 程序流程图 程序 #include reg52.h sbit ADDR0 = P1^0; sbit ADDR1 = P1
[单片机]
【自学51<font color='red'>单片机</font>】6 ---数码管动态显示、中断系统介绍
基于单片机的键盘显示设计
一、实验目的 1、掌握8031系统中,扩展8279键盘显示接口的方法。 2、掌握8279工作原理和编程方法。 二、实验内容 1.实验原理图: 2、实验内容 在外接的键盘功能板上,按数字键,数码管上应相应能显示按下的数字,按下功能键,能相应执行其它功能程序。 3、实验说明 利用8279可以实现对键盘/显示器的自动扫描,以减轻CPU负担,具有显示稳定,程序简单,不会出现误动作等特点。本实验利用8279实现显示扫描自动化。 三、程序 程序清单: ORG 08F0H HA7S: MOV SP,#53H MOV DPTR,#0B001H MOV A,#00H
[单片机]
基于<font color='red'>单片机</font>的键盘显示设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved