51单片机之数码管动态循环左移显示手机号

发布者:火星叔叔最新更新时间:2020-07-17 来源: eefocus关键字:51单片机  数码管  动态循环左移 手机看文章 扫描二维码
随时随地手机看文章

课设题目:数码管手机号


要求:四位一体共阴数码管循环左移显示手机号,显示完成蜂鸣器响一次,重复循环

一:共阴极数码管16进制编码1~f如下:

uchar code table[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};


二:proteus中各元件符号表示:CRYSTAL 晶振 ;电解电容:CAP-即可搜到;电阻:res;

7SEG-MPX4-CC 四个共阴二极管显示器 1234 是阴公共端;

排阻:respack


三:总体电路图

   

实物图:(前三位的手机号,太懒,不想上传太多图片了)

四  代码实现

#include

#define uchar unsigned char;

#define uint unsigned int;

 

sbit beep=P1^2;

sbit P2_0 = P2^0;//位选数据的十位,即左边第一位数码管

sbit P2_1 = P2^1;//位选数据的个位,即第二位数码管

sbit P2_2 = P2^2;//位选数据的十位,即第三位数码管

sbit P2_3 = P2^3;//位选数据的个位,即最后一位数码管

 

unsigned char tcount,a=0,kk=0;

unsigned char table1[]={0x00,0x00,0x00,};//加上你想要显示的手机号对应十六进制

 

/*     延时1ms的延时函数         */

void delay_ms(unsigned int n)

