CD4066介绍
1. 功能简介
CD4066是四双向模拟开关,主要用作模拟或数字信号的多路传输。CD4066 的每个封装内部有4 个独立的模拟开关,每个模拟开关有输入、输出、控制三个端子,其中输入端和输出端可互换。
2. 引脚说明
- CONTROL:开关控制端 [1]
- IN/OUT:输入/输出端
- OUT/IN:输出/输入端
- VDD:电源正
- VSS:电源负
3. 控制方法
将CD4066的四个输入端接在L298N的输出口,CD4066的输出端接在步进电机的A+、A-、B+、B-端口,四个控制口同时接在单片机的某一引脚上,实现单片机的一个引脚控制一个CD4066上四个开关的同时开断,进而实现步进电机的选择。
Proteus仿真
Proteus接线图如下图所示。
由于Proteus内没有CD4066,只有4066,因此考虑将4个4066组合视为一个整体。
仿真结果:
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #include<reg52.h> sbit enable = P3^0; sbit key = P3^1; void delay(int i) { int j; for(;i>0;i--) for(j=114;j>0;j--); } void main() { unsigned char step[] = {0x01,0x02,0x04,0x08}; unsigned char table1[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; unsigned char table2[] = {0x01,0x02,0x04,0x08}; int i=0,num=0; enable=1; P1 = 0x00; P0 = 0x00; while(1) { if(key == 0); { delay(10); if(key == 0) { num++; if(num>=12) num=-1; while(!key); } } if(num==-1) { P1=0x00; P0=0x00; } else if(num<8) P1=table1[num]; else P0=table2[num-8];
for(i=0; i<4; i++) { P2 = step[i]; delay(500); } } }
|