- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
转盘转速测量的设计方案
一、设计目的
设计电路实现转盘的转速测量。
二、组内分工初定
A.陈永昌:负责设计方案的制定,程序的设计,电路的焊接。
B.詹小樑:负责元件的采购,方案的讨论,电路的调试。
C.李忠谕:负责元件的采购,方案的讨论,电路的调试。
三、使用电子元件及个数
光电门
1个
七段数码管
1个
AT89S52单片机
1片
串口转USB线
1条
MAX232
1个
串行口
1个
导线、电阻、电容
若干
电动机
1个
四、设计方案
光电转速传感器是根据光敏二极管工作原理制造的一种感应接收光强度变化的电子器件,当它发出的光被目标阻断时,则接收器感应出相应的电信号。光电式传感器由独立且相对放置的光发射器和收光器组成。当目标通过光发射器和收光器之间并阻断光线时,传感器输出信号。它是效率最高、最可靠的检测装置。槽形(U形)光电开关是对射式的变形,其优点是无须调整光轴。
4.1电动机、信号盘、传感器
图1:电动机、信号盘、传感器的安装
图中电机为直流电机,转速随输入的电压变化。信号盘为带有4个透光孔的圆盘。传感器为光电门,透光时输出电流,遮光时无电流。
4.2信号放大电路
图2:信号放大电路
信号放大电路是通过三极管对光电门输出的信号进行放大,然后经过CD4093进行整形,输入到单片机的脉冲计数T0口,进行计数。
4.3单片机电路
图3:单片机电路
在此采用频率测量法,其测量原理为,在1S时间内,计取转速传感器发生的脉冲个数(即频率) ,从而算出实际转速。设1S的脉冲数为 n,转速
rate = n * 60 / 4;
4.4串口输出电路
图4:串口max232电路
此电路通过max232芯片实现单片机与PC机的串口通信,用于实时地向电脑传输当前转速。
五、课程设计开展情况及总结
图4:实物正面与反面
图5:实物运行图
六、课程设计总结
本次课程设计总体很顺利,过程中学到了很多的新知识。比如,需要重新学习单片机的C程序设计,需要学习串口的数据输出,光电门信号的处理等。
七、单片机系统源程序
/*******************************************************************
本系统的实现原理:1)使用T2实现 1/16秒的定时,定时中断一次后对变量A累加;
使用T0进行脉冲计数。统计每秒输入的脉冲个数、
2)在while大循环中判断变量A,若A到达16,代表定时1S到达,
此时用变量counter保存计数器T0的脉冲计数值。然后清零
变量A,重新开始1S的定时;
3)对counter乘以60然后除以4(光电门端每转输出4个脉冲),
就是每分钟的转速了。
4)进行显示和串口输出。
*******************************************************************/
#include reg52.h
void Initial(); //用于初始化单片机。
void InitSerial(); //用于初始化串口。
void display(); //显示函数,用于显示数码管。
void delay();//延迟函数。
void getNumber(unsigned int counter);//用于把一个int型数据分解为4位。
void send();//用于发送串口数据。
unsigned char num[4];//用于存储要显示的每一位。
unsigned int counter=0; //记录每秒的脉冲个数。
unsigned int rate=0; //每分钟的转速。
unsigned char A =0;
sbit D1 = P2^7;
sbit D2 = P2^6;
sbit D3 = P2^5;
sbit D4 = P2^4;
//定义数码管的显示。
unsigned char code Seg_Tab[]=
{
~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x00,
//0,1,2,3,4,5,6,7,8,9,空;
};
main(){
//初始化。
Initial();
InitSerial();
while(1){
if(A==16){
counter=TH08|TL0;
rate = counter*15/4;
TH0 = 0
文档评论(0)