|
200黑幣
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define Enable();EA=1;
#define Disable();EA=0;
#define ZhengZhuan();PIN_Motor_A=0;PIN_Motor_B=1;
#define Stop();PIN_Motor_A=1;PIN_Motor_B=1;
#define FanZhuan();PIN_Motor_A=1;PIN_Motor_B=0;
sbit E=P2^7; //1602使能引腳
sbit RW=P2^6; //1602讀寫(xiě)引腳
sbit RS=P2^5;//1602數(shù)據(jù)/命令選擇引腳
sbit RELAY=P3^0;
int n;
n=100;
char *p1;
uchar flag;
uchar code tab1[]="Zhuangtai *p1"; //要顯示什么就在這兒改
uchar code tab2[]="n=100cm"; //[size=15.5555562973022px]要顯示什么就在這兒改
void delay(uint del) //延時(shí)1ms
{
uint i,j;
for(i=0;i<del;i++)
for(j=0;j<=168;j++);
}
void writecmd(uchar com) //寫(xiě)指令
{
E=0;
RS=0;
RW=0;
P0=com;
delay(2);
E=1;
delay(2);
E=0;
}
void writedata(uchar dat)//寫(xiě)數(shù)據(jù)
{
E=0;
RS=1;
RW=0;
P0=dat;
delay(2);
E=1;
delay(2);
E=0;
}
void init(void) //初始化
{
delay(15);
writecmd(0x38);
delay(5);
writecmd(0x38);
delay(5);
writecmd(0x38);
writecmd(0x38);
writecmd(0x08);
writecmd(0x01);
writecmd(0x06);
writecmd(0x0c);
}
void Display()
{
uchar j;
init();
writecmd(0x80); //告訴液晶在哪個(gè)地方顯示 (設(shè)置地址指針)//80H+00
for(j=0;j<16;j++) //有16個(gè)字符,要循環(huán)16次
{
writedata(tab1[j]);
delay(2);
}
writecmd(0x80+0x40); //再設(shè)置第二行的起始位置80H+40H
for(j=0;j<16;j++) //有16個(gè)字符,要循環(huán)16次
{ writedata(tab2[j]);
delay(2);
}
while(1);
}
sbit s1 = P1^0;
sbit s2 = P1^1;
sbit s3 = P1^2;//按鍵定義,s1啟動(dòng),s2加1,s3減1
sbit a = P2^0;sbit b = P2^1;sbit c = P2^2;sbit d = P2^3;//脈沖信號(hào)輸入端定義
#define Coil_a {a=1;b=0;c=0;d=0;}//A相通電,其他相斷電
#define Coil_b {a=0;b=1;c=0;d=0;}//B相通電,其他相斷電
#define Coil_c {a=0;b=0;c=1;d=0;}//C相通電,其他相斷電
#define Coil_d {a=0;b=0;c=0;d=1;}//D相通電,其他相斷電
//================================定時(shí)器0/1初始化函數(shù)================================
void T0_T1_init()
{
TMOD = 0x11;//定時(shí)器0/1均工作于方式1,16位計(jì)時(shí)方式
TR1 = 0;
ET1= 1;//開(kāi)定時(shí)器中斷
EA = 1;//開(kāi)總中斷
}
//================================ms級(jí)延時(shí)函數(shù)=======================================
void delay1m(uint x)
{
uint i,j;
for(i=0;i<x;i++) //連數(shù)x次,約 x ms
for(j=0;j<120;j++); //數(shù)120 次,約1 ms
}
//=================按鍵函數(shù)=================================
void keyscan()
{
if(s1==0)
{
delay(5);
if(s1==0)
{
while(!s1);
flag=!flag;
}
else
{
while(!s1);
flag=0;
}
}
if(flag==0)
{
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!s2);
n++;
if(n>199)n=199;
}
}
if(s3==0)
{
delay(5);
if(s3==0)
{
while(!s3);
n--;
if(n<=0)
n=0;
}
}
}
}
//================================主函數(shù)=============================================
void main()
{
uchar j;
Display();
while(1)
{
if(s1==0)
{
delay1m(3);
if(flag==1&&n>0)
{
for(j=0;j<n;j++)
{
a=1;
}
a=0;
delay(3);
RELAY=0;
delay(500);
RELAY=1;
}
}
}
}
|
最佳答案
查看完整內(nèi)容
樓主的顯示程序里多了個(gè)死循環(huán)while(1),程序怎么運(yùn)行下去?main程序的主循環(huán)沒(méi)有調(diào)用按鍵程序和顯示程序,你怎么操作和顯示?
|