单片机设计方案课件.docVIP

  • 1
  • 0
  • 约1.89万字
  • 约 47页
  • 2018-02-24 发布于湖北
  • 举报
单片机设计方案课件

单片机设计 一、使用KEIL的步骤 3 二、单片机最小系统的设计 6 2.1 程序代码 6 2.2 Keil仿真 7 2.3 Protues仿真 7 三、流水灯循环点亮 7 3.1 原理介绍 8 3.2 程序代码 9 3.3 Keil结果展示 10 3.4 protues仿真 11 四、心形灯闪烁 13 4.1 程序代码 13 4.2 Protues仿真 38 五、 最简单电子秒表01 40 5.1 程序代码 40 5.2 Keil仿真 43 5.3 Protues仿真 44 六、电子秒表02 45 6.1 程序代码 45 6.2 Keil仿真 47 6.3 Protues仿真 48 七、 电子秒表03 48 晶振在protues中的符号:CRYSTAL 一、使用KEIL的步骤 01 02 03 04 05 06 二、单片机最小系统的设计 2.1 程序代码 #includereg52.h #define uint unsigned int #define uchar unsigned char // 定义头文件 sbit P2_1=P2^1; // 定义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 程序代码 #includereg51.h? #includeintrins.h? #define uchar unsigned char? #define uint unsigned int //加黑的都是定义头文件 void DelayMS(uint x)?//延时? {? uchar i;? while(x--)? {? for(i=0;i120;i++);? }? }? 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左循环移动? DelayMS(150);? }? for(i=0;i7;i++)?/ / i=0,判断i7,再执行P2=_crol_(P2,1),之后再执行i++ {? P2=_cror_(P2,1); //以位的形式将P2右循环移动? DelayMS(150);? }? }? } //利用循环移位函数_crol_(左循环)和_cror_(右循环)形成来回滚动的效果? a?=?0xA5;? b?=?_crol_(a,1); /*?b?now?is?0xD2?*/? unsigned?char?_crol_?(unsigned?char?c,?unsigned?char?b);//?使无符号字符循环向左移位 unsigned?char?_cror_?(unsigned?char?c,?unsigned?char?b);//?使无符号字符循环向右移动b位 3.3 Keil结果展示 3.4 protues仿真 01 02 03 四、心形灯闪烁 4.1 程序代码 #include REGX52.H #define uint unsigned int #define uchar unsigned char uchar 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}

文档评论(0)

1亿VIP精品文档

相关文档