求用AT89S51单片机构成的0-99加法计数器电路图和C语言源程序…要求用proteus仿真,显示屏用7段数码管…
答案:3 悬赏:80
解决时间 2021-04-18 01:58
- 提问者网友:我喜歡係
- 2021-04-17 13:14
如题,求电路图和源程序…也可以发到我邮箱…
最佳答案
- 二级知识专家网友:爱情是怎么炼成的
- 2021-04-17 14:12
#include<reg51.h> //一个百位数0~100循环显示
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,bai,shi,ge;
sbit dula=P2^6; //位段选
sbit wela=P2^7;
uchar code table[]={ //数码管循环显示0~f
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar bai,uchar shi,uchar ge);//显示子程序声明
void delay(uint z); //延时函数
void init(); //初始化函数
void main()
{
init(); //初始化子程序
while(1)
{
if(aa==20) //检测到1s
{
aa=0;
temp++;
if(temp==100) //判断是否到显示值
{
temp=0;
}
bai=temp/100;
shi=temp%100/10;
ge=temp%10;
}
display(bai,shi,ge);
}
}
void delay(uint z) //延时子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y<110;y>0;y--);
}
void display(uchar bai,uchar shi,uchar ge)
{
wela=1;
P0=0xfe; //百位选通
wela=0;
delay(50);
dula=1;
P0=table[bai];
dula=0; //送百位
P0=0xff; //消隐
wela=1;
P0=0xfd;
wela=0;
delay(50);
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(50);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
}
void init() //初始化函数(定时器,显示值)
{
wela=0;
dula=0;
temp=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1; //启动定时器
}
void timer0()interrupt 1 //中断子函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
全部回答
- 1楼网友:温柔刺客
- 2021-04-17 15:58
有的不明白,直接做成实物的话不是很困难!
- 2楼网友:强势废物
- 2021-04-17 15:07
我也想要啊 帮你顶
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