实在要求高精度,还是用DAC吧。
我试了几次都传不上图去,我把管脚定义说一下吧。P1.0—P1.4接5个对地键,分别作为:顺时针、逆时针、停止、加速和减速按键。P3.0接L294的IN1,P3.1接IN2。P3.7接ENA,也就是PWM输出口。另外你也可以用P0和P2口接LED或者LCD显示屏。晶振就用单片机流行的12MHz就行了。我这是用C语言写程序Keil编译。#includesbitMA=P3^0sbitMB=P3^1sbitPWM=P3^7bitKeyFreeunsignedcharPWM_OUTvoidDelay(unsignedchar)//声明延时函数unsignedcharKeyScan(void)voidkeyProcess(unsignedchar)main(){TMOD=0x01TH0=-50000/256TL0=-50000%256IE=0x82TR0=1while(1){keyProcess(KeyScan())}}voidT0_INT()interrupt1//定时器函数控制PWM输出{TH0=-5000/256TL0=-5000%256PWM=1//设置PWM输出Delay(PWM_OUT)PWM=0Delay(100-PWM_OUT)}voidDelay(unsignedcharx){uchariwhile(x--)for(i=0i<200i++)}unsignedcharKeyScan(void){P1|=0x1fif((P1&0x1f)!=0x1f){Delay(10)//延时去抖if((P1&0x1f)!=0x1f){returnP1&0x1f}}returnP1&0x1f}voidkeyProcess(uintkey){if(key==0x1f)/*******************/{/**/KeyFree=1/*软件松手检测*/}/**/else/**/{/**/if(KeyFree==1)/**/{/*******************/KeyFree=0/*******************************************/switch(key){case0x1e:{MA=1MB=0break}case0x1d:{MA=0MB=1break}case0x1b:{PWM_OUT=0break}case0x17:{if(PWM_OUT!=90){PWM_OUT+=30}break}case0x0f:{if(PWM_OUT!=30&&PWM_OUT!=0){PWM_OUT-=30}break}}/*******************************************/}}}引脚个数:这个主要看封装形式,其引脚分别为44脚(LQFP44封装),40脚(DIP40),48脚(LQFP48),64脚(LQFP64S及LQFP64L封装);
数据存储器大小:4KB(4096);
程序存储器大小:56KB;
内置EEPROM大小:3KB;
次单片机特点:
1. 增强型 8051 CPU,1T,单时钟/机器周期,速度比普通8051快8-12倍
2. 工作电压:2.5V - 5.5V
3. 56K字节片�Flash程序存储器,擦写次数10万次以上
4. 片内大容量4096字节 的SRAM,包括常规的256字节RAM <idata>和内部扩展的3840字节XRAM <xdata>
5. 大容量片内 EEPROM ,擦写次数10万次以上
6. ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器
7. 共 8 通道10位高速ADC,速度可达30万次/秒,8路PWM还可当8路D/A使�
8. 6通道15位专门的高精度PWM(带死区控制) + 2通道CCP(利用它的高速脉冲输出功能可实现11~16位PWM)
----可用来再实现8路D/A,或2个16位定时器,或2个外部中断(支持上升沿/下降沿中断)
9. 6路增强型PWM
10. 内部高可靠复位,ISP编程时16级复位门槛电压可选,可彻底省掉外部复位电路
11. 工作频率范围:5MHz ~ 30MHz,相当于普通8051的60MHz~360MHz
12. 内部高精度R/C时钟(±0.3%),±1%温飘(-40℃~+85℃),常温下温飘±0.6%(-20℃~+65℃),ISP编程时内部时钟从5MHz~30MHz可设(5.5296MHz / 6MHz /11.0592MHz / 12MHz /18.432MHz / 20MHz / 22.1184MHz / 24MHz / 27MHz / 30MHz)
13. 一组高速同步串行通信端口SPI.
等等,还有其他特点,可以查阅STC官方datasheet;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)