单片机实现7段数码管显示

发布者:Joyful444Life最新更新时间:2016-09-07 来源: eefocus关键字:单片机  数码管显示 手机看文章 扫描二维码
随时随地手机看文章
这个是我学习单片机过程中所做的第一个实验,我们上课实验用的是汇编的程序,但是个人觉得还是用c语实现时更为简洁!这个例子可以用proteus进行仿真.

 

单片机选择常用的AT89C52,用与控制7段数码管的显示,共有4位7段共阴极数码管,用于显示数据.另外所需的器件如下:

1、74ls273地址锁存器,用于字位锁存器和字型锁存器,上升沿锁存。

2、74ls02双输入或非门,与74ls04、单片机的读写信号一起选中锁存器74ls273,决定数码管的字段和字位的显示内容。

3、74ls04是6输入非门,对单片机输出的片选信号取反,和74ls02一起决定锁存器的片选。

4、7407集电极开路的6正相高压驱动器,提供数码观字型显示的驱动电流。

5、75452双与非门外围驱动器,用与字位驱动,有200mA的输出电流能力。

 

试验流程图:

 

 

 

 

实验电路图:

 

试验程序代码:

 

/* 4位8段数码管分别动态显示“1234”, */

 

#include "7LEDShow.h"

 

void main()

{

 DIGPORT = 0;      // 关闭显示

 

 TMOD = 0x01;      // T0工作方式1

 

 /* 2ms 定时设置 */

 time0_tmp = 65536-time0*fosc/12;

 TH0 = (time0_tmp/256);

 TL0 = (time0_tmp%256);

 

 TR0 = 1;

 ET0 = 1;

 EA = 1;

 

 digbit = 0x01;      // 从第一位数码管开始

 wordbuf[3] = 4;

 wordbuf[2] = 3;

 wordbuf[1] = 2;

 wordbuf[0] = 1;

 

 while(1);

   

}

 

/* 定时器0中断服务子程序,定时动态扫描显示 */

void time0_int(void) interrupt 1

{

 TH0 = (time0_tmp/256);

 TL0 = (time0_tmp%256);

 display();

}

 

 

/* 根据共阴极字型编码表获取0~9,A~B字型代码 */

uchar getcode(uchar i)

{

 uchar p;

 switch (i)

 {

  case 0:  p=0x3f; break;   /* 0 */

  case 1:  p=0x06; break;   /* 1 */

  case 2:  p=0x5B; break;   /* 2 */

  case 3:  p=0x4F; break;   /* 3 */

  case 4:  p=0x66; break;   /* 4 */

  case 5:  p=0x6D; break;   /* 5 */

  case 6:  p=0x7D; break;   /* 6 */

  case 7:  p=0x07; break;   /* 7 */

  case 8:  p=0x7F; break;   /* 8 */

  case 9:  p=0x67; break;   /* 9 */

  case 10: p=0x77; break;   /* A */

  case 11: p=0x7C; break;   /* B */

  case 12: p=0x39; break;   /* C */

  case 13: p=0x5E; break;   /* D */

  case 14: p=0x79; break;   /* E */

  case 15: p=0x71; break;   /* F */

  default:    break;

 }

 return(p);

}

 

/* 显示函数 */

void display(void)

{

 uchar i;

 switch (digbit)

 {

  case 1: i=0;break;

  case 2: i=1;break;

  case 4: i=2;break;

  case 8: i=3;break;

  default:  break;

 }

 

 DIGPORT = 0;      // 关闭显示

 WORDPORT = getcode(wordbuf[i]);  // 送字型码

 DIGPORT = digbit;     // 送字位码

 

 if (digbit<0x08)

  digbit = digbit*2;

 else

     digbit = 0x01;

}

 

 

//7LEDShow.h程序

#ifndef _7LEDSHOW_H    // 防止7LEDShow.h被重复引用

 

#define _7LEDSHOW_H

 

#include        // 引用标准库的头文件

#include

#include

#include

 

#define uchar unsigned char

#define uint unsigned int

 

#define DIGPORT   XBYTE[0x0200] // 定义字位口

#define WORDPORT  XBYTE[0x0100] // 定义字型口

#define fosc 11.0592   // 晶振频率

#define time0 2000   // 定时2000us

 

uchar digbit;     // 字位

uchar wordbuf[4];    // 字型码缓冲区

 

uint idata time0_tmp;    // 临时变量,用于计算定时

 

uchar getcode(uchar i);   // 根据共阴极字型编码表获取字型代码函数

void display(void);    // 显示函数

 

#endif

关键字:单片机  数码管显示 引用地址:单片机实现7段数码管显示

上一篇:C51单片机中常用的头文件
下一篇:单片机实现以太网接口-基于RTL8019

推荐阅读最新更新时间:2024-03-16 15:08

采用AT89C51单片机设计的变频调速控制系统
   1.概述   在电气传动领域中,随着自关断器件技术水平的不断提高,脉宽调制技术(简称PWM技术)也日趋成熟。PMW交流变频调速以其高效率、高功率因数、输出波形好、结构简单等优点,在井下风机、水泵、造纸机等设备中得到了广泛的应用。将单片机应用于交流变频调速系统,可有效地避免传统调速方案中的一些缺点,达到了提高控制精度的目的 ,其特点:   (1)采用单片机可以使绝大多数控制逻辑通过软件实现,简化了电路。   (2)单片机具有更强的逻辑功能,运算速度快,精度高,有大容量的存储单元,可以实现较为复杂的控制。   (3)无零点漂移,控制精度高。   (4)可以提供人机界面,多机连网工作。   根据国内外有关变频调速的最新
