51c语言1602显示滴速,只显示176,求大神帮忙解决
时间:10-02
整理:3721RD
点击:
不是硬件问题,在别的上试过了
main.c
#include<reg51.h>
#include<intrins.h>
#include"lcd.h"
unsigned char Time=0,V=0;
unsigned char i,c=0;
unsigned char Date_Name[6]="speed:";
unsigned char Date_Unit[5]="d/min";
unsigned char Date_Speed[3];
void TimerConfiguration();
void IntConfiguration();
void LCD_Speed();
void Lcd_Name();
void Lcd_Unit();
void main(void)
{
LCD1602_Init();
Lcd_Name();
Lcd_Unit();
IntConfiguration();
TimerConfiguration();
while(1)
{
LCD_Speed();
}
}
void Lcd_Name()
{
LCD1602_WriteCom(0x80);
for(i=0;i<6;i++)
{
LCD1602_WriteData(Date_Name[i]);
}
}
void Lcd_Unit()
{
LCD1602_WriteCom(0x8B);
for(i=0;i<5;i++)
{
LCD1602_WriteData(Date_Unit[i]);
}
}
void LCD_Speed()
{
if(c==1)
{
c=0;
V=1200/Time;
Time=0;
Date_Speed[0]=(V/100)+0x30;
Date_Speed[1]=(V%100/10)+0x30;
Date_Speed[2]=(V%10)+0x30;
LCD1602_WriteCom(0x87);
for(i=0;i<3;i++)
{
LCD1602_WriteData(Date_Speed[i]);
}
}
else
{
}
}
void IntConfiguration()
{
IT0=0;
EX0=1;
EA =1;
}
void TimerConfiguration()
{
TMOD= 0x01;
TH0 = 0x3C;
TL0 = 0xB0;
EA =1;
ET0=1;
TR0=1;
}
void Timer0() interrupt 1
{
TH0 = 0x3C;
TL0 = 0xB0;
Time++;
}
void Int0() interrupt 0
{
c=1;
}
lcd.c
#include"lcd.h"
void Delay1us(uint a)
{
uint b,c;
for(c=a;c>0;c--)
for(b=110;b>0;b--);
}
#ifndef LCD1602_4PINS
void LCD1602_WriteCom(uchar com)
{
LCD1602_E=0;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DATAPINS=com;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#else
void LCD1602_WriteCom(uchar com)
{
LCD1602_E=0;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DATAPINS=com;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
Delay1us(10);
LCD1602_DATAPINS=com<<4;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#endif
#ifndef LCD1602_4PINS
void LCD1602_WriteData(uchar dat)
{
LCD1602_E=0;
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_DATAPINS=dat;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#else
void LCD1602_WriteData(uchar dat)
{
LCD1602_E=0;
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_DATAPINS=dat;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
LCD1602_DATAPINS=dat<<4;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#endif
#ifndef LCD1602_4PINS
void LCD1602_Init()
{
LCD1602_WriteCom(0x38);
LCD1602_WriteCom(0x0c);
LCD1602_WriteCom(0x06);
LCD1602_WriteCom(0x01);
LCD1602_WriteCom(0x80);
}
#else
void LCD1602_Init()
{
LCD1602_WriteCom(0x32);
LCD1602_WriteCom(0x28);
LCD1602_WriteCom(0x0c);
LCD1602_WriteCom(0x06);
LCD1602_WriteCom(0x01);
LCD1602_WriteCom(0x80);
}
#endif
LCD.H
#ifndef __LCD_H_
#define __LCD_H_
#define LCD1602_4PINS
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
void Delay1us(uint a);
void LCD1602_WriteCom(uchar com);
void LCD1602_WriteData(uchar dat);
void LCD1602_Init();
#endif
main.c
#include<reg51.h>
#include<intrins.h>
#include"lcd.h"
unsigned char Time=0,V=0;
unsigned char i,c=0;
unsigned char Date_Name[6]="speed:";
unsigned char Date_Unit[5]="d/min";
unsigned char Date_Speed[3];
void TimerConfiguration();
void IntConfiguration();
void LCD_Speed();
void Lcd_Name();
void Lcd_Unit();
void main(void)
{
LCD1602_Init();
Lcd_Name();
Lcd_Unit();
IntConfiguration();
TimerConfiguration();
while(1)
{
LCD_Speed();
}
}
void Lcd_Name()
{
LCD1602_WriteCom(0x80);
for(i=0;i<6;i++)
{
LCD1602_WriteData(Date_Name[i]);
}
}
void Lcd_Unit()
{
LCD1602_WriteCom(0x8B);
for(i=0;i<5;i++)
{
LCD1602_WriteData(Date_Unit[i]);
}
}
void LCD_Speed()
{
if(c==1)
{
c=0;
V=1200/Time;
Time=0;
Date_Speed[0]=(V/100)+0x30;
Date_Speed[1]=(V%100/10)+0x30;
Date_Speed[2]=(V%10)+0x30;
LCD1602_WriteCom(0x87);
for(i=0;i<3;i++)
{
LCD1602_WriteData(Date_Speed[i]);
}
}
else
{
}
}
void IntConfiguration()
{
IT0=0;
EX0=1;
EA =1;
}
void TimerConfiguration()
{
TMOD= 0x01;
TH0 = 0x3C;
TL0 = 0xB0;
EA =1;
ET0=1;
TR0=1;
}
void Timer0() interrupt 1
{
TH0 = 0x3C;
TL0 = 0xB0;
Time++;
}
void Int0() interrupt 0
{
c=1;
}
lcd.c
#include"lcd.h"
void Delay1us(uint a)
{
uint b,c;
for(c=a;c>0;c--)
for(b=110;b>0;b--);
}
#ifndef LCD1602_4PINS
void LCD1602_WriteCom(uchar com)
{
LCD1602_E=0;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DATAPINS=com;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#else
void LCD1602_WriteCom(uchar com)
{
LCD1602_E=0;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DATAPINS=com;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
Delay1us(10);
LCD1602_DATAPINS=com<<4;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#endif
#ifndef LCD1602_4PINS
void LCD1602_WriteData(uchar dat)
{
LCD1602_E=0;
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_DATAPINS=dat;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#else
void LCD1602_WriteData(uchar dat)
{
LCD1602_E=0;
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_DATAPINS=dat;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
LCD1602_DATAPINS=dat<<4;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#endif
#ifndef LCD1602_4PINS
void LCD1602_Init()
{
LCD1602_WriteCom(0x38);
LCD1602_WriteCom(0x0c);
LCD1602_WriteCom(0x06);
LCD1602_WriteCom(0x01);
LCD1602_WriteCom(0x80);
}
#else
void LCD1602_Init()
{
LCD1602_WriteCom(0x32);
LCD1602_WriteCom(0x28);
LCD1602_WriteCom(0x0c);
LCD1602_WriteCom(0x06);
LCD1602_WriteCom(0x01);
LCD1602_WriteCom(0x80);
}
#endif
LCD.H
#ifndef __LCD_H_
#define __LCD_H_
#define LCD1602_4PINS
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
void Delay1us(uint a);
void LCD1602_WriteCom(uchar com);
void LCD1602_WriteData(uchar dat);
void LCD1602_Init();
#endif
