标题:
不能实现复位而且蜂鸣器也不能响怎么回事??求教
[打印本页]
作者:
流年似水@
时间:
2017-4-25 13:56
标题:
不能实现复位而且蜂鸣器也不能响怎么回事??求教
#include<reg51.h> //头文件
#define uchar unsigned char //预定义
#define uint unsigned int
#define lcd_dat P0
sbit lcdrs=P2^6; //1602的数据/指令选择控制线
sbit lcdrw=P2^5; //1602的读写控制线
sbit lcden=P2^4; //1602的使能控制线
sbit yihao=P2^0; //一号病房按键
sbit erhao=P2^1;
sbit sanhao=P2^2;
sbit sihao=P2^3;
uchar table1[]="Number";
uchar table2[]="1234";
void delay(uint z) //延时子程序
{
uint x,y;
for(x=z;x>0;x--) for(y=110;y>0;y--);
}
void write_com(uchar com) //写命令子程序
{
lcdrs=0;
lcdrw=0;
P0=com;
delay(5);
lcden=1;
delay(3);
lcden=0;
}
void write_data(uchar date) //写数据子程序
{
lcdrs=1;
lcdrw=0;
P0=date;
delay(5);
lcden=1;
delay(3);
lcden=0;
}
void init() //1602初始化子程序
{
write_com(0x38);//显示模式设置。
delay(5);
write_com(0x0c);//关光标,不闪烁
delay(5);
write_com(0x06); //显示地址递增,即写一个数据后,显示位置右移位
delay(5);
write_com(0x01); //清屏
delay(5); }
void Number() //显示Number子程序
{uchar m;
write_com(0x80);
for(m=0;m<6;m++) //将table[]中的数据依次写入1602显示
{
write_data(table1[m]);
delay(200);
}
}
void main() //主函数
{
unsigned char FLAG; //FLAG的值为P2口的值
init();
do
{
FLAG=P2;
switch(FLAG&0X0f) //屏蔽P2口高四位
{
case 0X0E:
Number();
write_com(0x80+10); //显示地址设为90H(即10H,)上排第十位
write_data(table2[0]);
delay(200);
break;
case 0X0D:
Number();
write_com(0x80+10); //显示地址设为90H(即10H,)上排第十位
write_data(table2[1]);
delay(200);
break;
case 0X0B:
Number();
write_com(0x80+10); //显示地址设为90H(即10H,)上排第十位
write_data(table2[2]);
delay(200);
break;
case 0X07:
Number();
write_com(0x80+10); //显示地址设为90H(即10H,)上排第十位
write_data(table2[3]);
delay(200);
break;
default:
break;
}
}
while(1);
}
5GLQAOC7GTY%YB%}T_BL8]4.png
(19.93 KB, 下载次数: 69)
下载附件
2017-4-25 13:54 上传
作者:
aybco
时间:
2017-4-25 17:43
和开关串联电阻去掉,晶振两端电容改到10pF 到30PF之间
作者:
51Lovers
时间:
2017-4-25 18:25
不是不能复位,而系统就没有启动,C1,C2用30p就可以,R5用1K或去掉。
作者:
流年似水@
时间:
2017-4-25 20:15
我照着改了可是按完还是没效果,是不是程序也需要改呀
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1