- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Proteus仿真的转速测量系统设计
摘要:利用增量式编码器的信号特征、proteus软件的基本功能,设计以AT89C52单片机为控制中心的编码器转速测量电路,详细分析软件实现的方法,并给出c语言程序,利用Proteus软件进行仿真得到预期的测量结果。
本文便是运用AT89C52单片机控制的智能化转速测量仪。电机在运行过程中,需要对其进行监控,转速是一个必不可少的一个参数。本系统基于proteus仿真对电机转速进行测量,并可以和PC机进行通信,显示电机的转速,并观察电机运行的基本状况。
本设计主要用AT89C5作为控制核心,LED数码显像管、、详细介绍了PC机与单片机之间的串行通讯。充分发挥了单片机的性能。其优点硬件电路简单,软件功能完善,控制系统可靠,性价比较高等特点#includereg52.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
sbit SIGA=P0^3;//A路信号
sbit SIGB=P0^4;//B路信号
sbit DIREC=P0^5;//方向指示灯
uchar flag,m;
uint pcount,temp,temp1,m1;
uchar code table[18]={0xc0,0xf9,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0xf9,0x0c,};
uchar a[4]=0;
uchar *bp;
void init(void)
{
DIREC=1;
pcount=0;
TMOD=0x01;//定时器0方式1
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;//开中断
IT0=1;EX0=1;TR0=1;
}
void tim0(void) interrupt 1 using 1//定时器中断程序
{
TH0=0x3d;
TL0=0xb0;
temp1=pcount-temp;//计算T0的时间内脉冲数
temp=pcount;
flag=1;//设标志
}
void int0(void) interrupt 0 using 0//外部中断程序
{
if(SIGB==1)//B信号为高电平
{DIREC=1;//正向运行
pcount++;
}
else {
DIREC=0;//反向运行
pcount--;
}
}
void delayms(uchar ms)//延时程序
{
uchar i;
while(ms--)
{for(i=0;i20;i++);}
}
void display1(char idata *ap)//显示子程序
{
uchar sel,i;
P2=0;//关显示
sel=0x08;//选最左边led
for(i=0;i4;i++)
{
P1=table[*ap];//送断码
P2=sel;//送位选码
delayms(500);
ap++;
P2=0;
sel=sel1;//右移一位
}
}
void chang(int num)//转换子程序
{
uchar t;
int num1;
t=0;
if(num0)//取绝对值
{num=-num;}
num1=20*num;//转换成每秒脉冲数
for(t=0;t4;t++)
{
a[t]=num1%10;//取余数送数组a
num1=num1/10;//除10
}
}
void main()
{
Init();
do{
if(flag==1)
{
m1=temp1;
chang(m1);
flag=0;}
bp=a[0];
display1(bp);
}
while(1);
}
仿真
在Keil vsion3环境下,新建Keil 项目,选用AT89C52单片机作为工作CPU,新建kcsj.c文件并加载至项目中,在“Option for tonget”中打开“Output”窗口,选择“Creat hex file”选项,工作主频率设定为12MHz。设计程序并进行编译,编译成功后将产生kcsh.hex文件。在proteus中选中AT89C52进行设置,设置单片机工作频率为12MHz,按照正确的路径加载kc
您可能关注的文档
最近下载
- 病危病重通知书模板.doc VIP
- 初中数学:2023年丘成桐少年班选拔赛真题(第2轮).pdf VIP
- 2025-2030中国水培蔬菜行业市场发展分析及发展趋势与投资前景研究报告.docx
- 2025年水培蔬菜市场规模分析.docx
- 新课标视域下的大单元整体教学——“圆”-《圆》大单元教学设计.pptx VIP
- 卫生部手术分级目录(2025年1月份修订).doc VIP
- 人工智能应用概论(第2版) 课件 第1、2章 初识人工智能、 人工智能在经济社会生活中的应用.pptx
- 2025三基三严考试题题库(含答案).docx VIP
- 苗木供货服务计划方案.docx VIP
- 2025年三基三严考试题题库(含答案).docx VIP
文档评论(0)