[单片机]
采用AT89C51<font color='red'>单片机</font>设计的变频调速控制系统
MCS51系列单片机软件的抗干扰技术中的误区介绍
单片机中存在这样一种广泛流传的误解:在MCS-51系列单片机中,只要用指令使程序从起始地址开始执行,就可以复位单片机,摆脱干扰。通过一个简单的实验,揭示了软件复位的可靠方法。 有的单片机(如8098)有专门的复位指令,某些增强型MCS-51系统单片机虽然没有复位指令,但片内集成了WATCHDOG电路,故抗干扰也不成问题。而普及型MCS-51系列单片机(如8031和8032)既然无复位指令,又不带硬件WATCHDOS,如果没有外接硬件WATCHDOG电路,就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件WATCHDOG等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所谓软件复位就是用
[单片机]
基于单片机的专用信号发生器设计与应用
一 前 言 在简易制导武器中,角位移传感器是姿态修正系统的敏感元件,用来测量弹体的角运动参数并以电信号形式给出三个信息。其中输出两路幅值相等相位相差90°的正弦信号作为弹体偏转测量的基准信号;另一路输出测角信号,该信号相对基准信号的相位反映角偏差的方向、幅值反映角偏差量。专用信号发生器就是模拟角位移输出信号的装置,用来进行后续解调电路以及功放电路的检测。它以单片机为核心,经过D/A转换和放大电路的处理,最后输出反应弹体姿态的基准信号和测角信号。 二 数学模型的建立 根据对输出信号性能指标的要求,基准信号幅值:A, 基准信号频率:f ,假设对A的精度要求为±0.01V,对f的要求为±10Hz,输出信号为正弦信号,可以建
[单片机]
基于<font color='red'>单片机</font>的专用信号发生器设计与应用
手把手教你学51单片机:点亮你的LED
2.1 单片机内部资源 三大资源: Flash:程序存储空间 RAM:数据存储空间 SFR:特殊功能寄存器 2.2单片机最小系统 三要素:电源、晶振、复位电路 2.3LED小灯 限流:5~20mA(限流电阻阻值计算) 自身压降2V 2.4程序代码编写 2.4.1特殊功能寄存器和位定义 eg:sfr P0=0x80; //sfr 关键字,定义一个单片机特殊功能寄存器 sbit LED=P0^0;//为P0^0口赋名LED 注意:写sfr必须根据手册中的寄存器的地址(Add)写,写sbit的时候可以直接将一个其中某一位(eg:P0^0、P0^1…)取出来写。 2.4.2 新
[单片机]
单片机驱动TEA5767 FM立体声收音机C51通用源码
TEA5767 FM立体声收音机,C51单片机通用的源码。 模块某宝上也就2元以内。 推荐使用 Keil uVision5 编译,我是用这个版本编译通过的。 电路原理图如下: 单片机源程序如下: #include REG52.H #include Radio.H #include Key_Handle.H #include Volume_Handle.H extern void Delay_ms(unsigned int i); /********** System inition *************/ void System_Init(void) { Key_Input=0xFF; BEEP_
[单片机]
<font color='red'>单片机</font>驱动TEA5767 FM立体声收音机C51通用源码
基于单片机的指纹考勤管理系统设计
引言 当前Ic卡考勤系统已被很多企业使用,但利用Ic卡考勤有其固有的缺陷。例如,某员工可以携带别人的Ic卡,代替他人打卡,不能达到考勤的真正目的。在计算机串口技术及生物测定技术的基础上,可以利用人身体的生物特征进行身份识别,开发出适于日常管理的考勤软件 。 本系统由考勤机、指纹考勤管理两大部分组成,以指纹模板为标志进行身份验证,利用指纹的唯一性彻底根除考勤中存在的虚假现象,有效地杜绝了考勤管理中的人为因素,充分体现了考勤管理的公正,避免了不必要的人事纠纷。本系统为企业提供了科学、可靠的考勤管理手段,节约了大量的人力财力,是企业体现其现代化管理的最佳考勤模式。 1 系统模型及功能简介 本指纹考勤系统由 指
[单片机]
基于<font color='red'>单片机</font>的指纹考勤管理系统设计
51单片机入门 - 模拟PWM调制控制实验
PWM(脉冲宽度调制) 对模拟信号电平进行数字编码的方法 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 设计要求: 由于AT89系列单片机没有PWM控制器,所以通过定时器产生PWM 通过按钮控制P2.0输出高低电平的时间,占空比可调范围:0~100%,每次按下按钮以10%步进,通过示波器看到对应波形。 - - - - - - - - - - - - - - - - - -
[单片机]
51<font color='red'>单片机</font>入门 - 模拟PWM调制控制实验
一种基于PIC单片机的便携式磁记忆检测仪
   引言   金属构件和零部件发生损坏的主要原因,是各种微观和宏观机械应力集中导致疲劳失效,其基本特征表现为材料在低于静强度极限的交变应力持续作用下,生成多种类型的微观内部缺陷,并逐渐演化为宏观裂纹,裂纹扩展最终导致结构破坏。因此,进行疲劳分析,有效评价应力变形状况,测定未来裂缝发展的位置、大小和方向,成为评价金属零部件与构件结构强度和可靠性的一个重要依据。为了及时准确的找出最大机械应力变形区域,20世纪90年代后期,以杜波夫为代表的俄罗斯学者率先提出一种崭新的诊断技术—金属磁记忆检测。本文采用PIC单片机,设计了高性价比的便携式磁记忆检测仪,具有低成本、低功耗和快速检测等特点,可以满足各种场合,特别是难以到达部位的应力集中区
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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