欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機編碼電機測速程序-PROTEUS仿真+KEIL5工程
[打印本頁]
作者:
Briana
時間:
2020-10-2 19:21
標題:
單片機編碼電機測速程序-PROTEUS仿真+KEIL5工程
仿真.PNG
(103.16 KB, 下載次數: 36)
下載附件
2020-10-2 19:17 上傳
單片機源程序如下:
#include "reg52.h"//此文件中定義了單片機的一些特殊功能寄存器
#include <intrins.h>
/***********數據類型聲明***********/
typedef unsigned int u16;//對數據類型進行聲明定義
typedef unsigned char u8;
/***********IO口相關定義***********/
sbit RS = P2^7;
sbit RW = P2^6;
sbit E = P2^5;
sbit CH_B = P3^3;
sbit PWM = P2^0;
/**********變量定義*************/
u8 flag = 1; //正反轉標志位
u8 count = 0; //定時器溢出次數計數
unsigned char count1 = 0; //定時器溢出次數計數 0~255
u16 Pulse_A = 0; //脈沖數計數
float Speed_A = 0;//轉數 r/min
void Timer0Init();//定時器0初始化
void Timer1Init();//定時器1初始化
void Int0Init(); //外部中斷0初始化
void lcd_int(); //LCD初始化函數
void lcd_w_cmd(unsigned char com); //寫命令字函數
void lcd_w_dat(unsigned char dat); //寫數據函數
unsigned char lcd_r_start(); //讀狀態函數
void Delayus(unsigned int t); //延時函數
/*******************主函數*****************************************************/
void main()
{
u8 i = '0';
u16 pulse_a = 0;
u8 arr[5]={0};
lcd_int(); //LCD初始化
Timer0Init(); //定時器0初始化
Timer1Init();//定時器1初始化
Int0Init(); //外部中斷0初始化
while(1)
{
lcd_w_cmd(0x80 + 0x00); //設置LCD顯示位置,第1行
if( flag == 0) //正反轉判斷
{
lcd_w_dat('Z'); //正轉
}
else
{
lcd_w_dat('F'); //反轉
}
if( count >= 20) //20*50ms = 1s 計算轉速
{
count = 0; //清0
pulse_a = Pulse_A;
Pulse_A = 0; //清0
Speed_A = pulse_a * 60.0 / 24 ; //計算轉數 r/min
arr[0] = (u8)Speed_A/100 + '0'; //百位
arr[1] = (u8)Speed_A/10%10 + '0';//十位
arr[2] = (u8)Speed_A%10 + '0'; //個位
arr[3] = '.'; //小數點
arr[4] = (u8)(Speed_A*10)%10 + '0'; //十分位
lcd_w_cmd(0x80+0x40); //第二行顯示位置
for(i=0;i<5;i++)
{
lcd_w_dat(arr[i]); //打印轉數[/i][i]
}
}
if( count1 >= 100 ) //周期100*1ms = 100ms
{
count1 = 0 ;
}
if( count1 <= 80 ) //占空比
{
PWM = 1; //高電平 40ms
}
else
{
PWM = 0 ; //低電平 100-50 = 50ms
}
}
}
/*********外部中斷0初始化**********************************/
void Int0Init() //設置INT0
{
IT0=1;//跳變沿出發方式(下降沿)
EX0=1;//INT0的中斷允許
EA=1;//打開總中斷
}
/*外部中斷0的中斷函數*/
void Int0() interrupt 0
{
Pulse_A++; //脈沖數++
if(CH_B == 1)
{
flag = 0;//正轉
}
else
{
flag = 1;//反轉
}
}
復制代碼
全部資料51hei下載地址:
編碼電機測速.rar
(70.66 KB, 下載次數: 117)
2020-10-2 19:20 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
Briana
時間:
2020-10-2 19:22
LCD顯示字母‘z’表示電機正轉
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1