久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
求助!1602顯示不了速度,有沒有大佬幫忙看看。
[打印本頁]
作者:
mekio韓
時(shí)間:
2019-4-28 10:01
標(biāo)題:
求助!1602顯示不了速度,有沒有大佬幫忙看看。
這是主程序,按鍵程序和1602顯示程序應(yīng)該都沒有錯(cuò)誤。有proteus仿真,1602速度顯示一直是0000
#include<reg51.h>
#include "key.h"
#include "1602.c"
uint i,z,cou,zhuan,msec; //定義參數(shù)
unsigned char count=0;
/*-------------------外部中斷1計(jì)數(shù)程序-------------------*/
void counter(void) interrupt 2
{
cou++;
if(cou==30) //30次循環(huán)為發(fā)動(dòng)機(jī)轉(zhuǎn)一圈
{
cou=0; //初始化計(jì)數(shù)
z++; //轉(zhuǎn)圈計(jì)數(shù)加1
}
}
/*-------------------------------------------------------*/
/*-----------------內(nèi)部中斷計(jì)時(shí)計(jì)數(shù)程序-----------------*/
void Timer_0(void) interrupt 3
{
TH1=0x3c; //50ms定時(shí)
TL1=0xb0;
msec++;
if(msec==20) //50*20=1S
{
msec=0;
zhuan=60*z; //每分鐘轉(zhuǎn)速
z=0;
}
}
/*-------------------------------------------------------*/
void Timer_Init()
{
TMOD=0X11; //T0定時(shí)方式1
TH1=0X3c;
TL1=0Xb0;
IT1= 1;
EX1= 1;
TH0=0Xfc;
TL0=0X66; //計(jì)數(shù)初值設(shè)置為1ms
ET0=1; //打開定時(shí)器0的中斷
TR0=1; //打開定時(shí)器0
EA=1; //開總中斷
}
void main()
{
in1=0;
in2=1;
ena=1;
Timer_Init();
InitLcd1602();
while(1)
{
key();
LcdShowStr(0, 0, "Speed= r/min");
LcdShowDat(6, 0,4, zhuan);
}
}
void Timer() interrupt 1 //特別注意此處,0--外部中斷0,1--定時(shí)器中斷0,2--外部中斷1,3--定時(shí)器中斷1,4--串行口中斷1
{
TR0=0;
TH0=0Xfc;
TL0=0X66; //重新賦計(jì)數(shù)初值為1ms
if(count<=PWM_Count)
{
ena=1;
}
else
{
ena=0;
}
count++;
if(count>=100)
{
count=0;
}
TR0=1;
}
1602顯示程序
#define uchar unsigned char
#define uint unsigned int
#define LCD1602_DB P0//數(shù)據(jù)端,可改為任意Px口
void LcdWriteCmd(uchar cmd);
/* 1602控制端,根據(jù)硬件自改IO口 */
sbit LCD1602_RS = P2^0;
sbit LCD1602_RW = P2^1;
sbit LCD1602_E = P2^2;
/* 延時(shí)函數(shù) x ms */
void delay(uint x)
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/* Lcd1602初始化 */
void InitLcd1602()
{
LcdWriteCmd(0x38);
LcdWriteCmd(0x0C);
LcdWriteCmd(0x06);
LcdWriteCmd(0x01);//清屏指令
}
/* LCD等待函數(shù) */
void LcdWaitReady()
{
uchar sta;
LCD1602_DB = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
do {
LCD1602_E = 1;
sta = LCD1602_DB;
LCD1602_E = 0;
} while (sta & 0x80);
}
/* LCD寫命令函數(shù) */
void LcdWriteCmd(uchar cmd)
{
LcdWaitReady();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_E = 1;
LCD1602_E = 0;
}
/* LCD寫數(shù)據(jù)函數(shù) */
void LcdWriteDat(uint dat)
{
LcdWaitReady();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_E = 1;
LCD1602_E = 0;
}
/* LCD數(shù)據(jù)位置函數(shù) */
void LcdSetCursor(uchar x, uchar y)
{
uchar addr;
if (y == 0)
addr = 0x00 + x;
else
addr = 0x40 + x;
LcdWriteCmd(addr | 0x80);
}
/*
LCDx寫字符函數(shù)
變量:x, y :(x,y)為第一個(gè)字符坐標(biāo)
例:第2排第3個(gè)字符之后顯示lcd
LcdShowStr(1,2,"lcd");
*/
void LcdShowStr(uchar x, uchar y, uchar *str)
{
LcdSetCursor(x, y);
while (*str != '\0')
{
LcdWriteDat(*str++);
}
}
/*
LCD寫數(shù)字函數(shù)
變量:x, y :(x,y)為第一個(gè)字符坐標(biāo)
z:顯示數(shù)字位數(shù)
例:第2排第3個(gè)字符之后顯示1666只顯示2位
LcdShowStr(1,2,1666,2);
*/
void LcdShowDat(uchar x, uchar y,uchar z, uint dat)
{
LcdSetCursor(x, y);
if(z==4)
{ LcdWriteDat(0x30+dat/1000);
LcdWriteDat(0x30+dat/100%10);
LcdWriteDat(0x30+dat/10%10);
LcdWriteDat(0x30+dat%10);}
if(z==3)
{
LcdWriteDat(0x30+dat/100);
LcdWriteDat(0x30+dat/10%10);
LcdWriteDat(0x30+dat%10);}
if(z==2){
LcdWriteDat(0x30+dat/10%10);
LcdWriteDat(0x30+dat%10);}
}
按鍵程序
#ifndef key_h
#define key_h
sbit key_1=P1^0; //順時(shí)針轉(zhuǎn)動(dòng)
sbit key_2=P1^1; //逆時(shí)針轉(zhuǎn)動(dòng)
sbit key_3=P1^2; // 加速轉(zhuǎn)動(dòng)
sbit key_4=P1^3; //減速轉(zhuǎn)動(dòng)
sbit key_5=P1^4; //停止轉(zhuǎn)動(dòng)
unsigned char PWM_Count=20; //占空比控制字
unsigned char n=5; //速度增減量5
sbit in1=P2^7;
sbit in2=P2^6;
sbit ena=P2^5;
void delays()
{
unsigned char i;
for(i=80;i>0;i--);
}
void key()
{
P1=0XFF;
if(key_1==0)
{
delays();
if(key_1==0)
{
in1=0;
in2=1;
} //順時(shí)針轉(zhuǎn)動(dòng)
while(!key_1);
}
if(key_2==0)
{
delays();
if(key_2==0)
{
in1=1;
in2=0;
}
while(!key_2);
} //逆時(shí)針轉(zhuǎn)動(dòng)
if(key_3==0)
{
delays();
if(key_3==0)
{
PWM_Count=PWM_Count+n;
if(PWM_Count>=100)
PWM_Count=100;
}
while(!key_3);
} //加速轉(zhuǎn)動(dòng) ,如果大于等于100就全速轉(zhuǎn)動(dòng)
if(key_4==0)
{
delays();
if(key_4==0)
{
if(PWM_Count>10)
{
PWM_Count=PWM_Count-n;
}
else
PWM_Count=5; //減速轉(zhuǎn)動(dòng),最低轉(zhuǎn)速為5
}
while(!key_4);
}
if(key_5==0)
{
delays();
if(key_5==0)
{
in1=0;
in2=0;
}
while(!key_5);
} //電機(jī)停止轉(zhuǎn)動(dòng)
}
QQ截圖20190428095407.png
(39.46 KB, 下載次數(shù): 79)
下載附件
2019-4-28 09:59 上傳
速度顯示一直是四個(gè)零
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美特黄视频
|
日韩av综合网
|
国产一区二区在线看
|
清清草视频
|
久久久久久国产精品
|
一区二区三区视频
|
中文字幕不卡视频
|
国产精品久久久久久久免费看
|
四虎在线播放
|
少妇一级淫片免费看
|
亚洲激情综合网
|
成人一区二区在线
|
国产精品视频免费看
|
伊人av综合
|
久久精品国产一区
|
日韩专区中文字幕
|
中文字幕日韩高清
|
日日干视频
|
一区
|
久久精品毛片
|
在线播放成人
|
在线播放av网站
|
天天躁狠狠躁
|
波多野结衣乳巨码无在线观看
|
93久久精品日日躁夜夜躁欧美
|
欧美美女视频
|
久久不射网
|
免费网站观看www在线观
|
青青草精品视频
|
亚洲一区免费视频
|
丨国产丨调教丨91丨
|
免费在线观看黄色片
|
久久私人影院
|
白浆在线
|
欧美专区在线
|
一级大片免费看
|
久久久久久穴
|
欧美黄色片
|
免费看的黄网站
|
www.黄色网
|
天天看毛片
|