STC89C52单片机 点亮两个数码管,可以显示 00——10 共 11 个数字

发布者:TechGuru123最新更新时间:2022-10-19 来源: csdn关键字:STC89C52  单片机  数码管 手机看文章 扫描二维码
随时随地手机看文章

手动显示

#include //包含51头文件

#include //包含移位标准库函数头文件


#define uint unsigned int

#define uchar unsigned char


sbit DU = P2^6;//数码管段选

sbit WE = P2^7;//数码管段选


//共阴数码管段选表0-9

uchar code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};


/*====================================

函数 : delay(uint z)

参数 :z 延时毫秒设定,取值范围0-65535

返回值 :无

描述 :12T/Fosc11.0592M毫秒级延时

====================================*/

void delay(uint z)

{

uint x,y;

for(x = z; x > 0; x--)

for(y = 114; y > 0 ; y--);


/*====================================

描述 :两位共阴数码管动态显示

====================================*/

void display(uchar num1, uchar num2)

{

/*第一位显示*/

P0 = 0XFF;//清除断码

WE = 1;//打开位选锁存器

P0 = 0XFE; //1111 1110

WE = 0;//锁存位选数据

DU = 1;//打开段选锁存器

P0 = tabel[num1];//

DU = 0;//锁存段选数据

delay(1);


/*第二位显示*/

P0 = 0XFF;//清除断码

WE = 1;//打开位选锁存器

P0 = 0XFD; //1111 1101

WE = 0;//锁存位选数据

DU = 1;//打开段选锁存器

P0 = tabel[num2];//

DU = 0;//锁存段选数据

delay(1);

}


void main()//main函数自身会循环

{

while(1)

{

display(0, 0); //数码管显示函数

}

}  


说明:

由于传参的缘故,显示 00——10 共 11 个数字只需要调用

自定义的函数void display(uchar num1, uchar num2)

依次传入:


display(0 ,1);

display(0 ,2);

display(0 ,3);

display(0 ,4);

display(0 ,5);

display(0 ,6);

display(0 ,7);

display(0 ,8);

display(0 ,9);

display(1 ,0);


所以以上其它代码不再复制。


自动显示

#include //包含51头文件

#include //包含移位标准库函数头文件


#define uint unsigned int

#define uchar unsigned char


sbit DU = P2^6;//数码管段选

sbit WE = P2^7;//数码管段选

uchar count = 0; // 控制数码管显示的变量

uchar i = 0;  // 控制循环次数的变量


//共阴数码管段选表0-9

uchar code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};


/*====================================

函数 : delay(uint z)

参数 :z 延时毫秒设定,取值范围0-65535

返回值 :无

描述 :12T/Fosc11.0592M毫秒级延时

====================================*/

void delay(uint z)

