这是单片机控制电动机正反转和液晶显示的一下示例程序,大家可以参考
单片机源程序如下:
- #include <reg52.h>
- #include "LCD1602.h"
- sbit Key_UP=P3^2; //正转按键 对应实验板上的K1
- sbit Key_DOWN=P3^3;//反转按键 对应实验板上的K2
- sbit Key_STOP=P3^4;//停止键 对应实验板上的K3
- sbit ZZ=P1^0;//控制端
- sbit FZ=P1^1;//控制端
- sbit BEEP = P3^6; //蜂鸣器控制端口P36
- unsigned char KeyV,TempKeyV;
- void Delay(unsigned int ii)
- {
- unsigned int jj;
- for(;ii>0;ii--)
- for(jj=0;jj<125;jj++)
- {;}
- }
- //LCD初始化
- void InitLCD()
- {
- LCDReset();
- InputMode(0x06); //增量方式,不移位
- DispControl(0x0c); //显示开,光标关,闪烁关
- FunctionSet(0x38); //8位,2行,5×7
- }
- /*********************************************************/
- void beep() //蜂鸣器响一声函数
- {
- unsigned char i;
- for (i=0;i<100;i++)
- {
- Delay(1);
- BEEP=!BEEP; //BEEP取反
- }
- BEEP=1; //关闭蜂鸣器
- Delay(250); //延时
- }
- void main()
- {
- FZ=1;
- ZZ=1;
- InitP0(0);
- InitLCD();
-
- while(1){
- if (!Key_UP)
- KeyV = 1;
- if (!Key_DOWN)
- KeyV = 2;
- if (!Key_STOP)
- KeyV = 3;
- if (KeyV!= 0)
- {
- Delay(10);
- if (!Key_UP)
- TempKeyV = 1;
- if (!Key_DOWN)
- TempKeyV = 2;
- if (!Key_STOP)
- TempKeyV = 3;
- if (KeyV == TempKeyV)
- {
-
- if (KeyV == 1){
- beep();
- ZZ=1;
- FZ=0;
- }
- if(KeyV==2){
- beep();
- ZZ=0;
- FZ=1;
- }
- if(KeyV==3){
- beep();
- ZZ=0;
- FZ=0;
- }
- }
- }
- KeyV=0;
- TempKeyV=0;
- if(ZZ==1&FZ==0){
- DispCharacter(0,4,'F');
- DispCharacter(0,5,'O');
- DispCharacter(0,6,'R');
- DispCharacter(0,7,'E');
- DispCharacter(0,8,'W');
- DispCharacter(0,9,'A');
- DispCharacter(0,10,'R');
- DispCharacter(0,11,'D');
- }
- if(ZZ==0&FZ==1){
- DispCharacter(0,4,'R');
- DispCharacter(0,5,'O');
- DispCharacter(0,6,'L');
- DispCharacter(0,7,'L');
- DispCharacter(0,8,'B');
- DispCharacter(0,9,'A');
- DispCharacter(0,10,'C');
- DispCharacter(0,11,'K');
- }
- if(ZZ==0&FZ==0){
- DispCharacter(0,4,'S');
- DispCharacter(0,5,'T');
- DispCharacter(0,6,'O');
- DispCharacter(0,7,'P');
- DispCharacter(0,8,' ');
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
正反转及其液晶显示.zip
(41.25 KB, 下载次数: 37)
|