#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) //延时i毫秒 { uint j; while(i--) { for(j=0;j<=74;j++) { _nop_(); } } }
void lcd_init() { lcd_delay(); write_comm(0x38); //显示模式控制:设置16*2显示,5*7点阵,8位数据口 write_comm(0x08); //关显示 write_comm(0x01); //清屏 write_comm(0x06); //输入模式控制:光标右移,整屏不移动 write_comm(0x0c); //开显示,显示光标,光标闪烁 //0x0e,开显示,显示下光标,光标不闪烁 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') // '\\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+column);break;
case 2:write_comm(0x80+0x40+column);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,5,\"0dB\"); write_string(2,5,\"10dB\"); } } if(key2==0) { delay_ms(15); if(key2==0) { while(!key2); P2=0x08; write_string(2,5,\"10dB\"); write_string(2,5,\"10dB\"); } }
if(key3==0) { delay_ms(15); if(key3==0) {
while(!key3); P2=0x1A; write_string(2,5,\"20dB\"); write_string(1,5,\"10dB\"); } }
if(key4==0) { delay_ms(15); if(key4==0) { while(!key4); P2=0x51; write_string(2,5,\"30dB\"); write_string(1,5,\"10dB\"); } }
if(key5==0) { delay_ms(15); if(key5==0) { while(!key5); P2=0xff; write_string(2,5,\"40dB\"); write_string(1,5,\"10dB\"); } } } }
功率放大部分电阻需大功率