专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
哪位大神给看一下程序哪里出了问题,我是想用码盘测试电机速度,可数码管数值总是为0
2019-03-24 17:54
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
4435
10
1796
该程序是我在网上找的,怎么调也调不出数值
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
苗子
2019-03-25 01:53
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1=P1^4;//定义电机;
sbit IN2=P1^5;
sbit IN3=P1^6;
sbit IN4=P1^7;
//sbit ENA=P3^4;//定义电机使能端;
//sbit ENB=P3^5;
sbit DO1=P3^6;
sbit DO2=P3^7;
uint dec;
uint f=0;//定义f为一秒内码盘转动所测的的码盘的齿轮数
uchar i=0;//定时器T1计数值;
uchar code Segcode[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//规定数码管显示0-9,是个字符;
/*定时器初始化*/
void go()
{
IN1=1,IN2=0;
IN3=1,IN4=0;
//ENA=1;
//ENB=1;
}
void init()
{
TMOD=0x51; //T1计数器,T0定时器,方式1
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
TL1=0;
TH1=0;
ET0=1;
EA=1;
TR0=1;
TR1=1;
}
/*延时子函数*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*显示程序*/
void display(uint dec)
{
dec=dec/10;
P2=0xfe;
P0=Segcode[dec%1000%100%10]; //个位
delay(10);
P2|=0xff;
P2=0xfd;
P0=Segcode[dec%1000%100/10]; //十位
delay(10);
P2|=0xff;
P2=0xfb ;
P0=Segcode[dec%1000/100];
delay(10);
P2|=0xff; //百位
P2=0xf7;
P0=Segcode[dec/1000]; //千位
delay(10);
P2|=0xff;
}
void main(void)
{
init();
while(1)
{
go();
display(f);
}
}
timer()interrupt 1
{
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
i=i+1;
if(i==100)
{ i=0;
f=TH1*256+TL1;
TL1=0;
TH1=0;
}
}
加载中...
查看其它10个回答
一周热门
更多
>
相关问题
相关文章
基于51单片机的计算器设计
0个评论
51单片机300个proteus仿真实例下载
0个评论
51单片机 蜂鸣器
0个评论
51单片机驱动RC522模块
0个评论
基于51单片机的指纹密码锁
0个评论
AT89C51单片机制作简易密码锁
0个评论
51单片机汇编语言计数器
0个评论
51单片机精确延时设计
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1=P1^4;//定义电机;
sbit IN2=P1^5;
sbit IN3=P1^6;
sbit IN4=P1^7;
//sbit ENA=P3^4;//定义电机使能端;
//sbit ENB=P3^5;
sbit DO1=P3^6;
sbit DO2=P3^7;
uint dec;
uint f=0;//定义f为一秒内码盘转动所测的的码盘的齿轮数
uchar i=0;//定时器T1计数值;
uchar code Segcode[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//规定数码管显示0-9,是个字符;
/*定时器初始化*/
void go()
{
IN1=1,IN2=0;
IN3=1,IN4=0;
//ENA=1;
//ENB=1;
}
void init()
{
TMOD=0x51; //T1计数器,T0定时器,方式1
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
TL1=0;
TH1=0;
ET0=1;
EA=1;
TR0=1;
TR1=1;
}
/*延时子函数*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*显示程序*/
void display(uint dec)
{
dec=dec/10;
P2=0xfe;
P0=Segcode[dec%1000%100%10]; //个位
delay(10);
P2|=0xff;
P2=0xfd;
P0=Segcode[dec%1000%100/10]; //十位
delay(10);
P2|=0xff;
P2=0xfb ;
P0=Segcode[dec%1000/100];
delay(10);
P2|=0xff; //百位
P2=0xf7;
P0=Segcode[dec/1000]; //千位
delay(10);
P2|=0xff;
}
void main(void)
{
init();
while(1)
{
go();
display(f);
}
}
timer()interrupt 1
{
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
i=i+1;
if(i==100)
{ i=0;
f=TH1*256+TL1;
TL1=0;
TH1=0;
}
}
一周热门 更多>