#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code num0[]="跟蹤電壓值PWM/V";
uchar code num1[]=" V";
uchar code num2[]="0123456789";//電壓值
sbit rs=P3^5;
sbit rw=P3^6;
sbit e=P3^4;
sbit psb=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
sbit S2=P3^0;
sbit S3=P3^1;
sbit fm=P2^3;
uchar pwm,num,i,j,a=5;
void delay(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void lcd_com(uchar com)//寫指令位置
{
rs=0;
rw=0;
e=0;
P0=com;
delay(0);
e=1;
delay(0);
e=0;
}
void lcd_dat(uchar dat) //寫數據內容
{
rs=1;
rw=0;
e=0;
P0=dat;
delay(0);
e=1;
delay(0);
e=0;
}
void init()//液晶初始化
{
psb=1;
lcd_com(0x30);
delay(1);
lcd_com(0x0c);
delay(1);
lcd_com(0x01);
delay(1);
}
void disp()
{
uchar i;
lcd_com(0x80);
for(i=0;i<16;i++)
{
lcd_dat(num0[i]);
}
}
void disp1()
{
uchar i;
lcd_com(0x90);
for(i=0;i<3;i++)
{
lcd_dat(num1[i]);
}
}
void bee()
{
fm=0;
delay(100);
fm=1;
delay(100);
}
void keyscan()
{
if(S2==0)
{
delay(50);
if(S2==0)
{
if(pwm<10)
{
pwm++; delay(50);
a--; delay(50);
}
}
else
{
bee();
}
}
if(S3==0)
{
delay(50);
if(S3==0)
{
if(pwm>1)
{
pwm--; delay(50);
a++; delay(50);
}
else
{
bee();
}
}
}
if(a>9)a=9;
if(a<0)a=0;
}
void init_t0()
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
ET0=1;
TR0=1;
}
void t0() interrupt 1
{
TR0=0;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
num++;
if(num>10)
{
num=0;
}
if(num<=pwm)
{
P1=0xff;
P0=0x00;
}
else
{
P1=0x00;
P0=0xff;
}
TR0=1;
}
void main()
{
init_t0();
init(); //初始化液晶
num=0;
pwm=5;
wela=0;
dula=0;
while(1)
{
disp();
disp1();
lcd_com(0x90); //電源跟蹤值顯示位置
lcd_dat(num2[a]); //電源跟蹤值
keyscan();
}
}
這里是調電機的,你下載也是可以用的
|