关于单片机按键编程的问题~~其中p1口接矩阵按键。

关于单片机按键编程的问题~~其中p1口接矩阵按键。,第1张

,开发板上应该要有流水灯,矩阵键盘,数码管或者液晶,以及一些传感器,这些基本的东西,学习使用它们,能使你快速上手。51单片机,一般都在10RMB以下,开发板不是只看单片机的价格,外接的元器件,有的也很耗RMB啊!比如接个12864液晶,现在大概50RMB左右。如果你想省钱,那就让别人给你搭个电路,去买些电子元件,个把小时就能搞定,然后基本就是每天实验,有什么不会了,在看书,查资料。但我建议还是买个开发板,不要功能太多,只要有那些普通的东西就行,因为自己搭的电路,对于硬件上的问题,有时候会使你很头疼。学单片机,你至少手头得有一个块开发板,这是必须的,没有硬件,想学好单片机,就是空谈。看不看视频教程并不重要,重要的你要先弄懂,用什么下程序(软件和硬件),给你一段程序,你能不能正确的把它下进单片机,编程的软件怎么使用。有了这基本的东西,就开始写最简单的C程序,当程序down进去,看不到现象,那就开始找错误,然后在改,这样反复进行,慢慢的你就会喜欢上单片机的。个人的经验,我学单片机的时候也没看过视频,看理论方面的书籍,最多也不超过5天。

……

main()

{

uchar m;

P0 = 0xFF;

P1 = 0xFF;

delay(10);

lcd_init();

lcd_pos(0);

m = 0;

while(cdis1[m]!='\0' ) {

lcd_wdat(cdis1[m]);

m++;

} //执行上面这些,液晶屏,显示什么没有?

while(1);

}

这个你看看可以参考!

#include<reg51h>

#include<intrinsh>

#define uint unsigned int

#define uchar unsigned char

uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09};

//这三个引脚参考资料

sbit E=P2^7; //1602使能引脚

sbit RW=P2^6; //1602读写引脚

sbit RS=P2^5; //1602数据/命令选择引脚

/

名称 : Delay_1ms()

功能 : 延时子程序,延时时间为 1ms x

输入 : x (延时一毫秒的个数)

输出 : 无

/

void Delay_1ms(uint i)//1ms延时

{

uchar x,j;

for(j=0;j<i;j++)

for(x=0;x<=148;x++);

}

/

名称 : delay()

功能 : 延时,延时时间大概为5US。

输入 : 无

输出 : 无

/

void delay()

{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}

/

名称 : bit Busy(void)

功能 : 这个是一个读状态函数,读出函数是否处在忙状态

输入 : 输入的命令值

输出 : 无

/

bit Busy(void)

{

bit busy_flag = 0;

RS = 0;

RW = 1;

E = 1;

delay();

busy_flag = (bit)(P0 & 0x80);

E = 0;

return busy_flag;

}

/

名称 : wcmd(uchar del)

功能 : 1602命令函数

输入 : 输入的命令值

输出 : 无

/

void wcmd(uchar del)

{

while(Busy());

RS = 0;

RW = 0;

E = 0;

delay();

P0 = del;

delay();

E = 1;

delay();

E = 0;

}

/

名称 : wdata(uchar del)

功能 : 1602写数据函数

输入 : 需要写入1602的数据

输出 : 无

/

void wdata(uchar del)

{

while(Busy());

RS = 1;

RW = 0;

E = 0;

delay();

P0 = del;

delay();

E = 1;

delay();

E = 0;

}

/

名称 : L1602_init()

功能 : 1602初始化,请参考1602的资料

输入 : 无

输出 : 无

/

void L1602_init(void)

{

wcmd(0x38);

wcmd(0x0c);

wcmd(0x06);

wcmd(0x01);

}

/

名称 : L1602_char(uchar hang,uchar lie,char sign)

功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下

L1602_char(1,5,'b')

输入 : 行,列,需要输入1602的数据

输出 : 无

/

void L1602_char(uchar hang,uchar lie,char sign)

{

uchar a;

if(hang == 1) a = 0x80;

if(hang == 2) a = 0xc0;

a = a + lie - 1;

wcmd(a);

wdata(sign);

}

/

名称 : L1602_string(uchar hang,uchar lie,uchar p)

功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下

