好文档 - 专业文书写作范文服务资料分享网站

单片机C语言程序设计代码和仿真图

天下 分享 时间: 加入收藏 我要投稿 点赞

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

/* 名称:4X4矩阵键盘控制条形LED显示

说明:运行本例时,按下的按键值越大点亮的LED越多。 */

#include #include #define uchar unsigned char #define uint unsigned int //矩阵键盘按键特征码表

uchar code KeyCodeTable[]={0x11,0x12,0x14,0x18,0x21, 0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88}; //延时

void DelayMS(uint x) { uchar i;

while(x--) for(i=0;i<120;i++); } //键盘扫描 uchar Keys_Scan() {

uchar sCode,kCode,i,k;

36

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

//低4位置0,放入4行 P1=0xf0;

//若高4位出现0,则有键按下 if((P1&0xf0)!=0xf0) {

DelayMS(2); if((P1&0xf0)!=0xf0) {

sCode=0xfe; //行扫描码初值 for(k=0;k<4;k++) //对4行分别进行扫描 {

P1=sCode; if((P1&0xf0)!=0xf0) {

kCode=~P1;

for(i=0;i<16;i++) //查表得到按键序号并返回

if(kCode==KeyCodeTable[i]) return(i); } else

sCode=_crol_(sCode,1); }

37

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

} }

return(-1); } //主程序 void main() {

uchar i,P2_LED,P3_LED;

uchar KeyNo=-1; //按键序号,-1表示无按键 while(1) {

KeyNo=Keys_Scan(); //扫描键盘获取按键序号KeyNo

if(KeyNo!=-1) {

P2_LED=0xff; P3_LED=0xff;

for(i=0;i<=KeyNo;i++) //键值越大,点亮的LED越多 { if(i<8) P3_LED>>=1; else

38

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

P2_LED>>=1; }

P3=P3_LED; //点亮条形LED P2=P2_LED; } } }

17 数码管显示4X4矩阵键盘按键号

/* 名称:数码管显示4X4矩阵键盘按键号

说明:按下任意键时,数码管都会显示其键的序号,扫描程序首先判断按键发生在哪一列,然后根据所发生的行附加不同的值,从而得到按键的序号。 */

#include

#define uchar unsigned char #define uint unsigned int //段码 uchar

39

code

DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

8,0x80,0x90,

0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};

sbit BEEP=P3^7;

//上次按键和当前按键的序号,该矩阵中序号范围0~15,16表示无按键

uchar Pre_KeyNo=16,KeyNo=16; //延时

void DelayMS(uint x) { uchar i;

while(x--) for(i=0;i<120;i++); }

//矩阵键盘扫描 void Keys_Scan() {

uchar Tmp;

P1=0x0f; //高4位置0,放入4行 DelayMS(1);

Tmp=P1^0x0f;//按键后0f变成0000XXXX,X中一个为0,3个仍为1,通过异或把3个1变为0,唯一的0变为1

switch(Tmp) //判断按键发生于0~3列的哪一列 {

40

单片机C语言程序设计代码和仿真图

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例/*名称:4X4矩阵键盘控制条形LED显示说明:运行本例时,按下的按键值越大点亮的LED越多。*/#include#include#defineucharunsignedchar#define
推荐度:
点击下载文档文档为doc格式
9kxd01cs1i4uc568cqjj1x2cx44ea901aap
领取福利

微信扫码领取福利

微信扫码分享