单片机系统设计方案.doc_第1页
单片机系统设计方案.doc_第2页
单片机系统设计方案.doc_第3页
单片机系统设计方案.doc_第4页
单片机系统设计方案.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机系统设计方案一、使用KEIL的步骤010203040506二、单片机最小系统的设计2.1 程序代码#include#define uint unsigned int#define uchar unsigned char / 定义头文件sbit P2_1=P21; / 定义P2_1为P2口的第1位,以便进行位操作。 void delay(uint z) / 定义延时函数 uchar x,y;for(x=0;xz;x+)for(y=0;y121;y+); /使用两个嵌套的for语句来实现延时,先赋值x=0,判断一下xz,若为真则执行下一个for语句,赋值y=0,判断一下y121,若为真则执行下一条,若无下一条则执行y+,直到y121为假,则在执行x+,在判断一下xz,若为真则再执行一次y的for语句,为假则跳出循环,结束。 void main() / 定义主函数 P2_1=0; / 将P2-1口赋值为0,即给予P2_1一个低电平,在电路中led灯另一端接VCC高电平,给一低电平即将LED灯导通,使其亮。 2.2 Keil仿真2.3 Protues仿真三、流水灯循环点亮3.1 原理介绍3.2 程序代码#include#include#define uchar unsigned char#define uint unsigned int /加黑的都是定义头文件void DelayMS(uint x)/延时uchar i;while(x-)for(i=0;i120;i+); /采用for循环来实现延时void main() /主程序uchar i;P2=0x01;while(1)for(i=0;i7;i+) / i=0,判断i7,再执行P2=_crol_(P2,1),之后再执行i+P2=_crol_(P2,1); /以位的形式将P2左循环移动1位DelayMS(150);for(i=0;i7;i+)/ / i=0,判断i7,再执行P2=_crol_(P2,1),之后再执行i+P2=_cror_(P2,1); /以位的形式将P2右循环移动1位DelayMS(150); /利用循环移位函数_crol_(左循环)和_cror_(右循环)形成来回滚动的效果a=0xA5; b=_crol_(a,1); /*bnowis0xD2*/unsignedchar_crol_(unsignedcharc,unsignedcharb);/使无符号字符循环向左移b位unsignedchar_cror_(unsignedcharc,unsignedcharb);/使无符号字符循环向右移动b位功能:_crol_,_irol_,_lrol_以位形式将变量val循环左移n位。3.3 Keil结果展示3.4 protues仿真010203四、心形灯闪烁4.1 程序代码#include #defineuintunsigned int#defineucharunsigned charuchar code table0=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f / LED从低位往高位移 uchar code table1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe; / LED从高位往低位移uchar code table2=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00; / LED从1个亮到8个都点亮(低位往高位移)uchar code table3=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00; / LED从1个亮到8个都亮(高位往低位移)uchar code table4=0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff; /led从8个全亮到一个不亮(从低位到高位)uchar code table5=0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff; /led从8个全亮到一个不亮(从高位到低位)uchar code table6=0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e; / 从低位往高位移(最低位始终为0)uchar code table7=0x7f,0x3f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e; / 从高位往低位移(最高位始终为0)uchar i,j;/定义循环变量uint tt=70;/定义时间函数void delay(uint time) /定义延时函数uint x,y;for(x=time;x0;x-)for(y=110;y0;y-); /使用两个嵌套的for语句来实现延时void disp0()/定义状态0 所有led灯闪烁3 次for(i=0;i3;i+) / for 循环P0=0x00; P2=0x00; P3=0x00; P1=0x00; /led灯一端接VCC,另一端使P0/P1/P2/P3为0即低电平,则led灯导通,led亮delay(300);P0=0xff; P2=0xff; P3=0xff; P1=0xff; /led灯一端接VCC,另一端使P0/P1/P2/P3为0即高电平,则led灯截止,led灭delay(300);/整个状态实现了led灯的亮灭闪烁3次void disp1()/ 状态1 LED逆时针转一圈for(i=0;i8;i+)P2=table1i; /table1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe; LED从高位往低位移(P2.8为高位,结合图可知)delay(100);P2=0xff; / 给P2高电平,P2截止,P2全灭for(i=0;i8;i+)P3=table1i; /LED从高位往低位移(P3.8为高位,结合图可知)delay(100);P3=0xff; / 给P3高电平,P3截止,P3全灭for(i=0;i8;i+)P1=table1i; /LED从高位往低位移(P3.8为高位,结合图可知) delay(100);P1=0xff; / 给P1高电平,P1截止,P1全灭for(i=0;i8;i+) P0=table0i; /table0=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f LED从低位往高位移 delay(100);P0=0xff; / 给P0高电平,P0截止,P0全灭void disp2()/状态2 LED顺时针转一圈for(i=0;i8;i+)P0=table1i;delay(100);P0=0xff;for(i=0;i8;i+)P1=table0i;delay(100);P1=0xff;for(i=0;i8;i+)P3=table0i;delay(100);P3=0xff;for(i=0;i8;i+)P2=table0i;delay(100);P2=0xff; void disp3() /状态3 4 个LED灯同时顺时、逆时针移动1/4圈for(i=0;i8;i+)P0=table1i; /P0组 LED从高位往低位移P1=table1i; /P1组 LED从高位往低位移P2=table1i; /P2组 LED从高位往低位移P3=table0i; / P3组LED从低位往高位移 delay(100);for(i=0;i8;i+)P0=table0i; / P0组LED从低位往高位移 P1=table0i; / P1组LED从低位往高位移 P2=table0i; / P2组LED从低位往高位移 P3=table1i; /P3组 LED从高位往低位移delay(100);P3=0xff; P0=0xff; /P3,P0全组都灭void disp4()/ 状态4 2个LED同时顺时针移动半圈for(i=0;i8;i+)P2=table1i; /P2组 LED从高位往低位移P1=table1i; /P1组 LED从高位往低位移delay(100);P2=0xff; P1=0xff;for(i=0;i8;i+)P3=table1i; /P3组 LED从高位往低位移P0=table0i; / P0组LED从低位往高位移delay(100);P3=0xff; P0=0xff; /P3,P0全组都灭void disp5()/ 状态5 2个LED同时逆时针移动半圈for(i=0;i8;i+)P0=table1i; /P0组 LED从高位往低位移 P3=table0i; / P3组LED从低位往高位移delay(100);P0=0xff; P3=0xff;for(i=0;i8;i+)P1=table0i; / P1组LED从低位往高位移P2=table0i; / P2组LED从低位往高位移delay(100);P1=0xff; P2=0xff; /P1,P2全组都灭void disp6() /状态6 LED自上而下逐渐点亮(一半点亮一半不亮)for(i=0;i8;i+)P0=table3i; / LED从1个亮到8个都亮(高位往低位移)P2=table3i;delay(100);P0=0xff; P2=0xff;for(i=0;i8;i+)P1=table2i; / LED从1个亮到8个都点亮(低位往高位移)P3=table3i; / LED从1个亮到8个都点亮(高位往低位移)delay(100);P1=0xff; P3=0xff;void disp7()/ 状态7 LED自下而上逐渐点亮(直到全部点亮)for(i=0;i8;i+)P1=table3i; / LED从1个亮到8个都点亮(高位往低位移)P3=table2i; / LED从1个亮到8个都点亮(低位往高位移)delay(100);for(i=0;i8;i+)P0=table2i; / LED从1个亮到8个都点亮(低位往高位移)P2=table2i; / LED从1个亮到8个都点亮(低位往高位移)delay(100);void disp8()/ 状态8 间隔8格的4个LED亮并逆时针旋转for(j=0;j2;j+)for(i=0;i8;i+)P0=table1i; /P0组 LED从高位往低位移 P2=table0i; / P2组LED从低位往高位移P1=table0i;P3=table0i;delay(100);P0=0xff; P2=0xff; P1=0xff; P3=0xff;for(i=0;i8;i+)P0=table1i;P2=table0i;P1=table0i;P3=table0i;delay(100);P0=0xff; P2=0xff; P1=0xff; P3=0xff;void disp9()/状态9 间断8格的led亮,再逆时针逐渐点亮(直到全部点亮)for(i=0;i8;i+)P0=table3i; / LED从1个亮到8个都点亮(高位往低位移)P2=table2i; / LED从1个亮到8个都点亮(低位往高位移)P1=table2i;P3=table2i;delay(100);delay(500);void disp10()/状态10 从led全部亮到全不亮(间隔8格的4个led开始逆时针熄灭)for(i=0;i9;i+)P0=table5i; /led从8个全亮到一个不亮(从高位到低位)P2=table4i; /led从8个全亮到一个不亮(从低位到高位)P1=table4i;P3=table4i;delay(100);delay(300);void disp11()/ 状态11 间隔8格的4个LED亮并顺时针旋转for(j=0;j2;j+)for(i=0;i8;i+)P0=table0i;P2=table1i;P1=table1i;P3=table1i;delay(100);P0=0xff; P2=0xff; P1=0xff; P3=0xff;for(i=0;i8;i+)P0=table0i;P2=table1i;P1=table1i;P3=table1i;delay(100);P0=0xff; P2=0xff; P1=0xff; P3=0xff;void disp12()for(i=0;i8;i+)P0=table2i;P2=table3i;P1=table3i;P3=table3i;delay(100);delay(1000);void disp13()for(i=0;i9;i+)P0=table4i;P2=table5i;P1=table5i;P3=table5i;delay(100);delay(300);void disp14()for(i=0;i8;i+)P0=table2i;P1=table2i;P2=table2i;P3=table3i;delay(100);void disp15()for(i=0;i9;i+)P0=table5i;P1=table5i;P2=table5i;P3=table4i;delay(100);delay(300);void disp16()for(i=0;i5;i+)P0=0xaa; P1=0xaa; P2=0xaa; P3=0xaa;delay(100);P0=P0; P1=P1; P2=P2; P3=P3;delay(100);for(i=0;i5;i+)P0=0xaa; P1=0xaa; P2=0xaa; P3=0xaa;delay(200);P0=P0; P1=P1; P2=P2; P3=P3;delay(200);for(i=0;i5;i+)P0=0xaa; P1=0xaa; P2=0xaa; P3=0xaa;delay(300);P0=P0; P1=P1; P2=P2; P3=P3;delay(300);P0=0xff; P2=0xff; P1=0xff; P3=0xff;delay(300);void disp17()for(i=0;i8;i+)P0=table3i;delay(100);for(i=0;i8;i+)P1=table2i;delay(100);for(i=0;i8;i+)P3=table2i;delay(100);for(i=0;i8;i+)P2=table2i;delay(100);P0=0xff; P1=0xff; P3=0xff; P2=0xff;/*/for(i=0;i8;i+)P0=table3i;delay(50);for(i=0;i8;i+)P1=table2i;delay(50);for(i=0;i8;i+)P3=table2i;delay(50);for(i=0;i8;i+)P2=table2i;delay(50);P0=0xff; P1=0xff; P3=0xff; P2=0xff;void disp18()for(i=0;i8;i+)P0=table3i;delay(100);P0=0xff;for(i=0;i8;i+)P1=table2i;delay(100);P1=0xff;for(i=0;i8;i+)P3=table2i;delay(100);P3=0xff;for(i=0;i8;i+)P2=table2i;delay(100);P2=0xff;void disp19()for(i=0;i8;i+)P2=table3i;delay(100);for(i=0;i8;i+)P3=table3i;delay(100);for(i=0;i8;i+)P1=table3i;delay(100);for(i=0;i8;i+)P0=table2i;delay(100);P0=0xff; P1=0xff; P3=0xff; P2=0xff;/*/for(i=0;i8;i+)P2=table3i;delay(50);for(i=0;i8;i+)P3=table3i;delay(50);for(i=0;i8;i+)P1=table3i;delay(50);for(i=0;i8;i+)P0=table2i;delay(50);P0=0xff; P1=0xff; P3=0xff; P2=0xff;void disp20()for(i=0;i8;i+)P2=table3i;delay(100);P2=0xff;for(i=0;i8;i+)P3=table3i;delay(100);P3=0xff;for(i=0;i8;i+)P1=table3i;delay(100);P1=0xff;for(i=0;i8;i+)P0=table2i;delay(100);P0=0xff;void disp21()for(i=0;i8;i+)P0=table1i;P2=table1i;delay(100);P0=0xff; P2=0xff;for(i=0;i8;i+)P1=table0i;P3=table1i;delay(100);for(i=0;i8;i+)P1=table1i;P3=table0i;delay(100);P1=0xff; P3=0xff;for(i=0;i8;i+)P0=table0i;P2=table0i;delay(100);void disp22()for(j=0;j5;j+)for(i=0;i8;i+)P0=table1i;P2=table1i;delay(tt);P0=0xff; P2=0xff;for(i=0;i8;i+)P1=table0i;P3=table1i;delay(tt);P1=0xff; P3=0xff;tt=tt-10;for(j=0;j16;j+)for(i=0;i8;i+)P0=table1i;P2=table1i;delay(20);P0=0xff; P2=0xff;for(i=0;i8;i+)P1=table0i;P3=table1i;delay(20);P1=0xff; P3=0xff;tt=20;for(j=0;j5;j+)for(i=0;i8;i+)P0=table1i;P2=table1i;delay(tt);P0=0xff; P2=0xff;for(i=0;i8;i+)P1=table0i;P3=table1i;delay(tt);P1=0xff; P3=0xff;tt=tt+10;tt=70;void disp23()for(i=0;i2;i+)P0=0x00; P2=0x00;delay(1000);P0=0xff; P2=0xff;P1=0x00; P3=0x00;delay(1000);P1=0xff; P3=0xff;void disp24()P1=0xff; P3=0xff; P0=0xff; P2=0xff;for(i=0;i2;i+)P0=0x00; P1=0x00;delay(1000);P0=0xff; P1=0xff;P2=0x00; P3=0x00; delay(1000);P2=0xff; P3=0xff;void disp25()for(i=0;i5;i+)P0=0xaa; P1=0xaa; P2=0xaa; P3=0xaa;delay(1000);P0=P0; P1=P1; P2=P2; P3=P3;delay(1000);void disp26()P0=0x00;P1=0x00;P2=0x00;P3=0x00;for(i=0;i8;i+)P0=table1i;P2=table1i;delay(200);P0=0x00; P2=0x00;for(i=0;i8;i+)P1=table0i;P3=table1i;delay(200);for(i=0;i8;i+)P1=table1i;P3=table0i;delay(200);P1=0x00; P3=0x00;for(i=0;i8;i+)P0=table0i;P2=table0i;delay(200);void disp27()P0=0xff; P1=0xff; P2=0xff; P3=0xff;for(j=0;j2;j+)for(i=0;i8;i+)P2=table3i;P1=table3i;delay(100);P2=0xff; P1=0xff;for(i=0;i8;i+)P0=table2i;P3=table3i;delay(100);P0=0xff; P3=0xff;void disp28()for(i=0;i2;i+)P1=0x00; P2=0x00; P0=0xff; P3=0xff; delay(1000);P1=0xff; P2=0xff; P0=0x00; P3=0x00; delay(1000);P1=0xff; P2=0xff; P0=0xff; P3=0xff; void disp29()P0=0xff; P1=0xff; P2=0xff; P3=0xff;for(j=0;j2;j+)for(i=0;i8;i+)P2=table3i;P1=table3i;delay(100);for(i=0;i9;i+)P2=table5i;P1=table5i;delay(100);for(i=0;i8;i+)P0=table2i;P3=table3i;delay(100);for(i=0;i9;i+)P0=table4i;P3=table5i;delay(100);delay(200);void disp30()P0=0xff; P1=0xff; P2=0xff; P3=0xff;for(j=0;j2;j+)for(i=0;i8;i+)P2=table2i;P1=table2i;delay(100);P2=0xff; P1=0xff;for(i=0;i8;i+)P0=table3i;P3=table2i;delay(100);P0=0xff; P3=0xff;void disp31()P0=0xff; P1=0xff; P2=0xff; P3=0xff;for(j=0;j2;j+)for(i=0;i8;i+)P2=table2i;P1=table2i;delay(100);for(i=0;i9;i+)P2=table4i;P1=table4i;delay(100);for(i=0;i8;i+)P0=table3i;P3=table2i;delay(100);for(i=0;i9;i+)P0=table5i;P3=table4i;delay(100);delay(200);void disp32()for(i=0;i8;i+)P0=table3i;P2=table3i;delay(100);for(i=0;i8;i+)P1=table2i;P3=table3i;delay(100);for(i=0;i9;i+)P1=table5i;P3=table4i;delay(100);for(i=0;i9;i+)P0=table4i;P2=table4i;delay(100);void disp33()for(i=0;i8;i+)P0=table2i;P1=table2i;delay(100);for(i=0;i8;i+)P2=table3i;P3=table2i;delay(100);delay(500);for(i=0;i9;i+)P2=table4i;P3=table5i;P1=table4i;P0=table4i;delay(100);delay(300);void disp34()for(i=0;i8;i+)P2=table2i;P3=table3i;delay(100);for(i=0;i8;i+)P0=table3i;P1=table3i;delay(100);delay(500);for(i=0;i9;i+)P2=table5i;P3=table4i;P1=table5i;P0=table5i;delay(100);delay(300);void disp35()for(i=0;i8;i+)P2=table3i;P1=table3i;delay(100);for(i=0;i8;i+)P3=table3i;P0=table2i;delay(100);void disp36()for(i=0;i8;i+)P0=table3i;P3=table2i;delay(100);for(i=0;i8;i+)P1=table2i;P2=table2i;delay(100);void disp37()for(i=0;i8;i+)P0=table1i;P2=table1i;delay(100);P0=0xff; P2=0xff;for(i=0;i8;i+)P1=table0i;P3=table1i;delay(100);for(i=0;i8;i+)P1=table7i;P3=table6i;delay(100);P1=0x7f; P3=0xfe;for(i=0;i8;i+)P0=table0i;P2=table0i;delay(100);for(i=0;i8;i+)P0=table1i;P2=table1i;P1=table1i;P3=table0i;delay(200);for(i=0;i8;i+)P0=table0i;P1=table0i;P2=table0i;P3=table1i;delay(200);P0=0xff;P1=0xff; P2=0xff;P3=0xff;void disp38()P0=0xff; P1=0xff; P2=0xff; P3=0xff;for(j=0;j2;j+)for(i=0;i8;i+)P2=table3i;P1=table3i;delay(100);P2=0xff; P1=0xff;for(i=0;i8;i+)P0=table2i;P3=table3i;delay(100);P0=0xff; P3=0xff;void disp39()P1=0x00; P3=0x00;for(i=0;i8;i+)P0=table3i;P2=table3i;delay(150);for(i=0;i8;i+)P0=table3i;P2=table3i;delay(300);for(i=0;i4;i+)P0=P0; P2=P2;delay(300);delay(1000);void disp40()for(i=0;i9;i+)P3=table4i;P0=table5i;delay(100);for(i=1;i9;i+)P2=table4i;P1=table4i;delay(100);delay(300);void disp41()for(i=0;i9;i+)P2=table5i;P1=table5i;delay(100);for(i=1;i9;i+)P0=table4i;P3=table5i;delay(100);delay(300);void main()while(1)disp22();/状态22 2个led自上而下移动(循环5次,且频率渐快,到最快时持续循环16次然后循环5次频率再逐渐降低)disp0();/ 状态0 所有led闪烁3次disp1();/状态1 led逆时针转一圈disp2();/状态2 led顺时针转一圈disp3();/状态3 4个led同时顺时、逆时针移动1/4圈disp4();/状态4 2个led同时顺时针移动半圈disp5();/状态5 2个led同时逆时针移动半圈disp6();/状态6 led自上而下逐渐点亮(一半点亮一半不亮)disp7();/状态7 led自下而上逐渐点亮(直到全部点亮)disp0();/状态0 所有的led灯闪烁3次disp8();/状态8 间隔8格的4个led亮并逆时针旋转disp9();/状态9 间隔8格的4个led亮并逆时针逐渐点亮(直到全部点亮)disp10();/状态10 从led全部亮到全不亮(间隔8格的4个led开始逆时针熄灭)disp11();/状态11 间隔8格的4个led开始顺时针点亮disp12();/间隔8格的4个led亮,再顺时针逐渐点亮(直到全部点亮)disp13(); /状态13 从led全部亮到全不亮( 间隔8格的4个led开始顺时针熄灭)disp14(); /状态14 从led不亮到全亮disp15();/状态15disp16();/状态16disp17();/状态17disp18();/状态18disp19();/状态19disp20();/状态20disp21();/状态21disp22();/状态22disp23();/状态23disp39();/状态39disp24();/状态24disp25();/状态25disp8();/状态8disp9();/状态9disp10();/状态10disp26();/状态26disp27();/状态27disp28();/状态28disp38();/状态38disp29();/状态29disp30();/状态30disp31();/状态31disp32();/状态32 disp33();/状态33disp37();/状态37disp36();/状态36disp40();/状态40disp35();/状态35disp41();/状态41disp34();/状态34disp28();/状态284.2 Protues仿真五、 最简单电子秒表015.1 程序代码#include unsigned char ge,shi,num,count,t; unsign

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论