简单的数码管计数显示
外加代码。。。
可以根据此来修改一下,以便更好地读懂代码。
#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++)
{
;
}
}
}
回复
有奖活动 | |
---|---|
【有奖活动——B站互动赢积分】活动开启啦! | |
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |