您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页4乘4键盘与四位七段数码管的应用源程序、电路仿真图

4乘4键盘与四位七段数码管的应用源程序、电路仿真图

来源:飒榕旅游知识分享网


/* ch05-4-4.c - 4x4键盘与4个7节显示器实验, P1.4~7为共用扫描信号 */

/* P1.0~3为键盘输入值,P2为7节显示器直接输出 */

//==声明区================================================

#include // 定义8051暂存器之标头档

#define KEYP P2 // 扫瞄输出端口(高位元)及键盘输入端口(低位元)

#define SEG7P P0 // 7节显示器(g~a)输出埤

unsigned char code TAB[17]= // 共阳7节显示器(g~a)编码

{ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, // 数字0-4

0x92, 0x82, 0xf8, 0x80, 0x98, // 数字5-9

0xa0, 0x83, 0xa7, 0xa1, 0x84, // 字母a-e(10-14)

0x8e, 0xbf}; // 字母F(15),负号(-)

unsigned char disp[4]={ 0xbf, 0xbf, 0xbf, 0xbf }; // 显示阵列初值为负号(-)

unsigned char scan[4]={ 0xef, 0xdf ,0xbf ,0x7f }; // 7显示器及键盘之扫瞄码

void delay1ms(int); // 声明延迟函数

void scanner(void); // 声明扫瞄函数

//==主程序================================================

main() // 主程序开始

{ while(1) // 无穷回圈,程序一直跑

scanner(); // 扫瞄键盘及显示7段显示器

} // 主程序结束

// === 延迟函数,延迟约x*1ms ================================

void delay1ms(int x) // 防弹跳函数开始

{ int i,j; // 声明整数变数i

for(i=0;ifor(j=0;j<120;j++); // 计数120次,延迟约1ms

} // 防弹跳函数结束

// ======= 扫瞄4*4键盘及4个7节显示器函数 ================

void scanner(void) // 扫瞄函数开始

{ unsigned char col,row,dig; // 声明变数(col:行,row:列,dig:颢示位)

unsigned char rowkey,kcode; // 声明变数(rowkey:列键值,kcode:按键码)

for(col=0;col<4;col++) // for回圈,扫瞄第col行

{ KEYP = scan[col]; // 高4位输出扫瞄信号,低4位元输入列值

SEG7P = disp[col]; // 输出第col行数字

rowkey= ~KEYP & 0x0f;

// 读入KEYP低4位,反相再清除高4位求出列键值

if(rowkey != 0) // 若有按键

{ if(rowkey == 0x01) row=0; // 若第0列被按下

else if(rowkey == 0x02) row=1; // 若第1列被按下

else if(rowkey == 0x04) row=2; // 若第2列被按下

else if(rowkey == 0x08) row=3; // 若第3列被按下

kcode = 4 * col + row; // 算出按键之号码

for(dig = 0; dig < 3 ; dig++) // 显示阵列之左3字

disp[dig]=disp[dig+1]; disp[3]=TAB[kcode]; while(rowkey != 0) rowkey=~KEYP & 0x0f; } delay1ms(4); } } 电路仿真图:

// 将右侧编码左移1位

// 键值编码後,写入最右侧

// 当按钮未放开

// 再读入列键值

// if叙述(有按键时)结束

// 延迟4ms

// for回圈结束(扫瞄col行)

// 扫瞄函数scanner()结束

P00P01P02P03P04P05P06P07U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617Y0Y1Y2Y3A0A1A2A312345678A3A2A1A0RN1161514131211109RX8Y3P00P01P02P03P04P05P06P0718XTAL2A0A1A29RSTA3R110k293031PSENALEEAY2R210k12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51Y1R310kY0R410kX0X1X2U2:A1740423U2:B474045U2:C6740413U2:D127404R510kR610kR710kR810kA0A1A2A3X3

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务