1、51 单片机(四位数码管的显示)程序基于单片机 V1 或 V2 实验系统,编写一个程序,实现以下功能: 1)首先在数码管上显示 “P_ _ _ ”4个字符; 2)等待按键,如按了任何一个键,则将这 4 个字符清除,改为显示 “0000”4个字符(为数字的0)。最佳答案下面这个程序是 4x4 距阵键盘 ,LED 数码管显示,一共可以到 0-F 显示,你可以稍微改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你!#includeunsigned char codeDig=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83
2、,0xc6,0xa1,0x86,0x8e;/gongyang 数码管0-F 代码unsigned char k;/ 设置全局变量 k 为键盘的键值/*键盘延时函数 */void key_delay(void)/延时函数int t;for(t=0;t500;t+);/*键盘扫描函数 */void keyscan(void)/ 键盘扫描函数unsigned char a;P2 = 0xf0;/键盘初始化if(P2!=0xf0)/有键按下?key_delay();/ 延时if(P2!=0xf0)/确认真的有键按下?P2 = 0xfe;/使行线 P2.4 为低电平,其余行为高电平key_delay()
3、;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;1 / 3default:P2 = 0xfb; /使行线 P2.6 为低电平,其余行
4、为高电平 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)key
5、scan();/ 调用键盘扫描函数switch(k)/查找按键对应的数码管显示代码case 0:P0=Dig0;break;case 1:P0=Dig1;break;case 2:P0=Dig2;break;case 3:P0=Dig3;break;case 4:P0=Dig4;break;case 5:P0=Dig5;break;case 6:P0=Dig6;break;case 7:P0=Dig7;break;case 8:P0=Dig8;break;case 9:P0=Dig9;break;case 10:P0=Dig10;break;case 11:P0=Dig11;break;2 / 3case 12:P0=Dig12;break;case 13:P0=Dig13;break;case 14:P0=Dig14;break;case 15:P0=Dig15;break;default:break;/退出/*end*/3 / 3