#include //單片機頭文件,儲存一些殊寄存器的地址聲明 #include //intrins頭文件儲存51編程中需要使用到空指令_nop_()、字符循環(huán)移位指令_crol_等 #include //stdio : "standard input & output"(標準輸入輸出),C/C++頭文件,把多個編譯單元(.c或者.cpp文件)公用的內(nèi)容,單獨放在一個文件里減少整體代碼尺寸 #define usint unsigned short int //符號短整型 #define uchar unsigned char //無符號字符型 #define uint unsigned int //無符號整型 #define VALID 0 //0 #define INVALID 1 //1 #define LCD_data P0 //LCD數(shù)據(jù)端口P0 sbit LCD_RS = P2^7; //LCD命令和數(shù)據(jù)控制位,1:寫數(shù)據(jù)位,0:寫命令 sbit LCD_RW = P2^6; //LCD讀寫控制位 sbit LCD_EN = P2^5; //LCD使能位 sbit IN1 = P2^0; //電機 sbit IN2 = P2^1; sbit ENA = P2^3; uchar code title2[] = {"電機轉(zhuǎn)速:"}; uchar code ascii[] = {0x31,0x32,0x33,0x41,0x34,0x35,0x36,0x42,0x37,0x38,0x39,0x43,0x2A,0x30,0x23,0x44}; //數(shù)字和常用字符的ascii碼 uint n = 0; //T0定時中斷響應次數(shù) uint n_pwm = 0; //用于調(diào)節(jié)pwm占空比 uint c = 0; //外部計數(shù)中斷響應次數(shù) uint flag_T0 = 0; //定時器T0溢出flag uchar th = 0; //脈沖計數(shù)計算時的臨時變量高位 uchar tl = 0; //……………………………………………低位 uint num_pulse; //脈沖個數(shù) void delay_1ms(uint z){ //延時函數(shù)1ms uint x,y; for(x = z; x > 0; x--) for(y = 920; y > 0; y--); } void write_cmd(uchar cmd){ //LCD寫命令函數(shù) LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; P0 = cmd; delay_1ms(6); LCD_EN = 1; delay_1ms(6); LCD_EN = 0; } void write_dat(uchar dat){ //LCD寫數(shù)據(jù)函數(shù) LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delay_1ms(5); LCD_EN = 1; delay_1ms(5); LCD_EN = 0; } void lcd_pos(uchar X,uchar Y){ //X表示LCD的行數(shù),Y表示LCD的列數(shù) uchar pos; if(X == 0){ X = 0x80; } else if(X == 1){ X = 0x90; } else if(X == 2){ X = 0x88; } else if (X == 3){ X = 0x98; } pos = X+Y ; write_cmd(pos); //顯示地址 } void lcd_init(){ uchar i = 0; write_cmd(0x30); //基本指令操作 delay_1ms(5); write_cmd(0x0C); //顯示開,關光標 delay_1ms(5); write_cmd(0x01); //清除LCD的顯示內(nèi)容 delay_1ms(5); lcd_pos(0,0); //將LCD光標定位到第一行第一列 } void pulse_dispaly(uint fe) //顯示脈沖個數(shù) { uchar i = 0; uchar f[7]; for(i = 0; i < 7; i++) f[i] = '0'; f[0] = ((fe)/100000) +0x30;//十萬位的數(shù)字 f[1] = ((fe)%100000)/10000 +0x30;//萬位的數(shù)字 f[2] = ((fe)%10000)/1000 +0x30;//千位的數(shù)字 f[3] = ((fe)%1000 )/100 +0x30;//百位的數(shù)字 f[4] = ((fe)%100 )/10 +0x30;//十位的數(shù)字 f[5] = ((fe)%10 ) +0x30;//個位的數(shù)字 f[6] = '