这个硬件的开发板使用的是IAP15的芯片作为开发的话不多说送上原理图:
https://download.csdn.net/download/u013519537/10248187
本来想自己放到文章里面百度云太麻烦了就直接随便找了个链接了
流水灯太小儿科了吧,测试下板子有没有问题
unsignedcharnum; voidmain() { P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; while(1) { P0=~(1<<num); delayms(1000); num++;//num=num+1; if(num==8)num=0; } } voiddelayms(intms) { inti,j; for(i=0;i<ms;i++) for(j=845;j>0;j--); }
就在温习下按键的使用
这里的话靠跳线帽来控制独立按键还是矩阵按键的
具体见图:跳线帽在右边是独立键盘 跳线帽在左边是矩阵键盘
而这里使用的是15的单片机没有P36 P37引脚,用P42 P44代替
51(15)单片机上电默认是高电平
在CT107D开发平台为了最大限度的提高资源的利用率使用了一系列的锁存器来控制各个模块的开关,这里使用的是74HC573,
LE是锁存端来控制
HC02:四路或非门,控制模块开关
而这里的几个573是通过一个38译码器来控制多个模块,这样的话就提高了板子的利用效率
刚刚把初赛的用到的模块视频看完,先做几个小任务练练手,毕竟是新开发板,利用这几个锁存器的模式我还不太熟悉
任务01:
独立按键:
系统上电LED灯全灭 按下S4全开 按下S5全灭 按下S6奇数亮 按下S7偶数亮
#include <stc15f2k60s2.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int ucharmode=0; voidallinit(); voidDelayms(uintms); voidDelay1ms(); voidled(); voidkey(); voidmain() { allinit(); while(1) { key(); led(); } } voidallinit() { P2=0xa0; P0=0x00;//关闭蜂鸣器继电器P2=0x80; P0=0xff;//关闭led灯} voidled() { if(mode==1) { P2=0x80; P0=0xaa; } if(mode==2) { P2=0x80; P0=0x55; } if(mode==3) { P2=0x80; P0=0x00; } if(mode==4) { P2=0x80; P0=0xff; } } voidkey() { if(P30==0) { Delayms(5); if(P30==0) { mode=1; } while(!P30); } if(P31==0) { Delayms(5); if(P31==0) { mode=2; } while(!P31); } if(P32==0) { Delayms(5); if(P32==0) { mode=3; } while(!P32); } if(P33==0) { Delayms(5); if(P33==0) { mode=4; } while(!P33); } } voidDelayms(uintms) //@11.0592MHz{ unsignedchari, j, k; for(k=ms;k>0;k--) { _nop_(); _nop_(); _nop_(); i=11; j=190; do { while (--j); } while (--i); } } voidDelay1ms() //@11.0592MHz{ unsignedchari, j; _nop_(); _nop_(); _nop_(); i=11; j=190; do { while (--j); } while (--i); }