按键盘数码管流动显示实验
2013-05-28 22:45
411 查看
要求:按下键盘,六个数码管流动显示按下的值。
连线:将片选CS0接到key_LED_CS上
连线:将片选CS0接到key_LED_CS上
#include <reg52.h> #define LEDLen 6 xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口 xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口 xdata unsigned char IN _at_ 0x8001; // 键盘读入口 unsigned char LEDBuf[LEDLen]; // 显示缓冲 code unsigned char LEDMAP[] = { // 八段管显示码 (点不显示,0-F) 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; code unsigned char KeyTable[] = { // 键码定义 0x16, 0x15, 0x14, 0xff, 0x13, 0x12, 0x11, 0x10, 0x0d, 0x0c, 0x0b, 0x0a, 0x0e, 0x03, 0x06, 0x09, 0x0f, 0x02, 0x05, 0x08, 0x00, 0x01, 0x04, 0x07 }; void Delay(unsigned char CNT) { unsigned char i; while (CNT-- !=0) for (i=100; i !=0; i--); } void DisplayLED() { unsigned char i; unsigned char Pos; unsigned char LED; Pos = 0x20; // 从左边开始显示 for (i = 0; i < LEDLen; i++) { OUTBIT = 0; // 关所有八段管 LED = LEDBuf[i]; OUTSEG = LED; OUTBIT = Pos; // 显示一位八段管 Delay(2); Pos >>= 1; // 显示下一位 } } unsigned char TestKey() { OUTBIT = 0; // 输出线置为0 return (~IN & 0x0f); // 读入键状态(高四位不用) } unsigned char GetKey() { unsigned char Pos; unsigned char i; unsigned char k; i = 6; Pos = 0x20; // 找出键所在列 do { OUTBIT = ~ Pos; Pos >>= 1; k = ~IN & 0x0f; } while ((--i != 0) && (k == 0)); // 键值 = 列 x 4 + 行 if (k != 0) { i *= 4; if (k & 2) i += 1; else if (k & 4) i += 2; else if (k & 8) i += 3; OUTBIT = 0; do Delay(10); while (TestKey()); // 等键释放 return(KeyTable[i]); // 取出键码 } else return(0xff); } void main() { unsigned int i=0; LEDBuf[0] = 0x00; //如果设置为3F那么最初第一个数码管显示为0 LEDBuf[1] = 0x00; LEDBuf[2] = 0x00; LEDBuf[3] = 0x00; LEDBuf[4] = 0x00; LEDBuf[5] = 0x00; while (1) { DisplayLED(); if (TestKey()) { LEDBuf[i++%6] = LEDMAP[GetKey() & 0x0f]; //LEDBuf[5]=LEDMP[GetKey()&0x0f]; } } }
相关文章推荐
- 按键盘数码管流动显示实验
- 按键盘数码管流动显示实验
- 按键盘数码管显示实验
- 微机原理实验 lab8000 键盘数码管显示测试
- 2*8键盘数码管显示实验
- 数字时钟(数码管显示/键盘可调)
- 51单片机STC89C52 矩阵键盘数码管显示
- MSP430学习笔记7-4*4键盘的对应数码管显示
- 4.2.第十个实验--检测键值并使用数码管显示
- 数码管显示矩阵键盘扫描程序
- 新手必看Micropython只四位数码管显示实验
- 使用黑金开发板做出的键盘边沿检测的用数码管显示的verilog hdl 程序
- 数码管流动显示(自己的单片机)
- 利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减 直至765398并保持此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动 ,当数码管上数减到停止时,实验板上流水灯出停止然后全部开始闪烁,3秒后(用 T0定时)流水灯全部关闭,数码管上显示出“HELLO”,到此保持住
- 实验1 单片机IO口应用及数码管显示
- [masm]实验二:从键盘输入数据并显示的实验
- 硬件实验2:数码管显示实验
- VHDL_3641BS四个7段数码管显示实验
- 单片机实验——电子表(数码管动态显示技术)
- 键盘输入的数字在串口调试助手显示,然后再到数码管(C语音版本)