找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机静态数码管显示实验

[复制链接]
跳转到指定楼层
楼主
ID:302604 发表于 2018-4-6 02:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
静态数码管显示单片机源程序如下:
  1. /**************************************************************************************
  2. *                              静态数码管显示实验                                                                                                  *
  3. 实现现象:下载程序后数码管静态显示0。
  4. 注意事项:                                                                                                                                                                  
  5. ***************************************************************************************/

  6. #include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器

  7. typedef unsigned int u16;          //对数据类型进行声明定义
  8. typedef unsigned char u8; int s=0;
  9. sbit k1=P1^0;         //定义P10口是k1
  10. sbit k2=P1^1;         //定义P11口是k2
  11. sbit LSA=P2^2;
  12. sbit LSB=P2^3;
  13. sbit LSC=P2^4;
  14. //sbit led1=p0^2;
  15. sbit led2=P0^1;

  16. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  17.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
  18. /*******************************************************************************
  19. * 函 数 名         : delay
  20. * 函数功能                   : 延时函数,i=1时,大约延时10us
  21. *******************************************************************************/
  22. void delay(u16 i)
  23. {
  24.         while(i--);       
  25. }
  26. /*******************************************************************************
  27. * 函 数 名         : keypros
  28. * 函数功能                   : 按键处理函数,判断按键K1是否按下
  29. *******************************************************************************/
  30. /*void keypros()
  31. {
  32.         if(k1==0)                  //检测按键K1是否按下
  33.         {       
  34.                 delay(1000);   //消除抖动 一般大约10ms
  35.                 if(k1==0)         //再次判断按键是否按下
  36.                 {
  37.                 s++;          //led状态取反
  38.                 }
  39.                 while(!k1);         //检测按键是否松开
  40.         }
  41.        
  42.                 if(k2==0)                  //检测按键K1是否按下
  43.         {       
  44.                 delay(1000);   //消除抖动 一般大约10ms
  45.                 if(k2==0)         //再次判断按键是否按下
  46.                 {
  47.                 s--;          //led状态取反
  48.                 }
  49.                 while(!k1);         //检测按键是否松开
  50.         }
  51.        
  52.                        
  53. }         */


  54. /*******************************************************************************
  55. * 函 数 名       : main
  56. * 函数功能                 : 主函数
  57. * 输    入       : 无
  58. * 输    出             : 无
  59. *******************************************************************************/
  60. /*void main()
  61. {       

  62.         P0=~smgduan(0);
  63.         delay();
  64. } */

  65. /*******************************************************************************
  66. * 函 数 名         : delay
  67. * 函数功能                   : 延时函数,i=1时,大约延时10us
  68. *******************************************************************************/
  69. /*void delay(u16 i)
  70. {
  71.         while(i--);       
  72. }*/

  73. /*******************************************************************************
  74. * 函 数 名         : DigDisplay
  75. * 函数功能                   : 数码管动态扫描函数,循环扫描8个数码管显示
  76. *******************************************************************************/
  77. void DigDisplay()
  78. {
  79.         u8 i;
  80.         for(i=0;i<9;i++)
  81.         {
  82.                 switch(i)         //位选,选择点亮的数码管,
  83.                 {
  84.                         case(0):
  85.                                 LSA=0;LSB=0;LSC=0; break;//显示第0位
  86.                         case(1):
  87.                                 LSA=1;LSB=0;LSC=0; break;//显示第1位
  88.                         case(2):
  89.                                 LSA=0;LSB=1;LSC=0; break;//显示第2位
  90.                         case(3):
  91.                                 LSA=1;LSB=1;LSC=0; break;//显示第3位
  92.                         case(4):
  93.                                 LSA=0;LSB=0;LSC=1; break;//显示第4位
  94.                         case(5):
  95.                                 LSA=1;LSB=0;LSC=1; break;//显示第5位
  96.                         case(6):
  97.                                 LSA=0;LSB=1;LSC=1; break;//显示第6位
  98.                         case(7):
  99.                                 LSA=1;LSB=1;LSC=1; break;//显示第7位       
  100.                 }
  101.                 P0=smgduan[i];//发送段码
  102.                 delay(100); //间隔一段时间扫描       
  103.                 P0=0x00;//消隐
  104.         }
  105. }

  106. /*******************************************************************************
  107. * 函 数 名       : main
  108. * 函数功能                 : 主函数
  109. * 输    入       : 无
  110. * 输    出             : 无
  111. *******************************************************************************/
  112. void main()
  113. {       
  114.         if(k1==0)                  //检测按键K1是否按下
  115.         {       
  116.                 delay(1000);   //消除抖动 一般大约10ms
  117.                 if(k1==0)         //再次判断按键是否按下
  118.                 {
  119.                 led2=~led2;          //led状态取反
  120.                 }
  121.                 while(!k1);         //检测按键是否松开
  122.         }
  123.        
  124.                 if(k2==0)                  //检测按键K1是否按下
  125.         {       
  126.                 delay(1000);   //消除抖动 一般大约10ms
  127.                 if(k2==0)         //再次判断按键是否按下
  128.                 {
  129.                 //i--;          //led状态取反
  130.                 }
  131.                 while(!k1);         //检测按键是否松开
  132.         }
  133.        
  134.         while(1)
  135.         {       
  136.                 DigDisplay();  //数码管显示函数       
  137.         }               
  138. }
复制代码

所有资料51hei提供下载:
静态数码管显示.zip (38.55 KB, 下载次数: 13)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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