L7[$XSWSUKRG5WS7APML`F9.png (92.2 KB, 下載次數(shù): 35)
下載附件
2019-5-18 10:58 上傳
下面是對應的程序,我完全按照貼吧上面連接的電路圖。咋調都不叫,按鍵控制也沒有顯示,哪個大神說一下啊 馬上就要交了
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit E=P1^2; sbit RS=P1^0; sbit RW=P1^1; sbit key1=P1^3; sbit key2=P1^4; sbit key3=P1^5; sbit key4=P1^6; sbit key5=P1^7;
void lcd_init();
void write_comm(uchar);
void write_data(uchar);
void write_string(uchar,uchar,uchar *);
void lcd_delay();
void delay_ms(uint);
void delay_ms(uint i)
{
uint j;
while(i--)
{
for(j=0; j<=74; j++)
_nop_();
}
}
void lcd_init()
{
lcd_delay();
write_comm(0x38);
write_comm(0x08);
write_comm(0x01);
write_comm(0x06);
write_comm(0x0c);
write_comm(0x80);
write_comm(0x02);
}
void write_comm(uchar i)
{
RS=0;
RW=0;
P0=i;
lcd_delay();
E=0;
lcd_delay();
E=1;
}
void write_data(uchar i)
{
RS=1;
RW=0;
P0=i;
lcd_delay();
E=0;
lcd_delay();
E=1;
}
void write_string(uchar row,uchar column,uchar *dis_buffer)
{
switch(row)
{
case 1:write_comm(0x80+column);break;
case 2:write_comm(0x80+0x40+column);break;
default:break;
}
while(*dis_buffer!='\0')
{
write_data(*dis_buffer);
dis_buffer++;
column++;
if(column==16)
{
column=0; row++; if(row>=3)
return;
}
else switch(row)
{
case 1:write_comm(0x80);break;
case 2:write_comm(0x80+0x40);break;
default:break;
}
}
}
void lcd_delay()
{
uchar i;
for(i=0;i<255;i++);
}
void main()
{
lcd_init();
//cntl1=1;cntl3=1; cntl2=0;cntl4=0;cntl5=1;cntl6=0;
write_string(1,0,"Gain:");
while(1)
{
if(key1==0)
{
delay_ms(15);
if(key1==0)
{
while(!key1);
P2=0x02;
write_string(2,0,"0dB");
}
}
if(key2==0)
{
delay_ms(15);
if(key2==0)
{
while(!key2);
P2=0x08;
write_string(2,0,"10dB");
}
}
if(key3==0)
{
delay_ms(15);
if(key3==0)
{
while(!key3); P2=0x1A;
write_string(2,0,"20dB");
}
}
if(key4==0)
{
delay_ms(15);
if(key4==0)
{
while(!key4); P2=0x51;
write_string(2,0,"30dB");
}
}
if(key5==0)
{
delay_ms(15);
if(key5==0)
{
while(!key5);
P2=0xff;
write_string(2,0,"40dB");
}
}
}
}
|