专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
proteus
求各位大神帮个忙。
2019-07-18 11:49
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
proteus
6306
2
1430
用AT89C51
单片机
控制2位数码管实现00~59的简易秒表,并利用3个独立式按键实现秒表的启动、停止和复位功能 。 谢谢各位大神了
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
longzhoubin
2019-07-18 14:48
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define duan P0
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uint displaydate[8] = {0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};
uchar code GPIO_DIG_CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
uchar time=0,miao=0,NUM=0;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void TimerConfiguration()
{
TMOD = 0x11; //打开两个中断方式1和3
TH0 = 0x3C; //设置初始值,
TL0 = 0xB0;
TH1=0Xf6; //打开终端1
TL1=0Xf6;
ET1=1;
TR1=1;
//打开定时器0中断
TR0 = 1; //启动定时器0
EA = 1; //打开总中断
}
void Timer0() interrupt 1
{
TH0 = 0x3C; //设置初始值
TL0 = 0xB0;
time++;
if(time==20)
{
time=0;
miao++;
if(miao==60)
miao=0;
}
}
void display() interrupt 3
{
TH1=0Xf6;
TL1=0Xf6;
duan=0x00;
switch(NUM)
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
}
duan=displaydate[NUM];
NUM++;
if(NUM>1)
{
NUM=0;
}
}
void main()
{
TimerConfiguration();
while(1)
{
if(key1==0)
{
delayms(100);
if(key1==0);
ET0 = 1;
}
if(key2==0)
{
delayms(100);
if(key2==0)
ET0 = 0;
}
if(key3==0)
{
delayms(100);
if(key3==0)
miao=0;
}
displaydate[0]=GPIO_DIG_CODE[miao/10];
displaydate[1]=GPIO_DIG_CODE[miao%10];
}
}
加载中...
查看其它2个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
为什么Proteus 仿真点阵字体缺笔画 而且速度奇慢
7 个回答
2012~~单片机C语言程序设计实训100例-基于8051+Proteus仿真(第2版)
27 个回答
新手求帮忙解决proteus的问题
1 个回答
大家好,请问用三菱plc仿真软件跟mcgs组态软件怎么样连接?
1 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
proteus
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define duan P0
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uint displaydate[8] = {0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};
uchar code GPIO_DIG_CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
uchar time=0,miao=0,NUM=0;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void TimerConfiguration()
{
TMOD = 0x11; //打开两个中断方式1和3
TH0 = 0x3C; //设置初始值,
TL0 = 0xB0;
TH1=0Xf6; //打开终端1
TL1=0Xf6;
ET1=1;
TR1=1;
//打开定时器0中断
TR0 = 1; //启动定时器0
EA = 1; //打开总中断
}
void Timer0() interrupt 1
{
TH0 = 0x3C; //设置初始值
TL0 = 0xB0;
time++;
if(time==20)
{
time=0;
miao++;
if(miao==60)
miao=0;
}
}
void display() interrupt 3
{
TH1=0Xf6;
TL1=0Xf6;
duan=0x00;
switch(NUM)
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
}
duan=displaydate[NUM];
NUM++;
if(NUM>1)
{
NUM=0;
}
}
void main()
{
TimerConfiguration();
while(1)
{
if(key1==0)
{
delayms(100);
if(key1==0);
ET0 = 1;
}
if(key2==0)
{
delayms(100);
if(key2==0)
ET0 = 0;
}
if(key3==0)
{
delayms(100);
if(key3==0)
miao=0;
}
displaydate[0]=GPIO_DIG_CODE[miao/10];
displaydate[1]=GPIO_DIG_CODE[miao%10];
}
}
一周热门 更多>