资源描述:
《单片机学习总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、LED数码管显示单只数码管循环显示0~9/*名称:单只数码管循环显示0~9说明:主程序中的循环语句反复将0~9的段码送至P0口,使数字0~9循环显示*/#include#include#defineucharunsignedchar#defineuintunsignedint//段选ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//11000000(0)~10010000(9)~11111111(不显示)//延时voidDelay
2、MS(uintx){uchart;while(x--)for(t=0;t<120;t++);}//主程序voidmain(){uchari=0;P0=0x00;while(1){/*for(;i<11;i++){P0=~DSY_CODE[i];DelayMS(300);}//注:另一方案*/P0=~DSY_CODE[i];i=(i+1)%10;DelayMS(300);}}//段选ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//11000000(0)~10010000
3、(9)~11111111(不显示)//显示的时间间隔为300微秒8只数码管滚动显示单个数字/*名称:8只数码管滚动显示单个数字说明:数码管从左到右依次滚动显示0~7,程序通过每次仅循环选通一只数码管*/#include#include#defineucharunsignedchar#defineuintunsignedintucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//延时voidDelayMS(uintx){uchart;while(
4、x--)for(t=0;t<120;t++);}//主程序voidmain(){uchari,wei=0x80;while(1){for(i=0;i<8;i++){P2=0xff;//关闭显示wei=_crol_(wei,1);P0=DSY_CODE[i];//发送数字段码P2=wei;//发送位码DelayMS(300);}}}wei=0x80;wei=_crol_(wei,1);//crol是右移符号?????????P0=DSY_CODE[i];//发送数字段码P2=wei;//发送位码//显示的时间间隔为300微秒8只数码管滚动显示数字串电路如上图/*名称:8只数码管
5、滚动显示数字串说明:数码管向左滚动显示3个字符构成的数字串*/#include#include#defineucharunsignedchar#defineuintunsignedint//段码表ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//下面数组看作环形队列,显示从某个数开始的8个数(10表示黑屏)ucharNum[]={10,10,10,10,10,10,10,10,2,9,8};//延时8voidDelayMS(uin
6、tx){uchart;while(x--)for(t=0;t<120;t++);}//主程序voidmain(){uchari,j,k=0,m=0x80;while(1){//刷新若干次,保持一段时间的稳定显示for(i=0;i<15;i++){for(j=0;j<8;j++){//发送段码,采用环形取法,从第k个开始取第j个P0=0xff;P0=DSY_CODE[Num[(k+j)%11]];m=_crol_(m,1);P2=m;//发送位码DelayMS(2);}}k=(k+1)%11;//环形队列首支针k递增,Num下标范围0~10,故对11取余}}按键控制K1-K4控
7、制LED移位/*名称:K1-K4控制LED移位说明:按下K1时,P0口LED上移一位;按下K2时,P0口LED下移一位;按下K3时,P2口LED上移一位;按下K4时,P2口LED下移一位;*/#include#include#defineucharunsignedchar#defineuintunsignedint//延时voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}//根据P1口的按键移动LEDv