附1:实物图:
图1 遥控小车
图2 遥控器
附2:参考文献
[1] 李朝青. 单片机原理及接口技术[M].第3版. 北京航空航天大学出版社, 2005. [2] 杨素行. 模拟电子技术基础简明教程[M]. 第三版. 高等教育出版社, 2006.
附3:组内分工:
A.庞明辕:电路焊接、单片机编程、电路调试、辅助完成设计报告。 B.杜烁:电路焊接、单片机编程、辅助方案改进、辅助完成设计报告。 C.汤安琪:电路焊接、数据采集、完成设计报告。
附4:元器件清单表格
元件 STM89C51 1602 ULN2003A 28BYJ-48 315M无线收发模块 简易小车 其它(开关、电池)
评语:
数量 2 2 2 2 2 1 若干 成绩:
附:程序代码:
/**********************单片机课程设计C语言程序************************ 题目:基于步进机的小车
成员:汤安琪、庞明辕、杜烁。 日期:2014-3-1
******************************************************************/ #include
#define uchar unsigned char #define uint unsigned int
sbit a = P1^0; //反向 sbit b = P1^1; //减速 sbit c = P1^2; //加速 sbit d = P1^3; //开关 sbit f = P1^4; //设置 sbit g = P1^5; //加 sbit h = P1^6; //减
sbitlcden = P3^7; //1602使能
sbitlcdrs = P3^6; //1602写命令/数据选择端 sbit trans = P3^3; //射频串行输入端 bitn,p;
uint step,time,flag,flag1,num,snum,setnum,stepnum,count,temp,sum,t,e,j,k,m; uchar v0,v1,v2,count1,num1,temp1;
uchar code table1[] = {0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99}; //左 uchar code table2[] = {0x11,0x99,0x88,0xcc,0x44,0x66,0x22,0x33}; //右 uchar code table3[] = {0x11,0x93,0x82,0xc6,0x44,0x6c,0x28,0x39}; //后 uchar code table4[] = {0x11,0x39,0x28,0x6c,0x44,0xc6,0x82,0x93}; //前 uchar code table5[] = {%uchar code table6[] = {\
/*------------------------------------------------ 延时程序
------------------------------------------------*/ void delay(uint z) { uintx,y; for(x=z;x>0;x--) for(y=10;y>0;y--); }
void delay1(uint z) //10us
{ uchara,b,x; for(x=0;x
/*------------------------------------------------ LCD1602写命令程序
------------------------------------------------*/ voidwrite_com(uchar com) { lcdrs = 0; P0 = com; delay(5); lcden = 1; delay(5); lcden = 0; }
/*------------------------------------------------ LCD1602写数据程序
------------------------------------------------*/ voidwrite_dat(uchardat) { lcdrs = 1; P0 = dat; delay(5); lcden = 1; delay(5); lcden = 0; }
/*------------------------------------------------ 基于LCD1602的显示程序
------------------------------------------------*/ void display(ucharadd,uchardat) { uintbai,shi,ge; bai = dat/100; shi = (dat-(dat/100)*100)/10; ge = dat; write_com(0x80+add); write_dat(0x30+bai); write_dat(0x30+shi); write_dat(0x30+ge); }
/*------------------------------------------------ 小车速度计算程序
------------------------------------------------*/ voidspeed_dis() { double n; if(b == 0) { delay(5); if(b==0) { while(!b); time = time+10; if(time>=300) time=300; } } if(c == 0) { delay(5); if(c==0) { while(!c); time = time-10; if(time<=70) time=70; } } n = 15*time/1024; count = 60*n; }
/*------------------------------------------------
步数执行程序:进入设置模式设置步数,确认后执行。 ------------------------------------------------*/ voidsteprun() { uint m; m=512*stepnum; while(m--) { uchari; for(i=0;i<8;i++) {