历史上的今天
今天是: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!='




