51单片机 数码管的显示与译码器

发布者:ByteChaser最新更新时间:2017-01-08 来源: eefocus关键字:51单片机  数码管  显示  译码器 手机看文章 扫描二维码
随时随地手机看文章

共阳极数组0~9:display[]={0xC0,0xF9,0xA4,0xB0,0x91,0xA2,0x82,0xF8,0x80,0x90}

共阳极数组A~F:display[]={0x88,0x83,0xA6,0xC1,0x86,0x8E}

共阴极数组0~9:display[]={0x3F,0x06,0x5B,0x4F,0x6E,0x6D,0x7D,0x07,0x7F,0x6F}

共阴极数组A~F:display[]={0x77,0x7C,0x59,0x3E,0x79,0x71}

共阴、两组四位一体数码管,位选接74LS138译码器,输入(位选)CBA接P20,P21,P22。段选通过74573后接P1口。

若不使用译码器,可直接将位选段接IO口,赋值改变。

/*******************************************************************************

 2 * 实 验 名         : 动态数码管显示

 3 * 实验说明         : 8位数码管依次显示0~7

*******************************************************************************/

 8 #include

 9 

10 #define GPIO_DIG P1         //Digitron  数码管

11 sbit LSA= P2^0;

12 sbit LSB= P2^1;

13 sbit LSC= P2^2;

14 