L1602_string(1,5,"ab cd ef;")

输入 : 行,列,需要输入1602的数据

输出 : 无

/

void L1602_string(uchar hang,uchar lie,uchar p)

{

uchar a,b=0;

if(hang == 1) a = 0x80;

if(hang == 2) a = 0xc0;

a = a + lie - 1;

while(1)

{

wcmd(a++);

b++;

if((p == '\0')||(b==16)) break;

wdata(p);

p++;

}

}

/

名称 : Keyscan()

功能 : 实现按键的读取。下面这个子程序是按处理 矩阵键盘 的基本方法处理的。

输入 : 无

输出 : 按键值

/

uchar Keyscan(void)

{

uchar i,j, temp, Buffer[4] = {0xfe, 0xfd, 0xfb, 0xf7};

for(j=0; j<4; j++)

{

P1 = Buffer[j];

temp = 0x10;

for(i=0; i<4; i++)

{

if(!(P1 & temp))

{

return (i+j4);

}

temp <<= 1;

}

}

}

/

名称 : Main()

功能 : 主函数

输入 : 无

输出 : 无

/

void Main(void)

{

uchar Key_Value; //读出的键值

L1602_init();

L1602_string(1,1," 44 KeyBoard ");

L1602_string(2,1,"You Press The ");

while(1)

{

P1 = 0xf0;

if(P1 != 0xf0)

{

Delay_1ms(20); //按键消抖

if(P1 != 0xf0)

{

Delay_1ms(20); //按键消抖

if(P1 != 0xf0)

{

Key_Value = Keyscan();

}

}

}

L1602_char(2,15,Key_Value / 10 + 48);

L1602_char(2,16,Key_Value % 10 + 48);

}

}

这本书一共5章节,你说第三部分指的哪里?

第五章才是综合设计部分啊,而且这部分有好多例程,也不知道你要哪部分?

第1章 8051单片机C语言程序设计概述 1

11 8051单片机引脚 1

12 数据与程序内存 5

13 特殊功能寄存器 6

14 外部中断、定时器/计数器及串口应用 8

15 有符号与无符号数应用、数位分解、位 *** 作 9

16 变量、存储类型与存储模式 11

17 关于C语言运算符的优先级 13

18 字符编码 15

19 数组、字符串与指针 16

110 流程控制 18

111 可重入函数和中断函数 19

112 C语言在单片机系统开发中的优势 20

第2章 Proteus *** 作基础 21

21 Proteus *** 作界面简介 21

22 仿真电路原理图设计 22

23 元件选择 25

24 调试仿真 29

25 Proteus与Vision 3的联合调试 29

26 Proteus在8051单片机应用系统开发的优势 30

第3章 基础程序设计 32

31 闪烁的LED 32

32 双向来回的流水灯 34

33 花样流水灯 36

34 LED模拟交通灯 38

35 分立式数码管循环显示0~9 40

36 集成式数码管动态扫描显示 41

37 按键调节数码管闪烁增减显示 44

38 数码管显示4×4键盘矩阵按键 46

39 普通开关与拨码开关应用 49

310 继电器及双向可控硅控制照明设备 51

311 INT0中断计数 53

312 INT0及INT1中断计数 55

313 TIMER0控制单只LED闪烁 58

314 TIMER0控制数码管动态管显示 62

315 TIMER0控制8×8LED点阵屏显示数字 65

316 TIMER0控制门铃声音输出 68

317 定时器控制交通指示灯 70

318 TIMER1控制音阶演奏 72

319 TIMER0、TIMER1及TIMER2实现外部信号计数与显示 75

320 TIMER0、TIMER1及INT0控制报警器与旋转灯 77

321 按键控制定时器选播多段音乐 79

322 键控看门狗 82

323 双机串口双向通信 84

324 PC与单片机双向通信 90

325 单片机内置EEPROM读/写测试 95

第4章 硬件应用 99

41 74HC138译码器与反向缓冲器控制数码管显示 100

42 串入并出芯片74HC595控制数码管显示四位数字 103

43 用74HC164驱动多只数码管显示 106

44 并串转换器74HC165应用 110

45 用74HC148扩展中断 112

46 串口发送数据到2片8×8点阵屏滚动显示 115

47 数码管BCD解码驱动器CD4511与DM7447应用 117

