找回密码
 立即注册

QQ登录

只需一步,快速开始

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

分享设计:多种数码管控制C语言代码及仿真电路

[复制链接]
跳转到指定楼层
楼主
本帖最后由 多喝点 于 2020-2-7 16:45 编辑

  • 动态控制:使用74HC573八个共阳极数码管依次显示0-7

仿真电路图:



C语言程序代码:
  1. #include <reg52.h>

  2. #define uchar unsigned char        
  3. #define uint  unsigned int         
  4.               
  5. sbit we = P3^7;                           
  6. sbit du = P3^0;              
  7. uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8};
  8. uchar code tab[]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
  9. void delay(uint z)
  10. {
  11.         uint x,y;
  12.         for(x = z; x > 0; x--)
  13.                 for(y =10; y>0 ; y--);
  14. }


  15. uchar num;
  16. void main()
  17. {
  18.         du=0;
  19.         we=0;
  20.                 while(1)
  21.                 {
  22.                                         for(num=0;num<8;num++)
  23.                                                         {
  24.                                                                
  25.                                                                 we=1;
  26.                                                                 P1=tab[num];
  27.                                                                 we=0;
  28.                                                                
  29.                                                                
  30.                                                                 du=1;
  31.                                                                 P2=table[num];
  32.                                                                 du=0;
  33.                                                                 delay(10);
  34.                                                         };
  35.                 }
  36. }
复制代码
2.动态控制:不使用74HC573使八个数码管依次显示0-7
仿真电路图:(请注意:在接实际电路时,在数码管管脚之前都要接上电阻,否则会烧坏电子器件)



C语言程序代码:
  1. #include <reg51.h>

  2. void delay(void)
  3. {
  4.     unsigned char i, j;

  5.     for (i=0; i<10; i++)
  6.         for (j=0; j<10; j++);
  7. }


  8. unsigned char duanma[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8};

  9. unsigned char weima[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};


  10. void main(void)
  11. {
  12.     while (1)
  13.     {
  14.         unsigned char i = 0;

  15.         for (i=0; i<8; i++)
  16.         {
  17.             P2 = weima[i];  
  18.             P1 = duanma[i];   

  19.             delay();
  20.             P0 = 0x00;
  21.         }

  22.     }
  23. }
复制代码

3、静态控制:8个数码管显示相同数字,自动从0开始切换,直到F
仿真电路图:



C语言程序代码:

  1. #include <reg52.h>

  2. #define uchar unsigned char        
  3. #define uint  unsigned int         
  4. #define DELAY_TIME 1               
  5. sbit we = P3^7;                           
  6. sbit du = P3^0;              
  7. uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
  8. void delay(uint z)
  9. {
  10.         uint x,y;
  11.         for(x = z; x > 0; x--)
  12.                 for(y =500; y>0 ; y--);
  13. }


  14. uchar num;
  15. void main()
  16. {
  17.                 we=1;
  18.                 P1=0xff;
  19.                 we=0;
  20.                 while(1);
  21.                 {
  22.                                         for(num=0;num<16;num++)
  23.                                                         {
  24.                                                                 du=1;
  25.                                                                 P2=table[num];
  26.                                                                 du=0;
  27.                                                                 delay(100);
  28.                                                         };

  29.                         
  30.                 }
  31. }

复制代码

4、动态控制:使用74LS138译码器控制八位数码管依次显示0-7

仿真电路图:

C语言程序代码:
  1. #include <reg52.h>

  2. #define uchar unsigned char        
  3. #define uint  unsigned int         


  4. uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07};
  5. uchar code tab[]={0x00,0x01,0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
  6. void delay(uint z)
  7. {
  8.         uint x,y;
  9.         for(x = z; x > 0; x--)
  10.                 for(y =10; y>0 ; y--);
  11. }
  12. uint i;
  13. void main()
  14. {
  15.         for(i=0;i<8;i++)
  16.                 {
  17.                         P2=tab[i];
  18.                         P1=table[i];
  19.                         delay(50);
  20.                 }
  21.         
  22. }
复制代码

5、动态控制:使用74LS138译码器和74LS247七段数码管译码器控制8位数码管依次显示0-7
仿真电路图:


C语言程序代码:
  1. #include <reg52.h>

  2. #define uchar unsigned char        
  3. #define uint  unsigned int         


  4. uchar code table[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
  5. uchar code tab[]={0x00,0x01,0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
  6. void delay(uint z)
  7. {
  8.         uint x,y;
  9.         for(x = z; x > 0; x--)
  10.                 for(y =10; y>0 ; y--);
  11. }
  12. uint i;
  13. void main()
  14. {
  15.         for(i=0;i<8;i++)
  16.                 {
  17.                         P3=tab[i];
  18.                         P2=table[i];
  19.                         delay(30);
  20.                 }
  21.        
  22. }
复制代码






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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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