按键控制液晶显示实验
}
}
if(jianshao==0)
{
delay(10);
if(jianshao==0)
{
if(k==1)
{
if(a==0)a=10;a--;
write_com(0xc0);delay(5);write_data(0x30+a);
}
if(k==0;b--;
write_com(0xc2);delay(5);write_data(0x30+b);
#define uint unsigned int
uchar code table1[]="0.00";
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcde=P2^2;
sbit shezhi=P3^4;
sbit zengjia=P3^5;
sbit jianshao=P3^6;
write_com(0x01);
write_com(0x38);
write_com(0x0f);
write_com(0x06);
}
void keyscan1()
{
if(zengjia==0)
{
delay(10);
if(zengjia==0)
{
if(k==1)
{
a++;if(a==10)a=0;
write_com(0xc0);delay(5);write_data(0x30+a);
}
}
}
void keyscan()
{
if(shezhi==0)
{
delay(10);
if(shezhi==0)
{
k++;
if(k==4)
k=1;
if(k==1)
write_com(0xc0);
delay(500);
if(k==2)
write_com(0xc2);
delay(500);
if(k==3)
3)确定键功能
按下确定功能按键,即返回正常显示。
实验仪器
PC机、Proteus软件、Keil μVision2软件
实验步骤
1.按照实验原理及接线图在Proteus中画出仿真电路图。
2.编写程序,进行仿真。
实验程序:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
delay(5);
}
while(1);
}
实验数据
及
结果
实验总结
思考:如何用软件消除键盘的机械抖动?
答:用延时来消除键盘抖动,如:
if(shezhi==0)
{
delay(10);
if(shezhi==0)
通过本实验,不仅让我更好的了解了所学知识,更多的还提高了我对测控系统一些相关东西的兴趣,通过实验与理论的集合,让我认识到,许多高科技的东西,它的原理原来是这么的有趣!
}
if(k==3)
{
if(c==0)c=10;c--;
write_com(0xc3);delay(5);write_data(0x30+c);
}
while(!jianshao);
}
}
if(queding==0)
{
delay(10);
if(queding==0)
{
write_com(0xc4);
while(!queding);
指导教师意见
签名: 年 月 日
}
if(k==2)
{
b++;if(b==10);b=0;
write_com(0xc2);delay(5);write_data(0x30+b);
}
if(k==3)
{
c++;if(c==10);c=0;
write_com(0xc3);delay(5);write_data(0x30+c);
}
while(!zengjia);
贵州大学实验报告
学院:电气工程学院 专业:测控技术与仪器 班级:测仪101
姓名
学号
实验组
实验时间
2013-12-10
指导教师
成绩
实验项目名称
按键控制液晶显示实验
实验目的
通过本实验的学习,使学生熟悉和掌握利用按键来控制液晶的显示;
实验要求
选修
实验原理及内容
实验内容:
采用按键和LCD1602进行电路设计,首先控制LCD显示一个小数,通过相应按键选择数字位的状态,并控制该位增加和减少。
1)设置键功能:
当第一次按下设置键时,选中小数最高位(左边第一位)并且该数字位闪烁。再次按下设置键时,选中位右移一位。当选中小数最低位(右边第一位)后,再次按下设置键时,返回,选中位返回小数最高位。
2)增加键,减少键功能:
当设置键选中需要修改的数字位后,可通过增加或减少功能按键对数值进行相应的加1或减1。当增加到9时,返回0;或者较少到0时,返回9。
实验原理:
1. 在实验三的基础上,首先在LCD1602的屏幕中显示一个小数。增加四个按键,分别实现设置、增加、减少和确定的功能。实验参考电路图如图1所示。
LCD1602寄存器选择信号RS和AT89C51的P2.0相连,高电平时选择数据寄存器,低电平时选择指令寄存器。读写信号RW和AT89C51的P2.1相连,使能端E和AT89C51的P2.2相连。四个按键分别接到AT89C51的P3.4~P3.7引脚,AT89C51的P0作为数据和指令的输出口。
write_com(0xc3);
delay(500);
}
}
}
void main()
{
in();
write_com(0xc0);
for(num1=0;num1<4;num1++)
{
write_data(table1[num1]);
delay(5);
}
do
{
keyscan();
delay(5);
keyscan1();
sbit queding=P3^7;
uint k;
uchar num,num1,a,b,c;
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void write_com(uchar com)
{
lcdrw=0;
lcdrs=0;
P0=com;
delay(5);
lcde=0;
delay(5);
lcde=1;
}
void write_data(uchar date)
{
lcdrs=1;
lcdrw=0;
P0=date;
delay(5);
lcde=0;
delay(5);
lcde=1;
lcdrs=0;
}
void in()
{
lcde=0;