³£ÖÝÐÅÏ¢Ö°Òµ¼¼ÊõѧԺµç×ÓÓëµçÆø¹¤³ÌѧԺ ±ÏÒµÉè¼ÆÂÛÎÄ
ͼ3.8 Èí¼þµÄÄ£¿é½á¹¹Í¼
3.2.1Ö÷³ÌÐòµÄÉè¼Æ
²½½øµç»úËÅ·þ¿ØÖÆÆ÷ÉϵçÖ®ºó, ʼ½øÐÐϵͳµÄ³õʼ»¯,Ò»µ©Óû§°´Ï¿ØÖÆÌ¨µÄÏàÓ¦°´¼ü,·¢³öÖжÏÇëÇó,ÏìÓ¦ÖжÏÇëÇó,µ÷ÓÃÏàÓ¦µÄÏÔʾ×Ó³ÌÐò,ͬʱÔÚÒº¾§ÏÔʾÆ÷ʵʱÏÔʾ²½½øµç»úµÄÔËÐÐ״̬(RUN STATE),¼°ÔËÐеÄËÙ¶ÈÖµ(SPEED),µç»ú³õʼËÙ¶ÈÉ趨Ϊ120n/niin.ϵͳÖ÷Á÷³ÌͼÈçͼ3.9Ëùʾ¡£²½½øµç»úËÅ·þ¿ØÖÆÆ÷²¿·ÖCÓïÑÔ³ÌÐòÈçÏÂ
ͼ3.9 ϵͳÖ÷Á÷Á÷³Ìͼ
²½½øµç»úËÅ·þ¿ØÖÆÆ÷²¿·ÖCÓïÑÔ³ÌÐò£º
#include
18
³£ÖÝÐÅÏ¢Ö°Òµ¼¼ÊõѧԺµç×ÓÓëµçÆø¹¤³ÌѧԺ ±ÏÒµÉè¼ÆÂÛÎÄ
void delay.nms (unsigned int n);//ÑÓʱº¯Êý void int i-led (); void show.led (int); void cmd-wr (); void ShowState ();
void clock (unsigned int Delay); void DoSpeed 0 ; //¼ÆËãËÙ¶È //Õýתֵ,
#define RIGHT-RUN 1 //·´×ªÖµ
#define LEFT-RUN 0 #define LCD.DATA PI sbit RS=P0A0; sbit RW=P0A1; sbit E=P0A2; sbit P2.1=P2A1; sbit P2.0-P2A0; sbit P1_7=P1A7; sbit aO=P2A2; sbit al=P2A3; sbit a2=P2A4; sbit a3=P2A5; sbit a4=P2A6; sbit a5=P2A7;
char SpeedChar [] = {\(n/min): char StateChar[] = {\STATE:\char STATE¡ªCW[] = {\char STATE-CCW[]?(\char SPEED [3] = {%unsigned int RunSpeed=50; //ËÙ¶È
unsigned char RunState-RIGHT_RUN; //ÔËÐÐ״̬ ¡°oid main () { EA=1;
//¿ªÖжÏ
19
³£ÖÝÐÅÏ¢Ö°Òµ¼¼ÊõѧԺµç×ÓÓëµçÆø¹¤³ÌѧԺ ±ÏÒµÉè¼ÆÂÛÎÄ
IT0=1;
//Âö³å·½Ê½
EXO^l;
//¿ªÍⲿÖжÏ0:¼ÓËÙ
IT1=1;
//Âö³å·½Ê½
EX1 = 1;
//¿ªÍⲿÖжÏ1:¼õËÙ
inti-lcd (); DoSpeed (); ShowState (); whi le (1) {
P2_l=P2_lA0x01; clock (RunSpeed); }}
//ÖжÏ0:¼ÓËÙ³ÌÐò void INT_0 () interrupt 0 { }
void INT_1 () interrupt 2 { }
int delay () //ÅжÏLCDÊÇ·ñæ
{ int a; start: RS=0; RW-1; E=0;
for (a=0; a<2; a++); E=l; Pl=0xff;
20
³£ÖÝÐÅÏ¢Ö°Òµ¼¼ÊõѧԺµç×ÓÓëµçÆø¹¤³ÌѧԺ ±ÏÒµÉè¼ÆÂÛÎÄ
if (Pl_7==0) return 0; else goto start;}
void clock (unsigned int Delay) //1ms ÑÓʱ³ÌÐò { unsigned int i; for (; Delav>0; DelayÒ») for (i=0; i <124; i++); }
void DoSpeed () {
SPEED[0]=(1000*6/RunSpeed/100)+48; SPEED[l]=1000*6/RunSpeed%l 00/10+48; SPEED[2]=1000*6/RunSpeed%l0+48; }
3.2.2ϵͳµ÷ËÙÄ£¿éµÄÉè¼Æ
ϵͳµ÷ËÙÄ£¿éÖ÷ÒªÊÇͨ¹ý¸Ä±äÊäÈëµ½²½½øµç»úÇý¶¯Æ÷µÄÂö³åƵÂʵĿìÂýÀ´ÊµÏÖ¡£µ¥Æ¬»ú¿ØÖƲ½½øµç»ú¼Ó¼õËÙÔËתµÄ·½·¨ÓÐÓ²¼þ·¨ºÍÈí¼þ·¨Á½ÖÖ,Èí¼þ·¨ÊÇÖ¸ÓÃÑÓʱ³ÌÐòÀ´¸Ä±äÊä³öÂö³åƵÂÊ¡£Ó²¼þ·¨ÊÇÓÃÒ»¸ö¶¨Ê±Æ÷À´ÊµÏÖ,ÔÚÿ´Î½øÈ붨ʱÖжϺó,¸Ä±ä¶¨Ê±Æ÷µÄ¶¨Ê±³£Êý¡£´Ó¶øÊµÏÖ±äËÙ¿ØÖÆ¡£ÔÚ²½½øµç»úËÅ·þϵͳÖÐ,²ÉÓÃÈí¼þ·¨½øÐмӼõËٵĿØÖÆ¡£¸ù¾Ý²½½øµç»úµÄÆô¶¯ÆµÂÊΪ3000PPS,ϵͳ±à³ÌʱÉ趨µÄƵÂÊֵΪ2000PPS,ͨ¹ý¸Ä±äÈí¼þ³ÌÐòÖÐÑÓʱ³ÌÐòµÄÖµ,À´¿ØÖƲ½½øµç»úµÄÂö³å.ƵÂÊÖµ,ʵÏÖ²½½øµç»úµÄ¼ÓËÙ¡¢¼õËٵĿØÖÆ¡£ 3.2.3°´¼üÏÔʾģ¿éµÄÉè¼Æ
°´¼ü´¦Àí³ÌÐòʵʱɨÃèP2. 2-P2. 7¶Ë¿ÚµÄµçƽֵµÄ±ä»¯,µ±Óû§°´ÏÂÏàÓ¦°´¼ü,°´¼üÖµ±äΪµÍµçƽ,³ÌÐòɨÃèµ½µÍµçƽÐźÅ,¾Í»á·¢³öÏàÓ¦µÄÍⲿÖжÏÇëÇó,ÔòÖ´ÐÐÏàÓ¦µÄÄ£¿é×Ó³ÌÐò,ͬʱÔÚL¢ÇÉÏʵʱÏÔʾϵͳµÄËÙ¶ÈÓë״̬ÐÅÏ¢,Ö±µ½°´ÏÂͣϰ´¼üºó,ϵͳ½«´¦ÓÚֹͣ״̬¡£°´¼üÏÔʾģ¿éÁ÷³ÌͼÈçͼ3.10Ëùʾ¡£ LCDÏÔʾ³ÌÐò²¿·Ö´úÂëÈçÏÂ: void ShowState() //ÏÔʾ״̬ÓëËÙ¶È { int i=0;
while(SpeedChar[i]!=¡®\\0¡¯) {delay ();
show_lcd(SpeedChar Li):
21
Ïà¹ØÍÆ¼ö£º