#include <reg51.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code tab1[]={'K','M','H','z','V',' '};
unsigned char code tab2[]={'E','R','R','E','R',' '};
unsigned char code tab3[]={'P','L','L',' '};
unsigned char code numb[]={'0','1','2','3','4','5','6','7','8','9','.','-',' '};
unsigned char num[5]; //此不能为code形
uint c=0;
sbit p31=P3^1;
bit flag=1; //显示标志位
/*与lcd有关的口*/
/*sbit RS=P2^7;
sbit RW=P2^6;
sbit E=P2^5;
sbit RDat=P2^4;
sbit TD=P2^3;
*/
sbit RS=P3^7;
sbit RW=P3^6;
sbit E=P3^5;
sbit RDat=P3^4;
sbit TD=P3^3;
/*共阴代码*/
//unsigned char code numb0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*虚拟同步串行通信*/
void corr(uchar dat) //164使用共阴代码
{uchar ADS,i;
ADS=dat;
for(i=8;i>0;i--)
{TD=0;
RDat=ADS&0x80; //此处有误,已改
TD=1;
ADS=ADS<<1;
}
}
/**************************************************/
/*延时程序*/
void delay(uchar j)
{
uchar n;
for(j;j>0;j--)
{for(n=248;n>0;n--){} //delay500us
}
}
/*查忙标志*/
/* void f_buzy(void)
{
unsigned char j;
RS=0;
WR=1;
j=P0;
while((j&0x80)==0x80) ;
WR=0;
}*/
/*指令发送*/
void lcd_com(unsigned char a)
{ E=1;
RS=0;
WR=0;
corr(a);
/*f_buzy(); */
delay(1);
E=0;
}
/*数据发送*/
void lcd_dat(unsigned char b)
{ E=1;
RS=1;
WR=0;
corr(b);
/*f_buzy(); */
delay(1);
E=0;
}
/*********************************/
void lcd_init(void)
{
delay(20);
lcd_com(0x0c); //显示开关控制,开显示,开光标,闪烁�
lcd_com(0x38); //8位数据总线,两行显示,5X7点阵
lcd_com(0x01); //清屏
delay(20);
lcd_com(0x06); //AC自动加1,显示不动
}
/*********************数字分离**********************************/
void separate(uint Data)
{num[4]=Data%10;
num[3]=(Data/10)%10;
num[2]=Data/100%10;
num[1]=Data/1000%10;
num[0]=Data/10000;
}
/***************/
void t1() interrupt 0 using 2
{uchar a,b;
a=TH0;
b=TL0;
TH0=0x00;
TL0=0x00;
c=a*256+b; //
flag=0;
EX0=0;
// TR0=1;
}
/***************/
void init(void)
{TH0=0;
TL0=0;
TR0=1;
EA=1;
EX0=1;
IT0=1;
}
main()
{ uchar i;
uchar counter;
TMOD=0x09;
init();
lcd_init();
delay(20);
//lcd_com(0x0f); //显示开关控制,开显示,开光标,闪烁�
//lcd_com(0x38); //8位数据总线,两行显示,5X7点阵
//lcd_com(0x01); //清屏
//delay(2);
//lcd_com(0x06); //AC自动加1,显示不动
// lcd_com(0x0c); //
flag=0;
RW=0;
p31=0;
while(1)
{counter++;
if(counter==10)
counter=0;
//c=0x84;
if(counter==8)
EX0=1;
else
EX0=0;
separate((uint)(1000000/c));
delay(200);
delay(200);
if(!flag)
{flag=0;
//separate(c);
lcd_com(0x81); //第一行
for(i=0;i<5;i++)
lcd_dat(numb[num[i]]); //
// lcd_com(0xc1); //第二行
}
}
}
脉冲宽度测电机转速51单片机程序.zip
版权申诉
61 浏览量
2022-06-30
00:38:21
上传
评论
收藏 1KB ZIP 举报
卷积神经网络
- 粉丝: 338
- 资源: 8460