找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2768|回复: 1
打印 上一主题 下一主题
收起左侧

八位数码管实现某一位闪烁的方法(基于51单片机)

[复制链接]
跳转到指定楼层
楼主
ID:505300 发表于 2019-4-5 13:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8位数码管时钟显示格式为11-11-11,当如果调整时、分、秒任时,能让其中的两位数码管闪烁,其余不变。

单片机源程序如下:
  1. #include <reg52.h>
  2. #include "MACROANDCONST.H"
  3. #include "DISPLAY.H"
  4. #include "LCD.H"

  5. sbit Shift=P2^5;
  6. sbit Plu=P2^6;
  7. sbit Red=P2^7;
  8. uchar KeyNum;
  9. void
  10. void KeyScan()
  11. {
  12.         if(Shift==0)
  13.         {
  14.                 Delay_ms(5);
  15.                 if(Shift==0)
  16.                 {
  17.                         KeyNum++;
  18.                         while(!Shift);
  19.                         if(KeyNum==1)
  20.                         {
  21.                                 TR0=0;
  22.                                 WriteCommandLCD(0x80+0x44+7,1);
  23.                                 WriteCommandLCD(0X0f,1);
  24.                         }
  25.                 }
  26.                         if(KeyNum==2)
  27.                         {
  28.                                 WriteCommandLCD(0x80+0x44+4,1);
  29.                                 WriteCommandLCD(0X0f,1);       
  30.                         }
  31.                         if(KeyNum==3)
  32.                         {
  33.                                 WriteCommandLCD(0x80+0x44+1,1);
  34.                                 WriteCommandLCD(0X0f,1);       
  35.                         }
  36.                         if(KeyNum==4)
  37.                         {
  38.                                 KeyNum=0;
  39.                                 WriteCommandLCD(0X0c,1);
  40.                                 TR0=1;       
  41.                         }                       
  42.         }
  43.                         if(KeyNum!=0)
  44.                         {
  45.                                 if(Plu==0)
  46.                                 {
  47.                                         Delay_ms(5);
  48.                                         if(Plu==0)
  49.                                         {
  50.                                                 while(!Plu);
  51.                                                 if(KeyNum==1)
  52.                                                 {
  53.                                                         Miao++;
  54.                                                         if(Miao>=60)
  55.                                                         Miao=0;
  56.                                                         Write_SFM(6,Miao);
  57.                                                         WriteCommandLCD(0x80+0x44+7,1);
  58.                                                 }
  59.                                                 if(KeyNum==2)
  60.                                                 {
  61.                                                         Fen++;
  62.                                                         if(Fen>=60)
  63.                                                         Fen=0;
  64.                                                         Write_SFM(3,Fen);
  65.                                                         WriteCommandLCD(0x80+0x44+4,1);
  66.                                                 }
  67.                                                 if(KeyNum==3)
  68.                                                 {
  69.                                                         Shi++;
  70.                                                         if(Shi>=24)
  71.                                                         Shi=0;
  72.                                                         Write_SFM(0,Shi);
  73.                                                         WriteCommandLCD(0x80+0x44+1,1);
  74.                                                 }
  75.                                         }               
  76.                                 }
  77.                        
  78.                                 if(Red==0)
  79.                                 {
  80.                                         Delay_ms(5);
  81.                                         if(Red==0)
  82.                                         {
  83.                                                 while(!Red);
  84.                                                 if(KeyNum==1)
  85.                                                 {
  86.                                                         Miao--;
  87.                                                         if(Miao<=-1)
  88.                                                         Miao=59;
  89.                                                         Write_SFM(6,Miao);
  90.                                                         WriteCommandLCD(0x80+0x44+7,1);
  91.                                                 }
  92.                                                 if(KeyNum==2)
  93.                                                 {
  94.                                                         Fen--;
  95.                                                         if(Fen<=-1)
  96.                                                         Fen=59;
  97.                                                         Write_SFM(3,Fen);
  98. ……………………

  99. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
时钟.rar (49.96 KB, 下载次数: 20)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-4-11 20:46 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表