请选择 进入手机版 | 继续访问电脑版

普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 7901|回复: 5

动态数码管实验

 关闭 [复制链接]

1

主题

2

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2018-6-22 18:38:59 | 显示全部楼层 |阅读模式
怎么将数码管的字自定义呢?假如我要显示5201314,应该从哪里开始改呢?我自己的
代码如下
                                           #include <reg52.h>
                                                   #include <intrins.h>
                                                   typedef unsigned char u8;
                                                   typedef unsigned int u16;
                                                   sbit LSA=P2^2;
                                                   sbit LSB=P2^3;
                                                   sbit LSC=P2^4;
                                                   u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
                                                   0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
                                                  
                                                   void delay(u16 i)
                                                   {
                                                   while(i--);
                                                          
                                                   }          
                                                   void DigDisplay()
                                                   {
                                                           u8 i;
                                                        for(i=0;i<8;i++)
                                                        {
                                                         switch(i)
                                                         {

                                                         case (0):
                                                         LSA=0;LSB=0;LSC=0;break;
                                                         case (1):
                                                         LSA=1;LSB=0;LSC=0;break;
                                                         case (2):
                                                         LSA=0;LSB=1;LSC=0;break;
                                                         case (3):
                                                         LSA=1;LSB=1;LSC=0;break;
                                                         case (4):
                                                         LSA=0;LSB=0;LSC=1;break;
                                                         case (5):
                                                         LSA=1;LSB=0;LSC=1;break;
                                                         case (6):
                                                         LSA=0;LSB=1;LSC=1;break;
                                                         case (7):
                                                         LSA=1;LSB=1;LSC=1;break;
                                                         
                                                         }
                                                         P0=smgduan;
                                                         delay(100);
                                                         P0=0x00;
                                               
                                                        }
                                                  
                                                  
                                                   }
                                                  
                                                  

                                                 
                                                  
                                                  
                                                   void main()
                                                   {  
                                                            
                                                  
                                                       

                                                  
                                                  

                                                   while(1)
                                                   {
                                               
                                                       
                                                         DigDisplay();
                                                          

                                                  
                                                   }
                                                  
                                                  
                                                  
                                                   }
                                                  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

20

主题

1343

帖子

8341

积分

论坛元老

Rank: 8Rank: 8

积分
8341
发表于 2018-6-23 21:00:57 | 显示全部楼层
很简单啊!
#include <reg52.h>
                                                   #include <intrins.h>
                                                   typedef unsigned char u8;
                                                   typedef unsigned int u16;
                                                   sbit LSA=P2^2;
                                                   sbit LSB=P2^3;
                                                   sbit LSC=P2^4;
                                                  // u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
                                                   //0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
                                                  u8 code smgduan[7]={0x6d,0x5b,0x3f,0x06,0x4f,0x06,0x66}
                                                   void delay(u16 i)
                                                   {
                                                   while(i--);
                                                           
                                                   }         
                                                   void DigDisplay()
                                                   {
                                                           u8 i;
                                                        for(i=0;i<7;i++)
                                                        {
                                                         switch(i)
                                                         {

                                                         case (0):
                                                         LSA=0;LSB=0;LSC=0;break;
                                                         case (1):
                                                         LSA=1;LSB=0;LSC=0;break;
                                                         case (2):
                                                         LSA=0;LSB=1;LSC=0;break;
                                                         case (3):
                                                         LSA=1;LSB=1;LSC=0;break;
                                                         case (4):
                                                         LSA=0;LSB=0;LSC=1;break;
                                                         case (5):
                                                         LSA=1;LSB=0;LSC=1;break;
                                                         case (6):
                                                         LSA=0;LSB=1;LSC=1;break;
                                                         case (7):
                                                         LSA=1;LSB=1;LSC=1;break;
                                                         
                                                         }
                                                         P0=smgduan[i];
                                                         delay(100);
                                                         P0=0x00;
                                                
                                                        }
                                                   
                                                   
                                                   }
                                                   
                                                   

                                                
                                                   
                                                   
                                                   void main()
                                                   {  
                                                            
                                                  
                                                        

                                                   
                                                   

                                                   while(1)
                                                   {
                                                
                                                        
                                                         DigDisplay();
                                                         

                                                   
                                                   }
                                                   
                                                   
                                                   
                                                   }
搞定!哈哈哈
回复 支持 反对

使用道具 举报

6

主题

15

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2018-8-31 21:37:04 | 显示全部楼层
我按程序打的 显示的一直是8.
回复 支持 反对

使用道具 举报

0

主题

4

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2018-9-3 20:48:49 | 显示全部楼层
P0=smgduan;
更改为 P0=smgduan[i];
回复 支持 反对

使用道具 举报

0

主题

4

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2018-9-3 20:54:01 | 显示全部楼层
HC6800-ES-V2.0 发表于 2018-6-23 21:00
很简单啊!
#include
                                                   #include

u8 code smgduan[7]={0x6d,0x5b,0x3f,0x06,0x4f,0x06,0x66}
少了一个分号
回复 支持 反对

使用道具 举报

20

主题

1343

帖子

8341

积分

论坛元老

Rank: 8Rank: 8

积分
8341
发表于 2018-9-4 07:47:37 | 显示全部楼层
冯学磊 发表于 2018-9-3 20:54
u8 code smgduan[7]={0x6d,0x5b,0x3f,0x06,0x4f,0x06,0x66}
少了一个分号

谢谢!复制后出现的错误,我的程序是在单片机上通过了的。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-3-29 12:40 , Processed in 0.091462 second(s), 31 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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