USART编程.doc
《USART编程.doc》由会员分享,可在线阅读,更多相关《USART编程.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、/编程时间:07-4-84-18/作者:WWS/利用串行口实现直流电机的调速程序/基本要求如下:/1./实现直流电机的恒电流控制,也就是说,要控制直流电机的电流恒定,实现这个任务需要/利用板子上的电机驱动模块、AD模块测电流,同时,还需要你看一些直流电机控制方面的资料/2./将测量得到的电机相电流、速度等数据通过串行口发送出去,串行口的参数设置为:57600,/1起始位8数据位1停止位,波特率可以通过拨码开关或按键在57600或112000之间切换;/同时,通过串行口,用户可以设定电流值,以便于电机调节:/3./电机的电流或速度在数码管上显示,可通过按键切换显示内容;/#include/*数据
2、定义部分*/bitADFLAG=0,RECEFLAG=0,FUNCTION=0,UsartallowFLAG=0;/AD中断标志位,串口数据标志位,电机在运转中标志位,串口数据存储计数值,模拟串口允许发送位bank1staticcharled10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/无小数点的段码bank1staticcharled110=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/有小数点的段码bank1staticchars4=0,0,0,0,Saveval9=0,0
3、,0,0,0,0,0,0,k;/显示数码管服务数组,采集电压转换电流速度中间变量,循环使用值bank1staticintelecurt,speed;/显示函数调用相电流值,速度值bank1constcharx1=0,x2=1,x3=2,x4=3;/串口发送比较值bank1staticunsignedchartab,number=0;/取LED数组中的值用tab,键盘服务程序使用计数值numberbank1staticunsignedcharkey=0,RECE=0,tab;/按键值,串口接收到的数据,数码管段码bank1staticunsignedintAdresult,ADsmp,i,tim
4、e;/AD采样结果和当前采样值,延时函数循环值,子显示程序显示时间计数值bank1staticunsignedcharUsartallow=0,Savechar=0;/发送串口数据允许位产生时间计数值计数到100即10S,串口发送数据允许时间计数值/*函数定义部分*/voidPortinit();/端口初始化函数voidADinit();/AD初始化函数voidT1inti();/T1初始化函数voidUsartinit();/串口初始化函数voiddis(intdata);/数据拆分函数,服务于四段数码管voidspeaker(chardata);voidkeyscan();/键盘服务voi
5、dyw1641(charz);voidyw1642(charz);voidyw1643(charz);voidyw1644(charz);voidMOTOrun();/电机运行控制程序voidMOTOstop();/电机停止控制程序voidaddspeed();/电机加速控制程序voidmidspeed();/电机减速控制程序voidChangeBAUD();/波特率改变函数voidSaveusart();voiddealad();/AD数据处理函数voiddealV();voidDELAY1();voidDELAY2();voidDELAY3();/*=主函数=*/voidmain()Por
6、tinit();/端口初试化Usartinit();/串口初试化ADinit();/AD相关寄存器初试化T1inti();/采样周期与发送数据至串口时间控制器T1初始化TMR1IE=1;/打开采样时钟中断标志位ADIE=1;/打开AD采样中断允许位while(1)/ChangeBAUD();/拨码开关改变当前波特率/当有AD采样完成则进行AD数据转化与电压转变电流速度值/if(ADFLAG=1)/dealad();/AD采样结果处理,送显示函数/dealV();/处理电压值,转变为电流与速度值/如果串口有数据发送过来/if(RECEFLAG=1)/RECEFLAG=0;/清除串口接收到数据标志
7、位/switch(SavevalSavechar)/寻找相互匹配的串口命令/case1:MOTOrun();/break;/当串口发来X1时,启动电机/case2:MOTOstop();/break;/当串口发来X2时,停止电机/case3:addspeed();/break;/当串口发来X3时,电机加速/case4:midspeed();/break;/当串口发来X4时,电机减速/每间隔10S钟发送一次当前速度值和电流值/if(UsartallowFLAG=1)/TXREG=speed;/发送当前速度值/while(TRMT);/等待发送完毕/TXREG=elecurt;/发送当前电流值/U
8、sartallowFLAG=0;/置允许发送位为零/显示当前电机相电流/dis(elecurt);/keyscan();/键盘扫描程序,扫描键值/yw1641(s3);/数码管显示函数,显示数码管第一段,显示当前电流值/DELAY2();/延时函数,决定数码管显示时间,长短影响主循环和亮度/yw1642(s2);/数码管显示函数,显示数码管第二段/DELAY2();/yw1643(s1);/数码管显示函数,显示数码管第三段/DELAY2();/yw1644(s0);/数码管显示函数,显示数码管第四段/DELAY2();/键盘切换显示内容显示当前速度值/while(key=1)/time+;/d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USART 编程
限制150内