
简单的数码管计数显示
外加代码。。。
可以根据此来修改一下,以便更好地读懂代码。
#include <stc12c5a60s2.h> //头文件
#define uchar unsigned char
#define uint unsigned int
sbit ls138_a=P2^0;
sbit ls138_b=P2^1;
sbit ls138_c=P2^2;
char seg_dis[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9
void delay(uchar m);
void main()
{
long seg_data;
char seg_tab[8];
char count=0;
uchar i;
seg_data=0;
while(1)
{
if(++count)
{
if(count==1)
{
seg_data++;
count=0;
}
}
/*seg_tab[0]=seg_dis[seg_data%10000/1000];
seg_tab[1]=seg_dis[seg_data%1000/100];
seg_tab[2]=seg_dis[seg_data%100/10];
seg_tab[3]=seg_dis[seg_data%10];*/
seg_tab[0]=seg_dis[seg_data%100000000/10000000]; // 千万
seg_tab[1]=seg_dis[seg_data%10000000/1000000]; // 百万
seg_tab[2]=seg_dis[seg_data%1000000/100000]; // 十万
seg_tab[3]=seg_dis[seg_data%100000/10000]; // 万位
seg_tab[4]=seg_dis[seg_data%10000/1000]; // 千位
seg_tab[5]=seg_dis[seg_data%1000/100]; // 百位
seg_tab[6]=seg_dis[seg_data%100/10]; // 十位
seg_tab[7]=seg_dis[seg_data%10]; // 个位
for(i=0;i<8;i++)
{
P0 = seg_tab[i];
switch(i)
{
case 0: ls138_c=0; ls138_b=0; ls138_a=0;break;
case 1: ls138_c=0; ls138_b=0; ls138_a=1;break;
case 2: ls138_c=0; ls138_b=1; ls138_a=0;break;
case 3: ls138_c=0; ls138_b=1; ls138_a=1;break;
case 4: ls138_c=1; ls138_b=0; ls138_a=0;break;
case 5: ls138_c=1; ls138_b=0; ls138_a=1;break;
case 6: ls138_c=1; ls138_b=1; ls138_a=0;break;
case 7: ls138_c=1; ls138_b=1; ls138_a=1;break;
default : break;
}
delay(10);
}
}
}
void delay(uchar m)//延时函数
{
uchar i,j;
for(i=0;i<m;i++)
{
for(j=0;j<200;j++)
{
;
}
}
}

回复
打赏帖 | |
---|---|
汽车电子中巡航控制系统的使用被打赏10分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K146】S32DS RTD 驱动环境搭建被打赏12分 | |
【分享开发笔记,赚取电动螺丝刀】【IAR】libc标注库time相关库函数使用被打赏23分 | |
LP‑MSPM0L1306开发版试用结果被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【LP-MSPM0L1306】适配 RT-Thread Nano被打赏23分 |