

单片机源程序如下:
#include #include typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; sbit PWM01=P1^4; sbit PWM02=P1^5; //电机1 sbit PWM11=P1^6; sbit PWM12=P1^7; //电机2 sbit PWM21=P2^2; sbit PWM22=P2^3; //电机3 sbit PWM31=P3^6; sbit PWM32=P3^7; //电机4 sbit ADDRC = P1^0; sbit ADDRB = P1^1; sbit ADDRA = P1^2;//控制138译码器的三个引脚 uint8 AD_value0 = 0;//AD值 uint8 AD_value1 = 0;//AD值 uint8 AD_value2 = 0;//AD值 uint8 AD_value3 = 0;//AD值 uint8 Top = 255; uint8 Low = 0; uint8 between0 = 127; uint8 between1 = 128; sbit I2C_SDA = P2^1; sbit I2C_SCL = P2^0;//I2C通信的两个引脚 bit flag_300ms = 0;//300ms时间标志位 uint8 T0RH = 0;//定时器高8位初值 uint8 T0RL = 0;//定时器低8位初值 //uint8 AD_value = 0;//AD值 uint8 code led_char[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//LED段码 void config_timer0(uint8 ms); uint8 get_ADC_vaule(uint8 chn); void motor_deal0(); void motor_deal1(); void motor_deal2(); void motor_deal3(); void main() { config_timer0(1);//初始化通用定时器0,定时1ms while(1) { if(flag_300ms == 1) //判断300ms时间是否到了 { flag_300ms = 0;//清除标志位 AD_value0 = get_ADC_vaule(0);//读取通道0的AD值 AD_value1 = get_ADC_vaule(1);//读取通道0的AD值 AD_value2 = get_ADC_vaule(2);//读取通道0的AD值 AD_value3 = get_ADC_vaule(3);//读取通道0的AD值 } motor_deal0(); motor_deal1(); motor_deal2(); motor_deal3(); } } void motor_deal0() { if(AD_value0 == between0 || AD_value0 == between1) //stop { PWM01=1; PWM02=1; } else if(AD_value0>=Low && AD_value0 PWM01=0; PWM02=1; } else //反 { PWM01=1; PWM02=0; } } void motor_deal1() { if(AD_value1 == between0 || AD_value1 == between1) //stop { PWM11=1; PWM12=1; } else if(AD_value1>=Low && AD_value1 PWM11=0; PWM12=1; } else //反 { PWM11=1; PWM12=0; } } void motor_deal2() { if(AD_value2 == between0 || AD_value2 == between1) //stop { PWM21=1; PWM22=1; } else if(AD_value2>=Low && AD_value2 PWM21=0; PWM22=1; } else //反 { PWM21=1; PWM22=0; } } void motor_deal3() { if(AD_value3 == between0 || AD_value3 == between1) //stop { PWM31=1; PWM32=1; } else if(AD_value3>=Low && AD_value3 PWM31=0; PWM32=1; } else //反 { PWM31=1; PWM32=0; } } void I2C_delay()//I2C延时函数 { _nop_(); _nop_(); _nop_(); _nop_(); } void I2C_start()//I2C起始信号 { I2C_SDA = 1; I2C_SCL = 1; I2C_delay(); I2C_SDA = 0; I2C_delay(); I2C_SCL = 0; I2C_delay(); } void I2C_stop()//I2C停止信号 { I2C_SDA = 0; I2C_SCL = 0; I2C_delay(); I2C_SCL = 1; I2C_delay(); I2C_SDA = 1; I2C_delay(); } bit I2C_write(uint8 dat)//I2C写一个字节 { bit ack = 0;
上一篇:51单片机gy906测温,语音播报,eepromc存储
下一篇:单片机定时倒计时提醒制作
推荐阅读
史海拾趣
- 直播已结束【使用 TI 低成本 MSPM0 MCU 快速开发 – 生态详解系列之二】(9:45开始入场)
- 答题赢好礼|以人为本、生命无价 ADI 楼宇烟雾探测技术
- 我爱 TI Webench 之学课程传设计,赢礼100% !
- 【评论有礼!】Sleepace RestOn 智能睡眠监测仪拆解
- 看泰克视频讲座,了解先进医疗电子测试方案,填问卷,赢好礼!
- 西门子电子书下载《PCB 制造流程 - 通过数字化转型进行优化》
- 2024安路科技FPGA技术研讨会-广州站 火热报名中
- 艾睿电子直播:聚焦“TI FPD-Link III 汽车芯片组” ,汽车视频传输理想解决方案
- 有奖直播 | “PCIM Asia 2024” ROHM 展位线上直播
- G20周刊|埃斯顿与北自所达成战略合作、海康机器人发布光伏组件汇流带视觉检测解决方案
- 14家工业智能企业入选《上海市智能机器人标杆企业与应用场景推荐目录》
- 大声量 | 2023机器视觉技术与应用峰会议程新鲜出炉!
- 海康机器人视觉检测方案守护光伏组件生产质量
- 艾利特CSF系列力控协作机器人来了!
- 安兔兔发10月Android手机性能榜单,华为Mate40 Pro高居榜首
- 关键半导体装备国产化突破?微导纳米首台ALD设备将交付
- 雷军:小米智能工厂几乎所有设备都是自研及其投资工厂
- 曾学忠:小米2020年研发预算100亿+,高端手机市场份额增300%
- 格芯:成都是格芯重要的合作伙伴,正在讨论二期合作问题





VI-27WIU






京公网安备 11010802033920号