{

    unsigned int i=0,j=0;

    for(i=0;i        for(j=0;j<123;j++);

}

 

/*      数码管显示函数           */

void SMG_display()

{

   P0=table1[kk];//第1个数码管显示的数字

   P2_0 = 0;

   delay_ms(2);

   P2_0 = 1;

 

   P0=table1[kk+1];//第2个数码管显示的数字

   P2_1 = 0;

   delay_ms(2);

   P2_1 = 1;

 

   P0=table1[kk+2];//第3个数码管显示的数字

   P2_2 = 0;

   delay_ms(2);

   P2_2 = 1;

 

   P0=table1[kk+3];//第4个数码管显示的数字

   P2_3 = 0;

   delay_ms(2);

   P2_3 = 1; 

}

 

/*       定时器初始化            */

void Timer0Init()

{

  TMOD=0x01;    //定时器0中断方式1

    TH0=(65536-5000)/256; //设初值5000us=5ms

    TL0=(65536-5000)%256;

  EA=1; //打开总中断开关

  ET0=1; //T0中断允许

    TR0=1; //T0中断开始(启动T0)

}

 

/*       定时器中断             */

void timer0() interrupt 1 using 0 

{

TH0=(65536-5000)/256;    //无自动重装载功能,需要再次设初值

        TL0=(65536-5000)%256;

tcount++;                 //中断循环次数,每次进入中断tcount数值加1

 

SMG_display();

if(tcount==200) //200*5000us=1s

{

tcount=0;

kk++;

if(kk>10)

{

kk=0;

beep=0;

delay_ms(50);

beep=1;

}

}

}

/*     主函数                 */

void main()

{

Timer0Init();

while(1);

}

关键字:51单片机  数码管  动态循环左移 引用地址:51单片机之数码管动态循环左移显示手机号

上一篇:51单片机定时器/计数器基础知识介绍
下一篇:单片机2——动态数码管的一些实例

推荐阅读最新更新时间:2024-11-11 17:20

51单片机PCF8591四路AD数值LCD1602屏显示源码
单片机源程序: /**********************BST-V51实验开发板例程************************ * 平台:BST-V51 + Keil U3 + STC89C52 * 名称:四路AD数值LCD1602屏显示 * 公司:深圳市亚博软件开发有限公司 * 晶振:11.0592MHZ ******************************************************************/ /*----------------------------------------------- 名称:IIC协议 PCF8591ADDA转换 显示有4个,注意
[单片机]
基于51单片机超声波测距带语音播报JQ6500
功能说明: 1.本设计采用STC89C52单片机作为主控制器; 2.LCD1602液晶显示测量的距离和温度; 3.带有温度补偿功能(DS18B20传感器); 4.测量范围0.02m~4m,精度为0.01m; 5.带实时语音播报功能; 6.按键功能:按键2:加报警值按键3:减报警值按键1:设置按键(只有在按下设置的时候才可以加减报警值),在未按下按键1时,按下按键3播报测量距离。 实物制作图: 原理图: uchar ONE2 ={0x7E,0x04,0x03,0x00,0X0C,0xEF};//米 uchar ONE3 ={0x7E,0x04,0x03,0x00,0X0B,0xEF};//点 uchar ONE4 ={0x7E
[单片机]
基于<font color='red'>51单片机</font>超声波测距带语音播报JQ6500
51单片机C编程(十二、LM016L液晶显示)
#include reg51.h #define uchar unsigned char #define uint unsigned int #define LCDPORT P0 uchar code tab = I LIKE MCU! ; uchar code tab1 = HELLO! ; sbit LCDE=P3^5; sbit LCDRW=P3^6; sbit LCDRS=P3^7; void WriteCMD(uchar); void init(); void WriteData(uchar); void Delay(); void mydelay(int); void main() { uint
[单片机]
51单片机数据传送指令列表
操作码 目标操作数 可选择的源操作数 说 明 MOV A Rn direct @Ri DPTR Rn;direct;@Ri;# data A;direct;# data A;Rn;direct;@Ri;# data A;direct;# data # data16 内部传送 内部传送 内部传送 内部传送 数据指针赋值 PUSH POP 隐含(SP) direct direct 隐含(SP) 压栈,只能用直接寻址 退栈,只能用直接寻址 XCH A Rn; direct; @Ri 内部交换 XCHD
[单片机]
8051单片机(STC89C52)以定时器中断模式实现倒计时器
之前用轮询方式实现了定时器精准定时, 这里用前后台系统架构实现倒计时器. 每10ms都会触发一次中断处理程序T0_INT(), 根据tcount的值, 决定显示个位数字还是十位数字: 当tcount = 100时, 将tcount置回初始值0, 并将sec的值减1. 当sec的值减到-1时, 将sec重新置回15. #include STC89C5xRC.H unsigned char code DIG_CODE = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};//对应数码管显示0~9 int tcount = 0;//记录经过的10m
[单片机]
80<font color='red'>51单片机</font>(STC89C52)以定时器中断模式实现倒计时器
mcs-51单片机LED显示程序设计
入口:把要显示的数分别放在显示缓冲区60H-65H共6个单元中,并且分别对应各个数码管LED0-LED5。 出口:将预置在显示缓冲区中的6个数成对应的显示字形码,然后输出到数码管显示器中显示。 单片机led显示程序如下: DISP: MOV SCON,#00H ;初始化串行口方式0 MOV R1,#06H ;显示6位数 MOV R0,#65H ;60H-65H为显示缓冲区 MOV DPTR,#SEGTAB ;字形表的入口地址 LOOP: MOV A,@R0 ;取最高位的待显示数据 MOVC A,@A+DPTR ;查表获取字形码 MOV SBUF,A ;送串行口显示 DELAY: JNB TI,DELAY ;等
[单片机]
51单片机设计方案TOP10(六)
传统的伏特表在我们的日常生活及科学研究中起到了其独特的作用,但是在科学技术日新月异、集成芯片在日常生活中的应用越来越广泛的今天显得比较落伍:①它们的量程往往在出厂以前就限定好的,不能根据具体使用场合进行相应调整;②测量精度有限;③不能够将测量结果用语音播放出来。本文将介绍一种由单片机最小系统、模-数转换电路 、语音电路、LED显示电路组成的单片机式语音播报伏特表。    1、硬件设计   整个系统的组成可以分成四大部分:单片机、模-数转换电路、语音电路、LED显示电路。下面就主要的部分进行具体介绍。   1.1、单片机   目前流行的单片机很多,其中89C51自带有片内ROM和一定数量的RAM,一般不需要扩展片外的存储器,并且
[模拟电子]
<font color='red'>51单片机</font>设计方案TOP10(六)
51单片机几个延时程序
简介:51单片机几个精确延时程序:在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响. 一. 500ms延时子程序(晶振12MHz,一个机器周期1us.) 程序: void delay500ms(void) { unsigned char i,j,k; for(i=15;i 0;i--) for(j=202;j 0;j--) for(k=81;k 0;k--); } 计算分析: 程序共有三层循环 一层循环n:R5*2 = 81*2 = 162us DJNZ 2us 二层循环m:R6*(n+3) = 202*165 =
[单片机]
热门资源推荐
热门放大器推荐
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习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