问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求单片机实现4×4键盘输入,并用LCD1602显示键盘输入的数字的程序,

发布网友 发布时间:2022-04-26 23:34

我来回答

1个回答

热心网友 时间:2022-06-20 05:15

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define DD P0
sbit Rs=P0^0;
sbit Rw=P0^1;
sbit E=P0^2;

uchar key_led;
unsigned char code disp_code[]={"0123456789abcdef"};

unsigned char code key_code[]={
0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 };//注意这里你自己看下你电路是怎么连得,对应改一下表单里的值

/*******************************************************************/
/*

*/
/* 延时子程序

*/
/*

*/
/*******************************************************************/

void delay(int ms)
{
int i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

void delay_1ms(unsigned char i) //最小延时1ms
{ unsigned char j;
while(i--)
for(j=0;j<125; j++);
}
void delay_10ns(unsigned char i) //最小延时10ns
{
unsigned char j;
while(i--)
for(j=0;j<10; j++);
}

void write_com(unsigned char com,bit p) //写指令
{if(p)

delay_10ns(5);
E=0;
Rs=0;
Rw=0;
DD=com;
delay_10ns(50); //>40ns
E=1;
delay_1ms(2); //>150ns
E=0;
delay_10ns(4); //>25+10ns
}
void write_date(unsigned char DATA) //写数据
{

delay_10ns(50);
E=0;
Rs=1;
Rw=0;
DD=DATA;
delay_10ns(50);
E=1;

delay_10ns(50);
E=0;
delay_10ns(4);
}
void addr_x_y(unsigned char x,bit y) //写坐标,定位置

{
unsigned char temp=0x80;
if(y)
{
temp|=0x40;
}
temp|=x;
write_com(temp,0);
}
void desplay_char(unsigned char x,bit y,unsigned char p)

//在指定位置显示一个字符。
{
addr_x_y(x,y);
write_date(p);
}
void lcd_init(void)
{
delay_1ms(15);
write_com(0x38,0);
delay_1ms(5);
write_com(0x38,0);
delay_1ms(5);
write_com(0x38,0);
delay_1ms(5);
write_com(0x38,1);
write_com(0x08,1);
write_com(0x01,1);
write_com(0x06,1);
write_com(0x0c,1);
}

/**********************************************************

键盘扫描子函数

**********************************************************/
uchar keyscan()
{
uchar scan1,scan2,keycode,j;

P1=0xf0;
scan1=P1;
if((scan1&0xf0)!=0xf0) //判键是否按下
{
delay(30); //延时30ms
scan1=P1;
if((scan1&0xf0)!=0xf0) //二次判键是否按下
{
P1=0x0f;
scan2=P1;
keycode=scan1|scan2; //组合成键编码

for(j=0;j<=15;j++)
{
if(keycode== key_code[j]) //查表得键值
{
delay(30);
key_led=j;

}
}
}
}

else return(16) ;

}

/**********************************************************

判键是否按下子函数

**********************************************************/
void keydown()
{
P1=0xf0;
if((P1&0xf0)!=0xf0)
{

keyscan();

}
}

/*******************************************************************/
/*

*/
/* 主程序

*/
/*

*/
/*******************************************************************/

void main(void)
{

lcd_init(); // 初始化LCD
key_led=16;
while(1)
{
keydown();

desplay_char(0,0,disp_code[key_led]);

}

}追问仿真不出啊,不知道怎么回事儿。再给我看看呗,真的很着急!

追答显示部分程序应该是没有问题的,你看下你的键盘扫描部分,我仔细看了下你的电路,扫描部分跟我的硬件不一样,我的上拉接在高四位,你对应改一下就行了

求单片机实现4×4键盘输入,并用LCD1602显示键盘输入的数字的程序,

include &lt;reg52.h&gt; include &lt;intrins.h&gt; define uchar unsigned char define uint unsigned int define DD P0 sbit Rs=P0^0;sbit Rw=P0^1;sbit E=P0^2;uchar key_led;unsigned char code disp_code[]={"0123456789abcdef"};unsigned char code key_code[]={ 0xee,0xde,0xbe,0x7e,0xe...

单片机原理及应用

《单片机原理及应用》是2010年9月由电子工业出版社出版的图书,作者是张友渔。本书系统全面地介绍了80C51单片机的基本原理、硬件结构、指令系统,并从应用的角度介绍了汇编语言程序设计、单片机外部电路的扩展,以及与键盘、LED显示、LCD显示、打印机等多种硬件接口的设计方法,详细介绍了串行、并行接口的A/D、D/A转换器功能特点和典型应用,增加了单片机应用系统设计、Proteus仿真、实验和课程设计等内容。本书主要特点:1. 系统全面地介绍了80C51单片机的基本原理、硬件结构、指令系统。2. 从应用的角度介绍了汇编语言程序设计、单片机外部电路的…意法半导体单片机产品线拥有业界宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向,同时兼具一流的市场竞争力。STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G...

求单片机实现4×4键盘输入,并用LCD1602显示键盘输入的数字的程序

因为4×4的键盘在输入的过程中单片机可以直接利用ipl C去进行输入。

...用单片机和4*4矩阵键盘输入数字并在LCD1602上显示出来的C语言程序...

名称 : Delay_1ms()功能 : 延时子程序,延时时间为 1ms * x 输入 : x (延时一毫秒的个数)输出 : 无 / void Delay_1ms(uint i)//1ms延时 { uchar x,j;for(j=0;j&lt;i;j++)for(x=0;x&lt;=148;x++);} / 名称 : delay()功能 : 延时,延时时间大概为5US。输入 : 无 输出 : 无 ...

求于用单片机和4*4矩阵键盘输入数字计数并在LCD1602上显示出来的C语言...

这是一个以前写的矩阵键盘程序,显示在数码管上的。你该改就可以了 include&lt;reg52.h&gt; define uchar unsigned char define uint unsigned int sbit dula=P2^6;sbit wela=P2^7;uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0...

...用基于51单片机LCD1602显示的简易计算器的程序,4*4矩阵键盘,只要求+...

可以在proteus下仿真的啊 主要是矩阵控制 可以交流

51单片机lcd1602如何显示数字变量

1602是可以显示字符的,如'1','2'等,可以设置一个字符串,如char AA[]={'0123456789'} 那么设置一个变量i, AA[i]就行了,

给个单片机液晶1602显示汉字的程序,谢谢

51单片机对lcd1602一些基础程序 include &lt;intrins.h&gt; define dataport P1 sbit RS=P2^ 6;sbit RW=P2^5;sbit EN=P2^4;//=== //=== void waitfor() //检测忙信号函数 { dataport=0xff;RS=0;RW=1;_nop_(); //选择指令寄存器 读操作 EN=1;_nop_(); //使能操作 while(data...

...键盘输入数字,并在LCD1602上显示出来的C语言程序

E_SET()PB|=1&lt;&lt;2#define LCD1602_E_RST()PB&amp;=~(1&lt;&lt;2)static void Delay_ms(unsigned char time){unsigned char i;while(time--){for(i=0;i&lt;100;i++);}}static void LCD1602_WriteByte(unsigned char value,bit dataTypedef){if(dataTypedef)LCD1602_RS_SET();elseLCD1602_RS_...

...按键四个可以设置温湿度的上下限,显示用lcd1602,超限报警

求单片机程序关于温湿度。传感器采用DHT11,按键四个可以设置温湿度的上下限,显示用lcd1602,超限报警 50  我来答 1个回答 #热议# 直播| 一起见证OPPO Reno7系列正式亮相!pcdian 2013-09-15 · 知道合伙人IT服务行家 pcdian 知道合伙人IT服务行家 采纳数:1493 获赞数:2860 向TA提问 私信TA 关注 ...

跪求:液晶LCD1602显示时钟的C程序!

void write_dat(uchar dat) //1602液晶写数据程序{rs=1;P1=dat;e=0;delay(5);e=1;delay(5);e=0;delay(5);}void write_sfm(uchar add,uchar dat) //写时分秒的程序{uchar sh,g;sh=dat/10;g=dat%10;write_com(0x80+0x40+add);write_dat(0x30+sh); //1602字符手册里的数字对应的编码值...

单片机1602lcd显示程序 单片机lcd1602显示实验 51单片机lcd1602程序 51单片机1602液晶显示 51单片机在1602上显示 单片机lcd1602液晶显示 单片机lcd1602定时程序 51单片机游戏代码LCD1602 单片机lcd1602过程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
夫妻之间有救助义务吗法律上该如何规定 婚姻法中规定了夫妻之间的扶养义务吗 烘培西点有什么常用方法? 常见的西点制作方法有哪些? 电池电量没用完就冲电,电池会坏掉吗? mp3充久了电会充坏吗? 佛山西到昆明南的D3842途经哪些站,佛山去昆明旅游攻略路线 自贡檀木林小学育人方针 显示的是请输入正确的联通手机号 心肺复苏具体操作步骤心肺复苏心脏按压点 51单片机编写lcd1602显示程序,第一行显示自己的姓名,第二行显示学号 为什么lcd1602显示器显示数字要加0x30?求高手! 做单片机矩阵按键实验时,我想输入5个数字然后通过LCD1602显示出来,但是为什么没次显示的是一样的。求明 单片机 LCD1602 C语言小数怎么表示 如何让LCD1602屏显示的数字闪烁? 若LCD1602显示的字符大于32,应如何操作 51单片机的lcd1602如何显示变化的数字? 51单片机lcd1602如何显示数字变量 LCD1602如何显示变化的数字或字符? 如何选择成都JAVA培训学校? 仓储合同双方的权利义务? 觉得自己活得好累 感觉自己很累? 我总觉得心好累怎么办? 感觉自己的生活过得好累好累,怎么办? 汤怎么做好吃,粉条白菜汤的家常做法 我累了,我真的累了,写一句话 干白菜开汤怎么做好吃 好累啊,自己? 白菜煮面疙瘩汤的做法,白菜煮面疙瘩汤怎么做 如何把自己私家车租出去? 请问如何使用LCD1602与51单片机和外接简易键盘实现退格删除和数字的写入? 私家车如何出租? 我问一下关于LCD1602 能否显示倒置的数字或者字符,比如如图数字3和5 私家车出北京需要什么证明? 我是个单片机新手,我想问一下如何在lcd1602上显示中文, 4x4矩阵键盘输入,通过lcd1602显示怎么才能显示两位数的? 现在私家车可以出上海吗? 怎样出租我自己的私家车 如何在LCD1602中显示一个变量的数值 闲置私家车怎样出租? LCD1602怎么显示中文啊 私家车如何出租 自己的私家车怎么出租 跑私家车怎么找客源? 如何在网上出租私家车? 私家车怎么出租出去?l 大数据分析技术的发展趋势怎么样啊?看好吗? 这个大手指玩具 是什么东西呀。 找指尖溜溜球厂家