- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于单片机89C52的光电转速测量系统
《光电技术》综合设计报告书
设计题目:基于89c52的光电转速测量系统
姓 名:
学 号:
(一)课程设计报告的内容
设计题目
光电转速测量系统
设计要求
1.能测量转盘的转速
2.计算误差小于0.1%
3.具有4位显示
4.实时测量
设计过程
(分模块给出原理图,分别说明各模块、各元件的选择依据)
(包括:设计方案、上机设计与仿真结果、硬件实验方案)
总体设计方案:
转速测量系统设计分为三个部分,分别为光电传感器部分、整流滤波部分和单片机与数码管显示部分(如下图)。
各部分模块的功能:
①传感器:用来对信号的采样。
②整形电路:对传感器送过来的信号进行放大和整形,在送入单片机进行数据的处理转换。
③单片机:对处理过的信号进行转换成转速的实际值,送入LED
④LED显示:用来对所测量到的转速进行显示。
1.光电传感器:
本设计采用H42B6槽型光电传感器(原理图如下)。(还可以采用H2010、ITR9606等传感器)
转盘结构如下,转盘在槽型光电传感器中转动时,光电晶体管接收到的是脉冲信号。
2.整流滤波部分:
本设计采用双电压比较器LM393N,它有两个输入端和两个输出端,一个基准电压端。输入端电压低于基准电压时输出端为高电平,反之输出端电平翻转。
3. 单片机与数码管显示部分:
本设计采用单片机STC89C52,方便烧写程序,且内存比51大。数码管采用四位七段数码管,引脚较少,方便焊接电路。
STC89C52引脚图
(2) 晶振电路部分
(3) 复位电路部分
(4)四位共阴数码管
设计图示(最终系统图,硬件图,结果图)
1.光电传感器部分
2.显示部分(信号从15脚输入)
3.系统总程序
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
uint mm=1234;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};
delay(uint m)
{ uint i,j;
for(i=m;i0;i--)
for(j=60;j0;j--);
}
xian_shi()
{ uchar qian,bai,shi,ge;
uint jj;
jj=mm;
jj*=20;
//jj+=1;
qian=jj/1000;
bai=jj%1000/100;
shi=jj%100/10;
ge=jj%10;
P2=0xef;
P0=table[qian];
delay(1);
//P2=0;
P2=0xdf;
P0=table[bai];
delay(1);
//P2=0;
P2=0xbf;
P0=table[shi];
delay(1);
//P2=0;
P2=0x7f;
P0=table[ge];
delay(1);
//P2=0;
}
timer_init() //定时器计数器初始化函数
{ EA=1;
ET0=1;
ET1=1;
TMOD=0X51;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
}
main()
{
timer_init();
P0=0; //开始数码管不显示
while(1)
{
xian_shi();
delay(2); //数码管刷新时间单位毫秒
}
}
void timer0() interrupt 1
{ TR0=0;
TR1=0;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
mm=0;
mm|=TH1;
mm=(mm8)|TL1;
// mm-=55536;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
}
void timer1() interrupt 3 //显示0000说明出错
{ TR1=0;
TR0=0;
mm=0;
// TH1=0;
// TL1=0;
// TR1=1;
}
设计心得及建议
成绩评定
(包括:指导教师评语和课程设计等级)
(二)课
原创力文档


文档评论(0)