本章目录本章目录6.1DG128键盘技术概述6.2HCS12C语言键盘模块编程实例6.3数码管编程实例6.4LCD技术概述6.5点阵字符型LCD的接口特性6.6点阵字符型LCD编程实例6.1DG1286.1DG128键盘技术概述键盘技术概述6.1.1键盘模型及接口键盘模型(通、断)GND(0)+5V(1)t键按下开关打开开关打开开关闭合开始时的回弹结束时的回弹+5V到微处理器输入端口开关R6.1DG1286.1DG128键盘技术概述键盘技术概述6.1.1键盘模型及接口键盘接口:独立式键盘、矩阵式键盘+5VGND+5V行线列线6.1DG1286.1DG128键盘技术概述键盘技术概述6.1.2键盘的基本问题键的识别抖动问题重键问题5k×4列线n1n2n3n4行线m1m2m3m4+5V6.26.2HCS12CHCS12C语言键盘模块编程实例语言键盘模块编程实例•键值计算方法(以符号“1”为例)VDDMCU内部上拉电阻PTA0PTA1PTA2PTA3PTA7PTA6PTA5PTA4列线n1n2n3n4行线m1m2m3m4123A456B789C*0#D输出输出输入输入76543210PTA口01110111键值=$EE123A456B7*809#CD6.26.2HCS12CHCS12C语言键盘模块编程实例语言键盘模块编程实例6.2.1键盘函数定义头函数(KB.h)//键盘扫描识别寄存器及标志位定义#defineKB_PPTH//键盘接在PTH口上#defineKB_DDDRH//相应的方向寄存器#defineKB_PEPERH//相应的上拉下拉电阻允许寄存器#defineKB_PSPPSH//相应的极性选择寄存器#defineKB_IEPIEH//相应的中断允许寄存器#defineKB_IFPIFH//相应的中断标志寄存器///键盘扫描识别函数声明voidKB_Init(void);//键盘初始化INT8UKB_Scan1(void);//扫描读取键值INT8UKB_Def(INT8UKB_valve);//键值转为定义值INT8UKB_ScanN(INT8UKB_count);//多次扫描键盘6.26.2HCS12CHCS12C语言键盘模块编程实例语言键盘模块编程实例6.2.2键盘函数定义(KB.c)键盘初始化的函数voidKB_Init(void)扫描一次读取键值的函数INT8UKB_Scan1(void)扫描KB_count次读取键值的函数INT8UKB_ScanN(INT8UKB_count)将键值KB_valve转为定义值的函数INT8UKB_Def(INT8UKB_valve)6.26.2HCS12CHCS12C语言键盘模块编程实例语言键盘模块编程实例6.2.3测试工程的主函数(main.c)1.禁止总中断2.芯片初始化3.SCI模块初始化4.键盘初始化4.开放键盘中断5.开放总中断1.禁止总中断2.芯片初始化3.SCI模块初始化4.键盘初始化4.开放键盘中断5.开放总中断空语句空语句6.36.3数码管编程实例数码管编程实例6.3.1扫描法LED显示编程原理8段数码管由8个发光二极管(LED)组成需有8位(即1个字节)数据来控制各个位段的亮灭abcdefgdp15SPH87SPL0(a)共阴极Gnd(b)共阳极Vccabcdefgdpagdfecbh6.36.3数码管编程实例数码管编程实例6.3.1扫描法LED显示编程原理CS3abcdefgdpCS2abcdefgdpCS1abcdefgdpCS0abcdefgdp位选线扫描法:CS0~CS3中只有一个为0。位选线扫描法:CS0~CS3中只有一个为0。6.36.3数码管编程实例数码管编程实例6.3.2接口实例CS2CS1agdfecbhabfCS0PTC3PTB6PTB2PTB7PTB3PTB41KΩ1KΩ1KΩ1KΩgchde654321CS3121110987PTB1PTC2PTC1PTB5PTB0PTC0agdfecbhagdfecbhagdfecbhB口:控制8个位段(a~h)C口:低四位控制数码管的位选信号(CS0~CS3)6.36.3数码管编程实例数码管编程实例6.3.3数码管HCS12C语言实例1.LED函数定义头文件(LED.h)2.LED函数定义文件(LED.c)4连排LED初始化函数voidLEDInit(void)在4连排LED上显示以Buf为首地址的4个数据voidLEDShow(INT8U*Buf)在第i个LED上显示数字cvoidLEDShow1(INT8Ui,INT8Uc)6.36.3数码管编程实例数码管编程实例agdfecbh显示码表constINT8UDtable[10]=//0123456789{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};“以0”为例:hgfedcba001111110x3F0x3F6.36.3数码管编程实例数码管编程实例片选表constINT8UCStable[4]=//0123{0x7F,0xBF,0xDF,0xEF};76543210CS0CS1CS2CS31111PTH7~PTH0PTH7~PTH06.36.3数码管编程实例数码管编程实例6.3.3数码管HCS12C语言实例3.测试工程的主函数(main.c)第1步:禁止总中断第2步:芯片初始化第3步:SCI模块初始化、LED控制引脚初始化第4步:LED初始显示“0123”第5步:开放SCI接收中断第6步:开放总中断第7步:若正确收到数据,刷新显示缓冲区第8步:转第7步硬件连接agdfecbhagdfecbhagdfecbhagdfecbh显示PC机传来的4...