1、电工电子实验程序清单包含液晶和电机等电工电子实验实现的功能简略流程图程序清单/头文件在此#include #include #include CONFIG.H#include LCM_DRIVE.H#include GRAPHICS.H#include #include /主程序全局变量uchar counter0=1; /菜单选择计数器/函数在此声明void Square_Disp(uint8 x, uint8 y, char *dd); /显示16*16字模void Choose_Disp(uchar counter0); /菜单选择void Bee_start(void); /报警uch
2、ar TLC549ADC(void); /模数转换void Int_initial(); /外部中断初始化 void Light_Task(); /小灯交替闪亮void K1CHECK(); /检查K1是否按下void K2CHECK(); /检查K2是否按下void DelayS(uint16 delayno); /延时/字码表在此 /*- 文字: 准 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 code mytab132=0x00,0x02,0x1C,0xC8,0x20,0x10,0xFF,0x4A,0x48,0x49,0xFE,0x48,0x68,
3、0x4C,0x08,0x00,0x02,0x02,0x7E,0x01,0x00,0x00,0x7F,0x22,0x22,0x22,0x3F,0x22,0x23,0x32,0x20,0x00;/*- 文字: 备 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 code mytab232=0x00,0x20,0x10,0x08,0x87,0x8A,0x52,0x22,0x22,0x52,0x8E,0x82,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0xFF,0x4A,0x4A,0x4A,0x7E,0x4A,0x4A,0x4A,0xFF
4、,0x01,0x03,0x01,0x00;/*- 文字: 模 -*/*- 仿宋12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 code mytab332=0x00,0x20,0xA0,0xFF,0x50,0x90,0xE8,0xBF,0x94,0x54,0x5C,0xF7,0x04,0x04,0x00,0x00,0x04,0x03,0x00,0x7F,0x00,0x48,0x2B,0x1A,0x0A,0x07,0x0D,0x15,0x64,0x44,0x40,0x00;/*- 文字: 数 -*/*- 仿宋12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 c
5、ode mytab432=0x00,0x20,0xA4,0x68,0xFF,0x20,0x58,0x96,0x60,0xB8,0x27,0xE0,0x10,0x10,0x00,0x00,0x40,0x45,0x24,0x2C,0x13,0x2E,0x42,0x40,0x20,0x19,0x06,0x19,0x60,0x40,0x40,0x00;/*- 文字: 小 -*/*- 仿宋12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 code mytab532=0x00,0x00,0x00,0xC0,0x30,0x00,0x00,0xFE,0x00,0x10,0x20,0xC0,0
6、x00,0x00,0x00,0x00,0x08,0x04,0x03,0x00,0x00,0x10,0x20,0x7F,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00;/*- 文字: 灯 -*/*- 仿宋12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 code mytab632=0x10,0x60,0x00,0xFF,0x40,0x30,0x00,0x08,0x08,0x08,0xF8,0x04,0x04,0x04,0x04,0x00,0x40,0x20,0x18,0x07,0x02,0x04,0x08,0x00,0x10,0x20,0x7F,
7、0x00,0x00,0x00,0x00,0x00;/*- 文字: 电 -*/*- 仿宋12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 code mytab732=0x00,0x00,0xF0,0x10,0x90,0x90,0xFF,0x48,0x48,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x1F,0x22,0x22,0x22,0x23,0x20,0x20,0x38,0x00,0x00;/*- 文字: 机 -*/*- 仿宋12; 此字体下对应的点阵为:宽x高=16x16 -*/uin
8、t8 code mytab832=0x00,0x20,0xA0,0xFF,0x50,0x90,0x00,0xFC,0x04,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x08,0x06,0x01,0x7F,0x00,0x41,0x38,0x07,0x00,0x00,0x1F,0x20,0x20,0x20,0x3C,0x00;/*- 文字: 转 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 code mytab932=0xC8,0xA8,0x9C,0xEB,0x88,0x88,0x88,0x40,0x48,0xF8,0x4F,0x
9、48,0x48,0x48,0x40,0x00,0x08,0x08,0x04,0xFF,0x04,0x04,0x00,0x02,0x0B,0x12,0x22,0xD2,0x0E,0x02,0x00,0x00;/*- 文字: 向 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 code mytab1032=0x00,0x00,0xFC,0x04,0x04,0xE6,0x25,0x24,0x24,0x24,0xE4,0x04,0x04,0xFC,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,
10、0x0F,0x20,0x40,0x3F,0x00,0x00;/*- 文字: -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/uint8 code mytab32=0x40,0x40,0xC0,0xC0,0xC0,0xE0,0xFC,0xFF,0xFC,0xE0,0xC0,0xC0,0xC0,0x40,0x40,0x00,0x00,0x00,0x40,0x39,0x3F,0x1F,0x1F,0x0F,0x1F,0x1F,0x3F,0x39,0x40,0x00,0x00,0x00;/*- 文字: -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/uin
11、t8 code mytab032=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;/16*16显示程序void Square_Disp(uint8 x, uint8 y, char *dd) uint8 i=0; for(i=0;i16;i+) /输出上半部分 LCM_WriteByte(x+,y,*(dd+); for(i=
12、0;i5;i+); /延时 x=x-16; /调整转出位置 for(i=0;i16;i+) /输出下半部分 LCM_WriteByte(x+,y+8,*(dd+);/菜单选择void Choose_Disp(uchar counter0) if(counter0!=1) Square_Disp(0,16*(counter0-2),mytab0); Square_Disp(0,16*(counter0-1),mytab); else Square_Disp(0,48,mytab0); Square_Disp(0,0,mytab); /蜂鸣器sbit Buzz=P17;void Bee_start
13、(void) Buzz=0; DelayS(1); Buzz=1; DelayS(1); /TLC549,TLC549是串行8位ADC,使用的接口 /CS = P1.2, DAT = P1.1, CLK = P1.0sbit CLK=P10;sbit DAT=P11;sbit CS=P12;uchar bdata ADCdata;sbit ADbit=ADCdata0;/模拟量采集uchar TLC549ADC(void) uchar i; CLK=0; DAT=1; CS=0; for(i=0;i8;i+) CLK=1; _nop_(); _nop_(); ADCdata0;i-) /延时
14、_nop_(); if(P3_2=0) if(counter0=4) TR0=0; ET0=0; if(counter00; delayno-) for(i=0; i0;i-) /延时 _nop_(); AD_DATA=ADCdata; /将采集的数据转换为实际数值 end_data=(long)AD_DATA*2; d0=(long)end_data/100; d2=(long)end_data%10; d1=(long)(end_data-d0*100)/10; LCM_DispChar(3,8,d0+0); /在屏幕显示采集的模拟量 LCM_DispChar(3,9,.); LCM_Di
15、spChar(3,10,d1+0); LCM_DispChar(3,11,d2+0); LCM_DispChar(3,12,v); if(end_data400) /越限报警 LCM_DispChar(3,14,H); Bee_start(); else if(end_data100) LCM_DispChar(3,14,L); Bee_start(); else LCM_DispChar(3,14,M); break; case 3: /选中“小灯”,小灯闪烁 Choose_Disp(counter0); LCM_DispStr(3,8, ); LCM_DispStr(5,8,Spark!)
16、; DelayS(5); while(counter0=3) Light_Task(); break; case 4: /选中“电机”,实现相应按键功能 Choose_Disp(counter0); LCM_DispStr(5,8, ); DelayS(2); Time0_intial(); P1_3=0; /选择电机选项时,电机启动 P1_6=1; while(counter0=4) LCM_DispStr(5,8, ); Square_Disp(64,48,mytab9); Square_Disp(80,48,mytab10); if(P3_0=0) /SW1接P3.0控制转向 P1_3=
17、1; /正转 LCM_DispStr(7,12, ); LCM_DispStr(7,12,+); else if(P3_0=1) P1_3=0; /反转 LCM_DispStr(7,12, ); LCM_DispStr(7,12,-); if(P1_4=0) K1CHECK();/扫描KEY1, K1,K2控制占空比控制转速,K1加速 LCM_DispStr(7,13, ); LCM_DispStr(7,13,K1); if(P1_5=0) K2CHECK();/扫描KEY2,如果按下KEY2,跳转到KEY2处理程序,K2减速 LCM_DispStr(7,13, ); LCM_DispStr(7,13,K2); P1_3=0; /选中其他菜单时停止电机 P1_6=0; break;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1