历史上的今天
返回首页

历史上的今天

今天是:2025年03月03日(星期一)

正在发生

2020年03月03日 | 完整的单片机霍尔测速程序+原理图

2020-03-03 来源:51hei

经本人编写的正确的霍尔测速程序以及正确的原理图

/************霍尔测速仪******************/

/****************************************/

/****************************************/

/**编写人:刘梦宇**/

/**主控芯片:STC89C52RC**/

/**晶振12MHZ**/

#include

#include

#define uint8 unsigned char

#define uint16 unsigned int

#define CMD 0x00

#define DAT 0x01

#define DataPort P0//LCD数据口

sbit RW=P2^6;         

sbit RS=P2^5;

sbit E=P2^7;

uint16 N=0;

uint8 C_50ms;

uint8 Z=0;

uint8 count=0;

bit flag_1s=0;

/**ms级延时子程序**/

void delay(uint16 t)

{

        uint16 a;

        for(;t>0;t--)

                for(a=123;a>0;a--);

}

/**LCD时序**/

void write_LCD(uint8 dat,bit rs)

{

        E=0;

        RW=0;

        RS=rs;//选择指令or数据

        _nop_();

        _nop_();

        _nop_();

        E=1;

        _nop_();//delay(1);

        _nop_();

        _nop_();

        DataPort=dat;//将数据送到LCD数据口

        _nop_();

        _nop_();

        _nop_();

        E=0;

        delay(1);

}

/**LCD选择显示位置子函数**/

void SetXY(uint8 x,uint8 y)

{

        x=x&0x0f;//防止X、Y        超过量程

        y=y&0x01;

        if(y)

        {

                write_LCD(0x80+x,CMD);

        }

        else

        {

                write_LCD(0xc0+x,CMD);

        }

}

/**转速数值转换子函数**/

void disload(uint16 a)

{

        SetXY(4,0);

        write_LCD(a/1000+'0',DAT);

        write_LCD(a%1000/100+'0',DAT);

        write_LCD(a%100/10+'0',DAT);

        write_LCD(a%10+'0',DAT);

        write_LCD('r',DAT);

        write_LCD('/',DAT);

        write_LCD('m',DAT);

        write_LCD('i',DAT);

        write_LCD('n',DAT);

}

/**LCD字符指针函数**/

void LCD_wrstr(uint8*str)

{

        while(*str!='')

        {

                write_LCD(*str,DAT);

                str++;

        }

}

/**初始化子程序**/

void All_init()

{

        delay(500);

        write_LCD(0x38,CMD);

        write_LCD(0x38,CMD);

        write_LCD(0x0c,CMD);

        write_LCD(0x01,CMD);

        delay(10);


        SetXY(0,1);//设置标题显示位置

        LCD_wrstr("Tachometer:");

        

        TMOD=0x01;//设置T0位工作方式1——作为16位定时器

        ET0=1;//打开定时器0的中断

        TR0=1;//打开定时器0

        TH0=(65536-50000)/256;//装入初值

        TL0=(65536-50000)%256;

        IT0=1;//外部中断0为下降沿中断

        EX0=1;//打开外部中断                

        EA=1;//打开总中断

}

void main()

{

        All_init();//先进行初始化

        while(1)

        {

                if(flag_1s==1)

                {

                        flag_1s=0;//1s标志位清零

                        disload(N);

                }

        }


}

/**定时器0中断服务子程序**/                                           

void timer0() interrupt 1

{

        TH0=(65536-50000)/256;

        TL0=(65536-50000)%256;

        if(++C_50ms>19)

        {

                EX0=0;//关闭外部中断0

                C_50ms=0;//定时1s之后C_50ms清零

                N=60*Z;//计算转速

                Z=0;//初始化圈数

                flag_1s=1;//1s标志位置1

                TH0=0x3c;//重新赋值

                TL0=0xb0;                

                EX0=1;//打开外部中断0,开始计数。

        }

}

void wai0() interrupt 0

{

        count++;

        if(count==2) //两次外部脉冲,电机转一圈。

        {

                Z++;//转圈+1

                count=0;//初始计数值

        }

        

}


推荐阅读

史海拾趣

Goldstar Electron Co Ltd公司的发展小趣事

对于27MHz晶体振荡器电路,网友可能会提出多种问题,以下是一些常见问题及其详细回答:

