找回密码
 立即注册

QQ登录

只需一步,快速开始

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

一键多用小程序

[复制链接]
跳转到指定楼层
楼主
ID:79544 发表于 2016-5-28 10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天写了个一键多用的小程序,2种。数码管和流水灯显示。
  1. #include <stc12c5a60s2.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define dat P0
  6. sbit key=P3^7;
  7. sbit wei=P2^7;
  8. sbit duan=P2^6;

  9. uchar jj,i;
  10. uchar liushui[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  11. uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段码
  12. uchar seg1[10]={0x40,0x4F,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点断码
  13. void delay(int x)
  14. {
  15.         int i,j;
  16.         for (j=0;j<x;j++)
  17.         for (i=0;i<420;i++);
  18. }
  19. void keyscan()
  20. {
  21.         if(key==0)
  22.         {
  23.                 delay(20);
  24.                 if(key==0)
  25.                 {
  26.                         jj++;
  27.                         if(jj==7)
  28.                         jj=0;
  29.                 }
  30.                 while(!key);
  31.         }
  32. /*        if(jj==1)
  33.         {
  34.                 wei=1;
  35.                 dat=0xfe;
  36.                 wei=0;
  37.                 duan=1;
  38.                 dat=seg[0];
  39.                 duan=0;
  40.                 delay(60);
  41.                 dat=0xff;
  42.         }
  43.         if(jj==2)
  44.         {
  45.                 wei=1;
  46.                 dat=0xfd;
  47.                 wei=0;
  48.                 duan=1;
  49.                 dat=seg[1];
  50.                 duan=0;
  51.                 delay(60);
  52.                 dat=0xff;
  53.         }
  54.         if(jj==3)
  55.         {
  56.                 wei=1;
  57.                 dat=0xfb;
  58.                 wei=0;
  59.                 duan=1;
  60.                 dat=seg[2];
  61.                 duan=0;
  62.                 delay(60);
  63.                 dat=0xff;
  64.         }
  65.         if(jj==4)
  66.         {
  67.                 wei=1;
  68.                 dat=0x00;
  69.                 wei=0;
  70.                 for(i=0;i<10;i++)
  71.                 {
  72.                         duan=1;
  73.                         dat=seg[i];
  74.                         duan=0;
  75.                         delay(900);
  76.                         dat=0xff;
  77.                 }
  78.         }
  79.         if(jj==5)
  80.         {
  81.                 wei=1;duan=1;
  82.                 for(i=0;i<8;i++)
  83.                 {
  84.                         dat=liushui[i];               
  85.                         delay(900);
  86.                         dat=0xff;
  87.                 }
  88.         }
  89.         if(jj==6)
  90.         {
  91.                 wei=1;
  92.                 dat=0xff;
  93.                 wei=0;
  94.                 duan=1;
  95.                 dat=0xff;
  96.                 duan=0;
  97.         }*/
  98.         switch(jj)
  99.         {
  100.                 case 0: wei=1;
  101.                         dat=0xfe;
  102.                         wei=0;
  103.                         duan=1;
  104.                         dat=seg[0];
  105.                         duan=0;
  106.                         delay(60);
  107.                         dat=0xff;
  108.                 break;
  109.                 case 1:wei=1;
  110.                         dat=0xfd;
  111.                         wei=0;
  112.                         duan=1;
  113.                         dat=seg[1];
  114.                         duan=0;
  115.                         delay(60);
  116.                         dat=0xff;
  117.                 break;
  118.                 case 2:wei=1;
  119.                         dat=0xfb;
  120.                         wei=0;
  121.                         duan=1;
  122.                         dat=seg[2];
  123.                         duan=0;
  124.                         delay(60);
  125.                         dat=0xff;
  126.                 break;
  127.                 case 3:wei=1;
  128.                         dat=0x00;
  129.                         wei=0;
  130.                         for(i=0;i<10;i++)
  131.                         {
  132.                                 duan=1;
  133.                                 dat=seg[i];
  134.                                 duan=0;
  135.                                 delay(900);
  136.                                 dat=0xff;
  137.                         }
  138.                 break;
  139.                 case 4:wei=1;duan=1;
  140.                         for(i=0;i<8;i++)
  141.                         {
  142.                                 dat=liushui[i];               
  143.                                 delay(900);
  144.                                 dat=0xff;
  145.                         }
  146.                 break;
  147.                 case 5:wei=1;
  148.                         dat=0xff;
  149.                         wei=0;
  150.                         duan=1;
  151.                         dat=0xff;
  152.                         duan=0;
  153.                 break;
  154.         }
  155. }
  156. void main()
  157. {
  158.         while(1)
  159.         {
  160.                 keyscan();
  161.         }
  162. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:98618 发表于 2016-6-3 14:26 | 只看该作者
很好,很有用,收藏,备用
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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