48 62256RAM扩展内存 119

49 用8255实现接口扩展 121

410 可编程接口芯片8155应用 124

411 串行共阴显示驱动器控制4+2+2集成式数码管显示 129

412 14段与16段数码管演示 133

413 16键解码芯片74C922应用 136

414 1602字符液晶工作于8位模式直接驱动显示 139

415 1602液晶显示DS1302实时时钟 148

416 1602液晶屏工作于8位模式由74LS373控制显示 153

417 1602液晶屏工作于4位模式实时显示当前时间 155

418 1602液晶屏显示DS12887实时时钟 159

419 时钟日历芯片PCF8583应用 167

420 2×20串行字符液晶屏显示 174

421 LGM12864液晶屏显示程序 177

422 TG126410液晶屏串行模式显示 184

423 Nokia7110液晶屏菜单控制程序 192

424 T6963C液晶屏图文演示 199

425 ADC0832 A/D转换与LCD显示 211

426 用DAC0832生成锯齿波 215

427 ADC0808 PWM实验 217

428 ADC0809 A/D转换与显示 220

429 用DAC0808实现数字调压 221

430 16位A/D转换芯片LTC1864应用 223

431 I2C接口存储器AT24C04读/写与显示 225

432 I2C存储器设计的中文硬件字库应用 233

433 I2C接口4通道A/D与单通道D/A转换器PCF8591应用 237

434 I2C接口DS1621温度传感器测试 241

435 用兼容I2C接口的MAX6953驱动4片5×7点阵显示器 246

436 用I2C接口控制MAX6955驱动16段数码管显示 250

437 I2C接口数字电位器AD5242应用 254

438 SPI接口存储器AT25F1024读/写与显示 257

439 SPI接口温度传感器TC72应用测试 264

440 温度传感器LM35全量程应用测试 268

441 SHT75温湿度传感器测试 272

442 直流电机正、反转及PWM调速控制 278

443 正反转可控的步进电机 281

444 ULN2803驱动点阵屏仿电梯数字滚动显示 284

445 液晶显示MPX4250压力值 286

446 12864LCD显示24C08保存的开机画面 289

447 用M145026与M145027设计的无线收发系统 293

448 DS18B20温度传感器测试 296

449 1-Wire式可寻址开关DS2405应用测试 303

450 MMC存储卡测试 307

第5章 综合设计 316

51 带日历时钟及温度显示的电子万年历 316

52 用8051+1601LCD设计的整型计算器 321

53 电子秤仿真设计 328

54 1602液晶屏显示仿手机键盘按键字符 332

55 用24C04与1602液晶屏设计的简易加密电子锁 336

56 1-Wire总线器件ROM搜索与多点温度监测 341

57 高仿真数码管电子钟设计 356

58 用DS1302与12864LCD设计的可调式中文电子日历 360

59 用T6963C液晶屏设计的指针式电子钟 366

510 T6963C液晶屏中文显示温度与时间 370

511 T6963C液晶屏曲线显示ADC0832两路A/D转换结果 372

512 温度控制直流电机转速 374

513 用74LS595与74LS154设计的16×16点阵屏 377

514 用8255与74LS154设计的16×16点阵屏 379

515 红外遥控收发仿真 381

516 GP2D12红外测距传感器应用 388

517 三端可调正稳压器LM317应用测试 395

518 数码管显示的K型热电偶温度计 399

519 交流电压检测与数字显示仿真 403

520 用MCP3421与RTD-PT100设计的铂电阻温度计 407

521 可接收串口信息的带中英文硬字库的80×16 LED点阵屏 414

522 模拟射击训练游戏 422

523 GPS仿真 427

524 温室监控系统仿真 431

525 基于Modbus总线的数据采集与开关控制系统设计仿真 437

建议你到脚本之家网站去搜索一下看看有没有这本书的电子档。

以上就是关于关于单片机按键编程的问题~~其中p1口接矩阵按键。全部的内容,包括:关于单片机按键编程的问题~~其中p1口接矩阵按键。、51单片机C语言编程矩阵式键盘LCD显示设计,程序没错,但在显示器上按键值不能显示,求各位大神指点指点、求 关于 用单片机和4*4矩阵键盘输入数字并在LCD1602上显示出来的C语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9730844.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存