一、电路设计相关问题

  1. 如何设计一个简单的27MHz晶体振荡器电路?
    • 回答:设计一个简单的27MHz晶体振荡器电路通常包括晶体本身、两个反馈电容、一个或多个电阻以及可能的放大元件(如晶体管或集成电路中的振荡器部分)。例如,可以使用一个并联型晶体振荡器电路,其中晶体与两个电容形成谐振电路,并通过一个放大元件(如CMOS反相器)提供正反馈以维持振荡。具体设计可参考技术资料(如华强电子网)提供的电路图,并根据实际需要进行调整。
  2. 如何选择合适的反馈电容和电阻值?
    • 回答:反馈电容和电阻的选择对振荡器的稳定性和频率精度至关重要。电容值通常根据晶体的规格和所需的振荡频率来确定,而电阻值则用于限制放大器的增益,以防止振荡器过度放大并产生不稳定现象。选择时,建议参考晶体振荡器的数据手册或相关设计指南,并结合实验测试来找到最佳值。

二、电路性能相关问题

  1. 如何减少27MHz晶体振荡器的谐波失真?
    • 回答:谐波失真通常是由于电路中的非线性元件或设计不当引起的。为了减少谐波失真,可以采取以下措施:
      • 选择低谐波失真的晶体振荡器。
      • 在电路中添加低通滤波器以滤除高频谐波。
      • 优化电路设计,减少非线性元件的使用,并确保电路元件的匹配性。
  2. 如何提高27MHz晶体振荡器的频率稳定性?
    • 回答:频率稳定性受多种因素影响,包括晶体的物理特性、环境温度、电源电压波动等。提高频率稳定性的方法包括:
      • 选择高质量的晶体振荡器,确保其具有较低的频率漂移和温度系数。
      • 在电路中添加温度补偿电路,以抵消温度变化对频率的影响。
      • 使用稳定的电源电压,并在必要时添加电压稳压器。
      • 优化电路布局和接地设计,减少电磁干扰和噪声。

三、电路调试与测试相关问题

  1. 如何调试27MHz晶体振荡器电路以确保其正常工作?
    • 回答:调试晶体振荡器电路时,可以按照以下步骤进行:
      • 检查电路连接是否正确,确保所有元件都已正确安装。
      • 使用示波器观察振荡波形,确认其频率和幅度是否符合要求。
      • 调整反馈电容和电阻值,以优化振荡器的性能和稳定性。
      • 检查电源电压和电流是否稳定,并调整至推荐值。
      • 如果发现谐波失真或其他问题,根据具体情况采取相应的解决措施。
  2. 如何测试27MHz晶体振荡器的输出频率和相位噪声?
    • 回答:测试晶体振荡器的输出频率和相位噪声通常需要使用专业的测试设备,如频率计和相位噪声分析仪。测试时,将振荡器的输出连接到测试设备的输入端,并设置适当的测试参数。通过测试设备可以准确测量振荡器的输出频率和相位噪声水平,从而评估其性能是否符合要求。

四、其他常见问题

  1. 27MHz晶体振荡器适用于哪些应用场景?
    • 回答:27MHz晶体振荡器由于其较高的频率和较好的稳定性,广泛应用于无线通信、雷达系统、电子测量仪器等领域。在这些应用场景中,晶体振荡器作为时钟源或频率基准,为系统提供稳定的频率信号。
  2. 如何延长27MHz晶体振荡器的使用寿命?
    • 回答:延长晶体振荡器的使用寿命需要注意以下几点:
      • 避免在极端温度或湿度条件下使用。
      • 保持电源电压稳定,避免频繁波动。
      • 定期检查电路连接和元件状态,及时更换损坏的元件。
      • 避免机械冲击和振动对晶体振荡器的影响。
      • 选择质量可靠、性能稳定的晶体振荡器产品。
Bce Sud公司的发展小趣事

面对市场的不断变化和消费者需求的日益多样化,Bce Sud始终坚持创新驱动的发展理念。公司不断推出新产品,从半导体芯片拓展到传感器、集成电路等领域,产品线日益丰富。这些创新产品不仅提升了公司的市场竞争力,也为消费者带来了更多选择。

Elpress AB公司的发展小趣事

在追求经济效益的同时,Elpress AB也注重可持续发展和环境保护。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。同时,Elpress AB还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了Elpress AB的社会责任感,也为公司的长期发展奠定了坚实的基础。

