本章节利用Keil uVision5和ISIS 7 Professional两个软件来进行仿真实验。
【例】如图所示,共阳极数码管段码端接单片机P0口,P1.0引脚接一个按键,开始时数码管显示“0”,每按下一次按键,数码管显示的数字加1,加到“10”回“0”。
C51程序如下:
#include <reg51.h> #define uchar unsigned char sbit S1=P1^0; uchar code seg[]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void delayms(uchar ms) { uchar i; while(ms--) for(i=0;i<123;i++); } uchar key_scan(void) { static kp=0; if((P1&0x01)!=0x01) { delayms(10); if(((P1&0x01)!=0x01)&&(kp==0)) { kp=1; return 1; } } else kp=0; return 0; } void main(void) { uchar key_val; uchar num=0; while(1) { key_val=key_scan(); if(key_val==1) { if(++num==10)num=0; } P0=seg[num]; } }
51单片机与LED数码管的静态显示接口案例分析的仿真截图: