找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用PROTEUS仿真单片机与七段数码管

[复制链接]
跳转到指定楼层
楼主
本帖最后由 hasakei 于 2020-6-29 10:51 编辑

要求:用七段数码管显示数字0~9
原理图:


源代码:
#include<reg51.h>
voidcct_init(void);
voiddelay(int);
voidDisplayOn7Segment(char);
intmain(void)
{
   char ch = '0';           // Character to bedisplayed on 7seg
   cct_init();                  // Make all ports zero  
   while(1)           
   {
      DisplayOn7Segment(ch);   //Display ch on 7seg
      delay(30000);                     // About 1sec delay
      switch(ch)                           // Update ch with new value to be displayed
      {
             case '0': ch = '1';  break;
             case '1': ch = '2';  break;
             case '2': ch = '3';  break;
             case '3': ch = '4';  break;
             case '4': ch = '5';  break;
             case '5': ch = '6';  break;
             case '6': ch = '7';  break;
             case '7': ch = '8';  break;
             case '8': ch = '9';  break;
             case '9': ch = '0';  break;

             default: ch = '0';  break;
      }
   }
}
voidcct_init(void)
{
      P0 = 0x00;   
      P1 = 0x00;   
      P2 = 0x00;   
      P3 = 0x00;
}
voiddelay(int a)
{
   int i;
   for(i=0;i<a;i++);   //null statement
}
voidDisplayOn7Segment(char ch)   // ch canhave a value from '0' to 'F' only
{
      switch(ch)
      {
                    case '0': P2= 0x3F;  break;
       case'1':  P2 = 0x06;  break;
       case'2':  P2 = 0x5B;  break;
       case'3':  P2 = 0x4F;  break;
       case'4':  P2 = 0x66;  break;
       case'5':  P2 = 0x6D;  break;
       case'6':  P2 = 0x7D;  break;
       case'7':  P2 = 0x07;  break;
       case'8':  P2 = 0x7F;  break;
       case'9':  P2 = 0x6F;  break;
       default:P2 = 0x3F;  break;
      }   
}
仿真结果:


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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