模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

1017查看 | 5回复

[DIY交流] 分享一个单片机不连续引脚用数组动态显示数码管小心得

[复制链接]
发表于 2017-7-4 21:48:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
  1. #include <STC12C5A60S2.H>

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

  4. sbit K1=P3^3;                  //引脚定义
  5. sbit K2=P3^4;                  //
  6. sbit K3=P3^5;  //

  7. sbit D0=P3^6;                        //
  8. sbit D1=P3^7;
  9. sbit D2=P1^4;
  10. sbit D3=P1^6;
  11. sbit D4=P1^7;
  12. sbit D5=P3^1;
  13. sbit D6=P1^3;
  14. sbit D7=P1^5;
  15. sbit dot=P1^5;                   //
  16. sbit BEEP=P3^2;
  17. sbit L0=P3^0;                   //
  18. sbit L1=P1^1;                   //
  19. sbit L2=P1^0;                   //
  20. sbit L3=P1^2;
  21. unsigned char led[]={

  22.                 0xC0,  //"0"
  23.                 0xF9,  //"1"
  24.                 0xA4,  //"2"
  25.                 0xB0,  //"3"
  26.                 0x99,  //"4"
  27.                 0x92,  //"5"
  28.                 0x82,  //"6"
  29.                 0xF8,  //"7"
  30.                 0x80,  //"8"
  31.                 0x90   //"9"
  32.                

  33.                          };//段码数组,共阳
  34. char wei[]={0x01,0x02,0x04,0x08};//位码数组,四个数码管
  35. void P6(char D)//段替换函数
  36. {
  37.         D7=D&0X80;
  38.         D6=D&0X40;
  39.         D5=D&0X20;
  40.         D4=D&0X10;
  41.         D3=D&0X08;
  42.         D2=D&0X04;
  43.         D1=D&0X02;
  44.         D0=D&0X01;
  45. }
  46. void W(char L)//位替换函数
  47. {

  48.         L3=L&0X08;
  49.         L2=L&0X04;
  50.         L1=L&0X02;
  51.         L0=L&0X01;
  52. }
  53. void Delay1ms()                //@12.000M   延时1ms
  54. {
  55.         unsigned char i, j;
  56.         i = 12;
  57.         j = 169;
  58.         do
  59.         {
  60.                 while (--j);
  61.         } while (--i);
  62. }
  63. void delay_n_ms(uint n)                  //延时n毫秒
  64. {
  65.    while(n)
  66.    {
  67.    Delay1ms();
  68.    n=n-1;
  69.    }
  70. }
  71. main()
  72. {
  73.         while(1)//数码管动态显示
  74.         {
  75.         P1M0=0x07;//IO设置大电流模式
  76.         P3M0=0x01;
  77.        
  78.         W(wei[0]);//打开第一个数码管
  79.         P6(led[2]);
  80.         delay_n_ms(2);
  81.        
  82.         W(wei[1]);
  83.         P6(led[9]);
  84.         delay_n_ms(2);
  85.        
  86.         W(wei[2]);
  87.         P6(led[2]);
  88.         delay_n_ms(2);
  89.        
  90.         W(wei[3]);
  91.         P6(led[9]);
  92.         delay_n_ms(2);
  93.        
  94.         }
  95. }
  96. //...................
复制代码
发表于 2017-7-4 22:05:10 | 显示全部楼层
办法有很多,一般查表法和宏定义法比较好用
发表于 2017-7-5 08:46:21 | 显示全部楼层
顶顶顶

发表于 2017-7-5 17:45:07 | 显示全部楼层
帮顶。
发表于 2017-7-6 00:37:37 | 显示全部楼层
除了代码,不能来点作用,功能,效果之类的?
发表于 2019-10-27 13:49:51 | 显示全部楼层
牛逼牛逼快过来
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!