1、D5-D4 -D2-D1-D0,重复循环。#include#include #define uint unsigned int#define uchar unsigned charuint i;uchar temp;uint a8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;void delayms(uint ms) uint j; for(j=0;j0;i-) for(j=120;jj-); uint i; P1=0xff; delay(500);4;i+) P1=tablei; delay(500); for(i=3; P1=tablei-1; 任务四:
2、复杂广告灯的设计利用89c51单片机的端口实现8个LED(D0D7)复杂广告灯的控制,要求显示规律为:正向流水-反向流水-隔灯闪烁3次-高四盏、低四盏闪烁2次-隔两盏闪烁3次,再重复循环。 for(i=0;110; uint i,j,xx2=0xaa,0xff,yy2=0xf0,0x0f,zz2=0xb6,0xff; unsigned char aa; aa=0xfe;7; P0=aa; aa=_crol_(aa,1);8; aa=_cror_(aa,1);3;2;j+) P0=xxj; delayms(500); P0=yyj ; P0=zzj ;任务五:单个LED数码管显示设计使用89c5
3、1的P0口作为输出口,外接LED数码管,编写程序,使数码管循环显示从09的加1计数。 uchar table10= 0XC0,0XF9,0XA4,0XB0, 0X99,0X92,0X82,0XF8, 0X80,0X90;uint key=0;void int_int() EA=1; IT0=1; EX0=1;void count_num() interrupt 0 if(key=9)key=0; else key+; int_int(); P0=tablekey;任务六:多个LED数码管显示设计使用单片机P0和P2口作为输出口,外接一个8位LED数码管,编写程序,使数码管显示“872AF635
4、”。delay(ms) int i;main() uchar a16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; uchar b8=0x08,0x07,0x02,0x0a,0x0f,0x06,0x03,0x05,j; j=0x01; P2=j; P0=abi; j=_crol_(j,1); delay(3);任务七:查询式按键设计将8个按键从18进行编号,如果其中一个键被按下,则在LED数码管上显示相应的键值。 P0=0xff;=0xff) switch(P0) case 0x
5、fe: P2=a1; break; case 0xfd: P2=a2; case 0xfb: P2=a3; case 0xf7: P2=a4; case 0xef: P2=a5; case 0xdf: P2=a6; case 0xbf: P2=a7; case 0x7f: P2=a8;任务八:LED数码管显示矩阵键盘按键的设计设计一个4*4的矩阵键盘,以P1.0P1.3作为行线,以P1.4P1.7作为列线。要求:未按下按键时,LED数码管显示“-”,按下按键时,在数码管上显示相应的键值。uchar table17=0xbf,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
6、0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;uint num=0; uchar i,j;keyscan() uint temp; temp=P2; temp&=0x0f; if(temp=0x0e) P2=0xf0;=0xf0; switch(temp) case 0xe0:num=1;break; case 0xd0:num=2; case 0xb0:num=3; case 0x70:num=4; if(temp=0x0d)num=5;num=6;num=7;num=8; if(temp=0x0b)num=9;num=10;num=11;num=
7、12; if(temp=0x07)num=13;num=14;num=15;num=16; return num;void display(uint num) if(num=0) P0=0xbf; P0=tablenum ; uint temp; P2=0x0f; if(temp!=0x0f) keyscan(); display(num);(2)sbit LED1=P20;sbit LED2=P21;uchar num;uchar code LED_code= 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc
8、6,0xa1,0x86,0x8e;/数码管字形码编码/延时函数void display(uchar num) P0=LED_codenum;/数码管显示函数void keyscan()/键盘扫描函数 uchar temp; P1=0xfe;/key1-key4第一行按下 temp=P1;=0xf0) delay(10);/消除抖动 temp=P1; temp& if(temp! temp=P1; switch(temp) case 0xee: num=1; break; case 0xde: num=2; case 0xbe: num=3; case 0x7e: num=4; while(te
9、mp!=0xf0)/等待按键释放 temp& P1=0xfd;/key5-key8第二行按下 case 0xed: num=5; case 0xdd: num=6; case 0xbd: num=7; case 0x7d: num=8; P1=0xfb;/key9-key12第三行按下 case 0xeb: num=9; case 0xdb: num=10; case 0xbb: num=11; case 0x7b: num=12; P1=0xf7;/key13-key16第四行按下 case 0xe7: num=13; case 0xd7: num=14; case 0xb7: num=15
10、; case 0x77: num=16; keyscan(); if(num=0) P0=0xbf; else display(num-1);任务九:简单拨号键盘的设计使用4*4的矩阵式键盘及8位共阳极LED数码管设计一个简单拨号键盘,要求在初始状态时,8位数码管均显示“-”,每按下一个号码后,原8位LED数码管显示的内容向左移动1位。#define uint unsigned int uchar keycount=0,num;uchar code LED1_code=uchar LED2_duan8=0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf;/8段共阳数
11、码管编码uchar LED2_wei8= 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01; void display() uchar i; /P2=0x80; P2=LED2_weii; P0=LED2_duan7-i; delay(1);void keyscan() P3=0xfe; temp=P3; temp=P3; temp=P3; case 0xee:keycount+;num=0; case 0xde: case 0xbe: case 0x7e: P3=0xfd; case 0xed: case 0xdd: case 0xbd: case 0x7d: P3=0xfb; case 0xeb: case 0xdb: case 0xbb: case 0x7b: P3=0xf7; case 0xe7: case 0xd7: case 0xb7: case 0x77: display(); if(keycount!=0) for(i=0; LED2_duani=LED2_duani+1; LED2_duan7=LED1_codenum; keycount=0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1