{

uint x,y;

for(x = z; x > 0; x--)

for(y = 114; y > 0 ; y--);


/*====================================

描述 :两位共阴数码管动态显示

====================================*/

void display(uchar num1, uchar num2)

{

/*第一位显示*/

P0 = 0XFF;//清除断码

WE = 1;//打开位选锁存器

P0 = 0XFE; //1111 1110

WE = 0;//锁存位选数据

DU = 1;//打开段选锁存器

P0 = tabel[num1];//

DU = 0;//锁存段选数据

delay(1);


/*第二位显示*/

P0 = 0XFF;//清除断码

WE = 1;//打开位选锁存器

P0 = 0XFD; //1111 1101

WE = 0;//锁存位选数据

DU = 1;//打开段选锁存器

P0 = tabel[num2];//

DU = 0;//锁存段选数据

delay(1);

}



/*====================================

变量 count:负责控制点亮哪2个数码管,例如count 为1 则点亮 01 数码管

描述 :由于同时点亮2个数码管,需要2个数码管不断的循环才能实现2个数码管同时点亮

所以在这里将数码管显示在单片机的代码封装起来,来让我们调用。

====================================*/

void singlechip_show_num(uchar count){  

switch(count){ // 通过 switch case 语句对 数码管的数值进行精准的管理

    case 0 :

       display(0 , 0);

       break; 

    case 1 :

       display(0 , 1);

       break;

case 2 :

       display(0 , 2);

       break;

case 3 :

       display(0 , 3);

       break;

case 4 :

       display(0 , 4);

       break;

case 5 :

       display(0 , 5);

       break;

case 6 :

       display(0 , 6);

       break;   

case 7 :

       display(0 , 7);

       break; 

case 8 :

       display(0 , 8);

       break;

case 9 :

       display(0 , 9);

       break;

case 10 :

       display(1 , 0);

       break;      

}

}


void main()//main函数自身会循环

{

while(1)

{

for (i = 0; i < 200; i++){   // 使点亮的数码管循环 200 次,保证人眼能够看到的数码管是同时显示的。

singlechip_show_num(count);   // 调用数码管显示函数

}


count++; //每次循环200次结束, count 变量自身+1,单片机显示+1后的数值


if(count == 11){ // 当count 变量 等于11时,我们把变量再重新初始化为0,从0重新开始计数循环

count = 0;

}

}

}  


效果显示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


关键字:STC89C52  单片机  数码管 引用地址:STC89C52单片机 点亮两个数码管,可以显示 00——10 共 11 个数字

上一篇:STC89C52单片机 使用定时器使LED灯闪烁
下一篇:STC89C52单片机 独立键盘

推荐阅读最新更新时间:2024-11-14 09:48

三分钟告诉你:AVR单片机的熔丝与解锁
AVR单片机的熔丝位配置是AVR单片机初学者很容易出错的地方,其实只要注意一些事项,还是能够尽量避免单片机被锁死,即使单片机被锁死,也可以使用一些方法解锁,本文讲述我在刚开始接触AVR单片机时熔丝位配置出现的一些问题。 1、AVR单片机的熔丝位是比较独到的特征,可以控制系统的时钟,JTAG调试、看门狗、芯片加密等等。图1是progisp软件,对于初学者来说,对熔丝位不熟悉,可以先将2处的编程熔丝对勾去掉,这样在编程的时候,就不会对熔丝位进行编程,单片机出厂的默认设置就可以使用。点击1处进入熔丝位配置界面。 图1 图2为位配置方式,这里的每一位都不能随意点击,尤其是熔丝低位控制时钟的地方,一般来说,直接对位进行配置并不
[单片机]
三分钟告诉你:AVR<font color='red'>单片机</font>的熔丝与解锁
带分频整形的单片机频率计(1Hz—20MHz)
单片机频率计 系统采用单片机+分频模块+整形模块+lcd1602液晶显示+按键设计而成。 频率的测量范围为1Hz—20MHz能测量各种周期信号,能测出正弦波、三角波或方波等波形的频率。通过LCD1602液晶显示屏显示检测到的即时频率数值(最多8位数,单位为Hz)。 废话不多说,先上图 正面,组装之前 正面,组装之后 背面,焊线面 频率计电路原理图如下: PCB设计图如下: 74HC14电路设计 由于三极管放大电路输出的信号不是标准的方波信号,存在着上升沿不够陡峭,波形类似于正弦波等问题,为了使单片机对信号更好的采集,这里使用了施密特触发器74HC14对三极管放大电路输出的信号进行整形。电路图如图所示。
[单片机]
带分频整形的<font color='red'>单片机</font>频率计(1Hz—20MHz)
AVR单片机之Bootloader技术详解
ATmega128具备引导加载支持的用户程序自编程功能(In-System Programming by On-chipBoot Program),它提供了一个真正的由MCU本身自动下载和更新(采用读/写同时 Read-While-Write 进行的方式)程序代码的系统程序 自编程更新的机制。利用AVR的这个功能,可以实现在应用编程(IAP)以及实现系统程序的远程自动更新的应用。 IAP的本质就是,MCU可以灵活地运行一个常驻Flash的引导加载程序(Boot Loader Program),实现对用户应用程序的在线自编程更新。引导加载程序的设计可以使用任何的可用的数据接口和相关的协议读取代码,或者从程序存储器中读取 代码,然后将
[单片机]
单片机构成的智能仪表特点?软硬件是怎样配置的?
用单片机构成的智能仪表有什么特点? 用单片机构成的智能仪表是最典型的单片机应用系统,具有典型的硬件电路和软件结构,有条件实现标准化硬件和模块化软件。 智能仪表的软硬件是怎样配置的? 智能仪表的硬件电路除了基本的扩展部分之外,一般都配有采集电路、显示器、按键、打印机等。软件有采集、采集控制、数据处理、显示、打印等。
[单片机]
第26节:乘法运算的溢出
从业十年,教你单片机入门 第26讲: 乘法的溢出规律跟加法的溢出规律是一样的。举一个例子如下: unsigned char k=30; unsigned char n=10; unsigned char a; a=k*n; 分析: k和n相乘,相当于30乘以10,运算结果是300(十六进制是0x012c)保存在一个隐藏中间变量,根据前面加法运算的规律,我猜测这个隐藏中间变量可能是unsigned int类型,然后再把这个中间变量赋值给单字节变量a,a只能接收十六进制的低8位字节0x2c,所以运算后a的数值由于溢出变成了十六进制的0x2c(十进制是44)。 由于乘法的溢出规律跟加法的溢出规律是一样的,所以不再多举例子。在
[单片机]
MINICUBE2 對78K0微控制器Flash 編程
Flash 編程 本節描述了使用MINICUBE2 對78K0 微控制器進行Flash 編程時的系統配置和啓動/關閉順序。 1.3.1 編程功能的規格定義 1.3.2 系統配置 圖4-34 顯示了Flash 編程的系統配置 1 主機(帶有USB 接口) 2 軟件 包括QB-Programmer 的USB 驅動,參數文件等等 3 USB 線纜(附件) 4 MINICUBE2 (本産品) 5 16-Pin 目标線纜(附件) 6 目标連接口(單獨出售) 关注原装IC网官方微信(ID:yzic998)免费得样品! 1.3.3 系統啓動順序 本節描述了系統啓動順序。請注意先後次序。 (1)軟件的準備和安裝
[单片机]
MINICUBE2 對78K0<font color='red'>微控制器</font>Flash 編程
51单片机的四种工作模式怎么去设置
学51单片机需要专门把C语言学透吗 大家是不是看了很多网上的视频或者文章,他们的建议是不是教你拿一本C语言书看几个月,当真正开始给单片机编程时你会发现单片机编程语言只用到了c语言的百分之十都不到,浪费了自己的青春,消磨了对电子方面的兴趣!真正学习单片机需要一定的动手能力,不误人子弟的教程,理论和实践相结合的教学模式并没有刚开始教大家一堆C语言知识。 所以建议从一块开发板和教程开始学起,起初的知识对C语言的要求很低。之后发现自己的C语言功底不足以使你的程序如鱼得水的时候再回头认认真真学习C语言。 51单片机的四种工作模式怎么去设置,既然它有四种工作模式,像定时计数器一样,要想使用定时计数器它也有四种工作方式,那必然的要有
[单片机]
51<font color='red'>单片机</font>的四种工作模式怎么去设置
单片机设计指纹识别系统
一、电路设计 此电路由最小系统板、LCD1602液晶模块和AS608指纹模块组成。 二、运行效果 三、主代码 /*想要更多项目私wo!!!*/ #include sys.h #include delay.h #include usart.h #include lcd.h #include key.h #include touch.h #include malloc.h #include usmart.h #include MMC_SD.h #include ff.h #include exfuns.h #include fontupd.h #include text.h
[单片机]
<font color='red'>单片机</font>设计指纹识别系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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