绿索超容(GreenSource)公司的发展小趣事

Elpress AB始终将质量管理作为公司发展的核心。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。为了进一步提升产品质量和管理水平,Elpress AB于1992年获得了ISO 9001认证,成为电气连接领域的领军企业之一。此后,公司还通过了ISO 14001:2015环境管理体系认证,积极履行环保责任。

Advantech公司的发展小趣事

在追求经济效益的同时,Elpress AB也注重可持续发展和环境保护。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。同时,Elpress AB还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了Elpress AB的社会责任感,也为公司的长期发展奠定了坚实的基础。

Electro-Mech Components Inc公司的发展小趣事

自1976年起,EMC在蒂华纳不仅为自身运营制造工厂,还开始为其他美国公司,如GM/Hughes Aircraft和Daneher Joslyn Sunbank Electronics提供制造服务。这种深度合作模式不仅增强了EMC的生产能力,也使其能够接触到更多的先进技术和管理经验。通过与这些美国公司的合作,EMC的产品质量和生产效率都得到了显著提升,同时也为公司的全球化战略打下了坚实基础。

问答坊 | AI 解惑

[求助]我的可调恒温电烙铁指示灯不亮了!!

突然那个方块状零件冒出火花,有三个接角..然后指示灯就不能亮了.只要一加热这个零件就过热..把手柄都烫化了...请问这是什么零件叫什么??为什么么会突然烧掉???…

查看全部问答>

基于16位单片机的逆变电源系统的设计

摘要:介绍了一种以8XC196MC为内核的逆变电源系统。其逆变控制系统实现了全数字操作。逆变部分的SPWM控制脉冲波形完全由8XC196MC单片机生成,使用IR2130实现对功率管的驱动和保护,频率电压可由数码管显示,可用串口与上位机进行通讯.该系统硬件电路简 ...…

查看全部问答>

ST单片机,STM8S103F3

大量现货供应ST单片机,性价比好,可以代替很多单片机!!如有需求可以供样品,开发工具也有销售!!!!!…

查看全部问答>

射频电路板设计技巧

射频电路板设计技巧 成功的RF设计必须仔细注意整个设计过程中每个步骤及每个细节这意味着必须在设计开始阶段就要进行彻底的仔细的规划并对每个设计步骤的进展进行全面持续的评估而这种细致的设计技巧正是国内大多数电子企业文化所欠缺的…

查看全部问答>

请问一个驱动开发入门问题

我想从事驱动开发,可是不知道如何入门?从事驱动开发需要那些方面的知识?驱动开发的学习体系是什么?请大家推荐几本好书(国外程序员写的),几个驱动开发的好论坛或者邮件列表,谢谢。…

查看全部问答>

WinCE启动步骤第一步疑问

The process of changing an EXE or DLL program file after it has been loaded to reflect the actual load address is called “fixing up”. 哪位朋友能帮我解释下这个fix up的意思么? 还有这样一句: kernel.dll is also ‘fixed up’ by ...…

查看全部问答>

请问各位大侠有什么方法可以测贴片电容的大小么?

请问各位大侠有什么方法可以测贴片电容的大小么?…

查看全部问答>

单片机程序调试黑宝书

单片机程序调试黑宝书(别人的资料) 与大家共享,希望对大家有益。 1.1 你离高手有多远?  首先我必须放下架子,因为本文的读者中很大一部分在不久的将来都会超越我。而且我也 100%不能自诩为高手,我不过是比本文的部分读者碰的钉子多些罢 ...…

查看全部问答>

富士通FRAM心得提交

富士通铁电存储器MB85RS64试用心得     多年前就已知铁电存储器的存在,对他的特点也没在意,觉得和其他存储器差不多;看到富士通FRAM免费申请赛心得 赢大礼的活动,何不参加其中,既能增加对铁电存储器的认识、增强产品设计选 ...…

查看全部问答>

飞凌2440,usb下载wince6.0启动后白屏

wince5.0和linux都没问题。。。。。。我按照飞凌提供的手册,eboot.nb0飞凌提供的是wince5.0的。NK.bin是wince6.0的。。。。。。。。结果烧写后启动白屏然后断电重启后bootload都要重新烧写,每次都这样。。。有人知道什么问题吗,谢了…

查看全部问答>