完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
公司现在有一个项项目,用PIC单片机控制一个直流马达,要做到按键修改(速度)参数并保存,还要用数码管显示出来,最后要用单片机内部的AD做电流检测(当电流大于一定值时马达停止延时5-10S后反转)....,请哪位高手,能给我一个思路,这个程序要怎么做.单片机!我还是一个菜鸟,还停留在跑马灯的魔咒里出不来,救命啊,上面给我一个月的时间,说到时候完不成任务让我直接走人.有哪位单片机高手能帮我一把....
|
|
相关推荐
10个回答
|
|
|
|
首先你要确定马达的型号和单片机的接口或者驱动,就是说你先试着用单片机驱动马达 然后再去考虑别的问题
|
|
|
|
|
|
|
|
|
|
|
|
硬件电路我都做好了,就是软件方面,现在的问题就是数码管动态扫描,按键,AD,存储等多个任务同时进行时软件要怎么处理,我现在的水平让单片机作单个任务免强可以,可要这么多任务同时处理还是一头雾水,能不能给我一个软件编写的思路, |
|
|
|
while(1)
{ //更新数码管 //查询按键 } 我对AD部分不熟悉 ,我也是菜鸟,存储用epprom就可以了。头文件是 // //#define ENABLE_IAP 0x80 //if sysclk<40MHz //#define ENABLE_IAP 0x81 //if sysclk < 20MHZ //#define ENABLE_IAP 0x82//if sysclk < 10MHz #define ENABLE_IAP 0x83//if sysclk <5MHZ #define IAP_ADDRESS 0x02000 typedef unsigned char BYTE; typedef unsigned int WORD; void IapIdle(); BYTE IapReadByte ( WORD addr ); void IapProgramByte ( WORD addr , BYTE bat ); void IapEraseSector ( WORD addr ); 实现是: #include #include #include "EEPROMSTC.h" #include "delay.H" sfr IAP_DATA = 0xE2; sfr IAP_ADDRH =0xe3; sfr IAP_ADDRL = 0xe4; sfr IAP_CMD = 0xe5; sfr IAP_TRIG = 0xe6; sfr IAP_CONTR = 0xe7; #define CMD_IDLE 0 #define CMD_READ 0x01 #define CMD_PROGRAM 0x02 #define CMD_ERASE 0x03 void IapIdle() { IAP_CONTR=0; IAP_CMD=0; IAP_TRIG=0; //IAP_ADDRH=0x80; //IAP_ADDRL=0; EA=1; } void IapEraseSector ( WORD addr ) { IAP_CONTR = ENABLE_IAP; IAP_ADDRH = (addr & 0xfe00) >> 8; IAP_ADDRL = 0x00; IAP_CMD=CMD_ERASE; EA=0; IAP_TRIG=0x46; IAP_TRIG=0xb9; _nop_(); IapIdle(); } BYTE IapReadByte ( WORD addr ) { BYTE dat; IAP_CONTR=ENABLE_IAP; IAP_CMD=CMD_READ; IAP_ADDRL=addr; IAP_ADDRH=addr>>8; EA=0; IAP_TRIG=0x46; IAP_TRIG=0xb9; _nop_(); dat=IAP_DATA; IapIdle(); return dat; } void IapProgramByte ( WORD addr , BYTE dat ) { IAP_CONTR = ENABLE_IAP; IAP_CMD = CMD_PROGRAM; IAP_ADDRL=addr; IAP_ADDRH=addr>>8; IAP_DATA= dat; EA=0; IAP_TRIG=0x46; IAP_TRIG=0xb9; _nop_(); IapIdle(); } void IapProgramByte2 ( WORD addr , BYTE dat ) { if(IapReadByte(addr)!=0xff) { WORD Start = (addr & 0xfe00); WORD i=0; char c; IapEraseSector(IAP_ADDRESS); while(i<512) //一个扇区512个数据 { c = IapReadByte(Start + i); if(c !=0xff) //只有不相等才需要复制 { if(( Start + i)!=addr) //这个位置不能复制,否则失去了新建扇区的意义了 IapProgramByte( IAP_ADDRESS+i,c); } i++; } //再将 Start 这个扇区擦除,以便数据返回 IapEraseSector(Start); i=0; while(i<512) { c=IapReadByte(IAP_ADDRESS + i); if(c !=0xff) //只有不相等才需要复制 { if(( Start + i)!=addr) //这个位置不能复制,否则失去了新建扇区的意义了 IapProgramByte( Start+i,c); } i++; } } IapProgramByte(addr,dat); } |
|
|
|
围观,不懂PIC的路过,,只懂51和AVR。。。。。。。。。
|
|
|
|
这就是 书到用时方恨少 啊~~~~~
|
|
|
|
|
|
|
|
楼主用的电路图方不方便贴出来看看????我只会51,正在学PIC中~!~!呵呵,多任务,我也偶尔玩玩~!~!~嘻嘻!~!~!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
277 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
368 浏览 0 评论
766 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
592 浏览 0 评论
879 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12039 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 11:38 , Processed in 1.050338 second(s), Total 90, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号