51单片机(四位数码管的显示)程序

  • 格式:doc
  • 大小:37.50 KB
  • 文档页数:3

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机(四位数码管的显示)程序

基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管上显示“P_ _ _”4个字符;2)等待按键,如按了任何一个键,则将这4个字符清除,改为显示“0000”4个字符(为数字的0)。

最佳答案

下面这个程序是4x4距阵键盘,LED数码管显示,一共可以到0-F显示,你可以稍微改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你!

#include

unsigned char code

Dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1 ,0x86,0x8e}; //gongyang数码管0-F 代码

unsigned char k; //设置全局变量k 为键盘的键值

/************************************键盘延时函数****************************/

void key_delay(void) //延时函数

{

int t;

for(t=0;t<500;t++);

}

/************************************键盘扫描函数******************************/

void keyscan(void) //键盘扫描函数

{

unsigned char a;

P2 = 0xf0; //键盘初始化

if(P2!=0xf0) //有键按下?

{

key_delay(); //延时

if(P2!=0xf0) //确认真的有键按下?

{

P2 = 0xfe; //使行线P2.4为低电平,其余行为高电平

key_delay();

a = P2; //a作为缓存

switch (a) //开始执行行列扫描

{

case 0xee:k=15;break;

case 0xde:k=11;break;

case 0xbe:k=7;break;

case 0x7e:k=3;break;

default:P2 = 0xfd; //使行线P2.5为低电平,其余行为高电平

a = P2;

switch (a)

{

case 0xed:k=14;break;

case 0xdd:k=10;break;

case 0xbd:k=6;break;

case 0x7d:k=2;break;

default:P2 = 0xfb; //使行线P2.6为低电平,其余行为高电平

a = P2;

switch (a)

{

case 0xeb:k=13;break;

case 0xdb:k=9;break;

case 0xbb:k=5;break;

case 0x7b:k=1;break;

default:P2 = 0xf7; //使行线P2.7为低电平,其余行为高电平

a = P2;

switch (a)

{

case 0xe7:k=12;break;

case 0xd7:k=8;break;

case 0xb7:k=4;break;

case 0x77:k=0;break;

default:break;

}

}

}

break;

}

}

}

}

/****************************** ***主函数*************************************/ void main(void)

{

while(1)

{

keyscan(); //调用键盘扫描函数

switch(k) //查找按键对应的数码管显示代码

{

case 0:P0=Dig[0];break;

case 1:P0=Dig[1];break;

case 2:P0=Dig[2];break;

case 3:P0=Dig[3];break;

case 4:P0=Dig[4];break;

case 5:P0=Dig[5];break;

case 6:P0=Dig[6];break;

case 7:P0=Dig[7];break;

case 8:P0=Dig[8];break;

case 9:P0=Dig[9];break;

case 10:P0=Dig[10];break;

case 11:P0=Dig[11];break;

case 12:P0=Dig[12];break;

case 13:P0=Dig[13];break;

case 14:P0=Dig[14];break;

case 15:P0=Dig[15];break;

default:break; //退出

}

}

}

/**********************************end***************************************/