资源描述:
《单片机实验及PROTEUS仿真_C语言.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、单片机实验:说明,以下是我整理了一些在学习单片机的过程中所做的一些典型的实验,所有程序均用C语言编写,为了方便,在仿真时电路能省的都被省掉了(比如省去晶振用了外部时钟)。程序不一定很优化,也不一定完全没有错误,仅供大家参考。希望大家一块学习!!!!第一:I/O操作篇实验一.闪烁的灯图:程序:#include"AT89X51.H"voiddelay02s();voidmain(void){while(1){P1_0=0;//P1.0=0led点亮delay02s();//延时0.2sP1_0=1;//P1.0=1led熄灭delay0
2、2s();//延时0.2s}}voiddelay02s(void)//延时0.2s的函数{unsignedchari,j,k;for(j=20;j>0;j--)for(i=20;i=0;i--)for(k=248;k=0;k--);}实验二:模拟开关程序:#include"AT89X51.H"voidmain(){while(1){if(P1_7==0)P1_0=0;//key按下P1_7=0,led点亮elseif(P1_7==1)P1_0=1;//key弹起P1_7=1,led熄灭}}实验三:多路开关程序:#include"AT
3、89X51.H"voidmain(){while(1){P1_0=P1_7;P1_1=P1_6;P1_2=P1_5;P1_3=P1_4;}}实验四:跑马灯(一)图:程序://单一灯的左移右移//八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上//输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。#include"AT89X51.H"voiddelay02s();voidmain(){unsignedinta;while(1){P1=0xfe;d
4、elay02s();for(a=7;a>0;a--)//右移{P1=(P1<<1)+1;delay02s();}for(a=6;a>0;a--)//左移{P1=(P1>>1)+0x80;delay02s();}}}voiddelay02s(){unsignedinti,j,k;for(i=0;i<20;i++)for(j=0;j<20;j++)for(k=0;k<248;k++);}实验五:跑马灯(二、查表方式)图:程序:#include"AT89X51.H"voiddelay02s();voidmain(){unsignedcha
5、rtable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//第一次,右移一行0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//第二次,右移一行0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,//第一次,左移一行0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,//第二次,左移一行0x00,0xff,0x00,0xff};//闪烁两次unsignedchara;while(1){for(a=0;a
6、<35;a++){P1=table[a];delay02s();}}}voiddelay02s(){unsignedchari,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}实验六:led计数程序:#includevoiddelay02s();voidmain(){unsignedcharcodetable[]={0x40,0xf9,0x24,0x30,0x19,0x12,0x03,0xf8,0x00,0x18};unsignedchardi
7、sp;while(1){for(disp=0;disp<10;disp++){P0=table[disp];delay02s();}}}voiddelay02s(){unsignedchari,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}实验七:二进制计数程序://用四个发光二极管模拟计数点击开关次数.#include"AT89X51.H"voiddelay10ms();voidmain(){P0=0xff;while(1){/*////////////////
8、//////////////////////////////if(P0_7==1)//按键按下{delay10ms();if(P0_7==0)//按键弹起,此时灯亮.P0=P0-1;}/////////////////////////