15 unsigned char code DIG_CODE[10]={

16 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //0~9的显示码

17 void DigDisplay();

18 

19 void main(void)

20 {

21     while(1)

22         DigDisplay();                

23 }

24 

25 

26 void DigDisplay()

27 {

28     unsigned char i;

29     unsigned int j;

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

31     {

32         switch(i)     //位选,选择点亮的数码管,

33         {

34             case(0):

35                 LSA=0;LSB=0;LSC=0; break;//显示第0位

36             case(1):

37                 LSA=1;LSB=0;LSC=0; break;//显示第1位

38             case(2):

39                 LSA=0;LSB=1;LSC=0; break;//显示第2位

40             case(3):

41                 LSA=1;LSB=1;LSC=0; break;//显示第3位

42             case(4):

43                 LSA=0;LSB=0;LSC=1; break;//显示第4位

44             case(5):

45                 LSA=1;LSB=0;LSC=1; break;//显示第5位

46             case(6):

47                 LSA=0;LSB=1;LSC=1; break;//显示第6位

48             case(7):

49                 LSA=1;LSB=1;LSC=1; break;//显示第7位    

50         }

51         GPIO_DIG=DIG_CODE[i];//发送段码

52         j=10000;                         //扫描间隔时间设定,若减少j,可观察到稳定显示的0~7 (扫描速度太快,人眼识别不了)

53         while(j--);    

54         GPIO_DIG=0x00;//消隐

55     }

56 }


 1 /*******************************************************************************

 2 * 实 验 名         : 数码管秒表显示

 3 * 实验说明         : 0~59依次显示

*******************************************************************************/

 8 #include

 9 

10 #define GPIO_DIG P1         //Digitron  数码管

11 #define uchar unsigned char

12 #define uint unsigned int

13 sbit LSA= P2^0;

14 sbit LSB= P2^1;

15 sbit LSC= P2^2;

16 

17 uchar shi,ge,num1=0,num=0;

18 uchar code DIG_CODE[10]={

19 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //0~9的显示码

20 void Delay5ms();

21 void DigDisplay(uchar shi,uchar ge);

22 

23 

24 void main()

25 {                                                //200微秒@20MHz

26     TMOD = 0x01;        //设置定时器模式

27     TL0 = 0xA8;        //设置定时初值

28     TH0 = 0xFD;    //设置定时初值

29     EA = 1;         // 开总中断

30     TF0 = 0;        //清除TF0标志

31     ET0 = 1;        // 开定时器0中断

32     TR0 = 1;        //定时器0开始计时

33     while(1)

34     {

35         DigDisplay(shi,ge);

36     }

37 }

38 

39 void DigDisplay(uchar shi,uchar ge)

40 {

41     GPIO_DIG=DIG_CODE[shi];        //段选

42     LSA=0;LSB=0;LSC=0; 

43     Delay5ms();

44     GPIO_DIG=DIG_CODE[ge];     

45     LSA=1;LSB=0;LSC=0;

46     Delay5ms();   

47 }

48 

49 void Timer0Init(void) interrupt 1

50 {

51     TL0 = 0xA8;        //重装初

52     TH0 = 0xFD;

53     num1++;

54     if(num1==200)         //5次200ms即为1s到

55     {

56          num1=0;

57          num++;

58          if(num==60)

59              num=0;

60          shi=num/10;

61          ge = num%10;

62     }    

63 }

64 

65 

66 void Delay5ms()        //@12.000MHz

67 {

68     unsigned char i, j;

69 

70     i = 59;

71     j = 90;

72     do

73     {

74         while (--j);

75     } while (--i);

76 }


关键字:51单片机  数码管  显示  译码器 引用地址:51单片机 数码管的显示与译码器

上一篇:51单片机 按键,键盘检测
下一篇:51单片机是冯诺依曼还是哈佛结构

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

51单片机学习:ADC模数转换实验--光敏电阻AD采集
实验名称:ADC模数转换实验--光敏电阻AD采集 接线说明: 实验现象:下载程序后,数码管上显示AD模块采集光敏电阻的AD值 注意事项: ***************************************************************************************/ #include public.h #include smg.h #include xpt2046.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数
[单片机]
51单片机执行指令的过程
51单片机执行指令的过程 单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。 计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。 一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器
[单片机]
基于NioslI的SOPC系统中lED显示驱动IP核设计
  NioslI 嵌入式 处理器是A1tera公司提出的S OPC 解决方案,是一种用户可随意配置和构建的32位嵌入式处理器,结合丰富的 外设 可快速、灵活地构建功能强大的SOPC系统。A lte ra公司提供了一些通用的IP核,使得用户可轻松集成属于自己的专用功能;但对于一些特定的外设,没有现成可用的IP核,如 液晶 模块CBGl28064等。   用户可通过自定义逻辑的方法在SOPC设计中添加自定义IP核。在实际应用中, LCD 液晶 显示 器凭借功耗低、体积小、轻薄及控制 驱动 简单等特点,在智能仪器、仪表和低功耗电子产品中得到了广泛应用。本文以深圳秋田视佳实业有限公司的液晶显示模块CBGl28064为例,在基于Ni
[电源管理]
基于NioslI的SOPC系统中lED<font color='red'>显示</font>驱动IP核设计
日本研发出可伸缩薄膜显示
日本科学家开发出可伸缩的薄膜状显示屏,该显示屏可以贴在皮肤上使用。 在实验中,将显示屏贴在手背上,能成功放映出简单的视频。在用途方面,预计可让老年人一目了然地掌握自身健康信息。 结合测量心率和体温等的传感器,可穿戴设备将让人们能随时掌握自己的身体状况。(达光)
[医疗电子]
PIC16F877A+18B10温度测量+LCD1602显示温度
;18B10温度测量+ LCD 1602显示温度 ;实战目的 ;1、学习18B20单总线温度 传感器 的使用。 ;2、学习LCD的使用。 ;3、学习10进制转10进制的方法。 ;所有资源: ;1、TMRO定时器。产生温度转换所需要的延时时间。 ;2、PORTA口。即做LCD显示时可控制端口,RA2同时做18B20的数据接口 ;3、PORTC口。做LCD显示时的数据口。 ;功能说明 ;1、通过18B20采集当前环境 ;最高温度可显示127.9375,最低温度可显示0.0625(无负温度处理部分) ;2、将温度在LCD上显示(3位整数,4位小数) ;硬件连接 ;1,在18B20按DEMO板上的标识插在插座U8上 ;2,拨码开关S13第
[单片机]
LED显示屏采购中 常有的几个误区
一、寿命10万小时 LED材料厂家出具的技术资料表明LED发光体的寿命为理想状态下1O万小时.理想状态指在实验室中恒压恒流状态下LED发光体从发光到完全不发光的时间,1O万小时折合11年。 一个木桶的盛水的多少是由最低的木板决定的,LED显示屏目前使用的为民品级别的器件,使用寿命不超过8年。作为显示屏的功能是观看,当显示屏亮着只有晚上才能看清楚时是无法说明它是合格的、具备使用价值的。 一辆汽车可以开15年,如果闲置3年则报废。使用的环境和方法对产品的寿命影响很大。 二、遵守国标 LED显示屏通用规范为1995年的部颁标准。至今还有许多公司号称符合国家标准,在科技发展的8年以后再看当时的标准,已经不
[电源管理]
数字显示仪表故障检查与处理方法
在工业现场中有大量显示仪表在使用,显示仪表故障处理是用户面临的问题,本文介绍显示仪表本机的故障判断思路、故障检查方法及故障处理,帮助大家提高处理显示仪表故障的能力。 1、显示仪表的故障判断思路 对温度、压力、流量、液位等参数进行测量时,大多是用显示仪表来显示控制或记录仪记录测量结果。显示仪表出故障时,其故障现象:有仪表不会动作,显示最大或最小,显示误差大,仪表反应迟钝,显示大幅度波动等。 显示仪表不会动作的原因有中断或输入信号中断。这是比较容易检查和判断的。显示最大或最小值,就需要检查输入信号是否正常,如热电阻断路,仪表已会显示最大。显示仪表有断偶保护电路,则当热电偶断路时仪表已会显示最大或设定的某个温度值。如果是与变送器
[测试测量]
什么是51单片机最小系统
1.什么是51单片机 51 内核单片机是 指兼容Intel 的8051指令系统的单片机统称;从诞生到现在的几十年时间,已成为一款经过市场考验、成熟的芯片产品。目前国内也众多51单片机厂家,且还有众多带51内核,用于各种不同场景的专用类单片机。 51单片机内部框架: 以下以STC89C52单片机为例,其内部总体结构其基本特性如下: 8位CPU、4-8k 字节 ROM、128 字节 RAM、21 个特殊功能寄存器32根I/0线、可寻址的 64 字节外部数据、程序存贮空间、2个 16 位定时器计数器中断结构:具有二个优先级、五个中断源、一个全双工串行口、位寻址(即可对寄存器进行位操作)功能,能按位进行逻辑运算的位处理器。 除 1
[单片机]
什么是<font color='red'>51单片机</font>最小系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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