参考文献
[1] 单片机原理与应用研究[M]. 王迎旭编著.北京: 机械工业出版社 ,2004.7 [2] 80C51单片机原理与应用[M]. 吴炳胜,王桂梅等编著.冶金工业出版社,2001.10 [3] 多单片机系统应用技术[M]. 宗光华,李大寨编著.北京:国防工业出版社,2003.10 [4] 单片机C语言编程与实例[M]. 赵亮,侯国锐编著.北京:人民邮电出版社,2003.9 [5] 单芯片8051实务与应用[M]. 杨忠煌,黄博俊,李文昌编著.北京:中国水利水电出版社,2001.5
[6] 2003年全国大学生电子设计竟赛论文[G]. 作 者:刘月龙,曹中平,王善磊.作者单位:吉林大学.指导教师:曹军胜,李宝华,王剑钢
[7] 2003年全国大学生电子设计竟赛论文[G]. 作者:张茗,郭伟华,黄团团.作者单位:中原工学院.指导教师:张五一陈旭
[8] 2003年全国大学生电子设计竟赛论文[G].作者:赵兆俞,怡炜章,鹤麟.作者单位:上海交通大学.赛前辅导教师:马伟敏,文稿整理辅导教师:诸勤敏,袁焱 [9] 单片机技术实用教程[M]. 胡锦等编著.北京:高等教育出版社,2003 [10] 通信原理与电路[M]. 罗伟雄等编著.北京:北京理工大学出版社,2001 [11] IAR System[M]. M SP430 C Complier Programming Guide Dallas TX:TI,1996 [12] 单片机原理及应用[M].孙涵芳等编著. 北京:北京航空航天大学出版社,1998 [13] Digital Signal Processing[M]. Paulo S.R.Diniz.电子工业出版社,2002 [14 ] 实用计算机控制技术[M].王新贤 .济南:山东科学技术出版社,1994 [15] 数字电路与逻辑设计[M].邓元庆.北京:电子工业出版社,2001 [16] 电子设计自动化[M].刘润华.北京:石油大学出版社,2001
[17] 单片微型计算机技术[M]. 刘国荣主编.北京:机械工业出版社,1996 [18] MCS-51系列单片机系统原理与设计[M].苏凯,刘国庆,陈国平编著.北京:治金工业出版社,2003
[19] 单片机原理及应用[M].刘大茂主编. 上海:上海交通大学出版社,2001 [20] MCS-51单片机原理及使用技术[M].张振荣主编.北京:人民邮电大学出版社,2000 [21] 单片机原理及应用[M]. 李建忠编著. 西安:西安电子科技大学出版,2002
26
JMP LLL2
LLL1: MOV A,TL0 ;检测滴速是否处于警戒范围内 CLR C
SUBB A,22H ;22H为保存滴速最大警戒值单元 JNC WARN ;滴速大于最大警戒值,则报警 JMP LLL2 CLR C MOV SUBB JC MOV LLL2: CALL CALL MOV A,20H
SUBB A,21H JZ MOV PUSH MUL MOV MOV JZ MOV JUDG: POP JC FOR : MOV START2: MOV MOV A,TL0
A,#23H ;23H为保存滴速最小警戒值单元 WARN ;滴速小于最小警戒值,则报警 20H,TL0
S_BINBCD ;将滴速数值转化为BCD码,以供显示 DISP ;调用显示子程序,显示滴速实际值 ;21H为保存滴速设定值单元 START ;实际滴速=设定滴速,则返回
B,#m ;调入步进系数m,m反映了滴速差与步进 ;电机转动步数之间的倍数关系 PSW A,B
R4,A ;保存乘积的低8位 A,B
JUDG ;如果高8位为0,即步数小于或等于255,;则转步进电机正反转判断
R4,#255 ;如果高8位不为0,即步数大于255, ;则设定本监控周期最大转动步数为255 PSW
;如果C=1,则N实〈 N设
,控制步进电机反转
R0,#00H ;否则C=0,正转,正转取码指针初值 ;取码指针载入A DPTR,#BU_TABLE ;数据指针指到BU-TABLE
27
REV A,R0
MOV A,@a+BU-TABLE ;至BU-TABLE取值 JZ FOR ;取到结束码,跳至FOR CPL A
MOV P2,A ;将取到的码输出到P2口 CALL DELAY ;20毫秒延时(速度) INC R0 ;取码指针加1,取下一个码 DJNZ R4,START2 JMP START
REV: MOV R0,#05H ;反转取码指针初值 START3: MOV A,R0
MOV DPTR,#BU_TABLE MOV A,@A+DPTR
JZ REV ;取到结束码00H,则跳至REN CPL A MOV P2,A
CALL DELAY ;延时20毫秒 INC R0
DJNZ R4,START3 ;未走完步数,则继续 JMP START
********************步进电机控制程序***********************
#include
phase_3=P1^2;
sbit phase_4=P2^3; /*对P1口位操作进行定义*/
void stepping_motors(void) interrupt 1 /*定时器中断子程序,控制步进电机转动速度*/ { switch(pules)
28
{case 0:
{ phase_1=1; /*步进电机的第一相通电,其余相断电*/ phase_2=1; phase_3=0; phase_4=0;
pulse =1; /*保证下次中断程序执行case 1*/
}
break; case 1:
{ phase_1=0
phase_2=1; /*步进电机的第二相通电,其余相断电*/ phase_3=1; phase_4=0;
pulse =2; /*保证下次中断程序执行case 2*/
} break; case 1:
{ phase_1=0 phase_2=0;
phase_3=1; /*步进电机的第三相通电,其余相断电*/ phase_4=1;
pulse =3; /*保证下次中断程序执行case 3*/
}
break;
case 3: { phase_1=1; phase_2=0; phase_3=0;
phase_4=1; /*步进电机第四相通电,其余想断电*/ pulse =0; /*保证下次中断程序执行 case 0*/ } break;
29
}
th0=-(20000/256);
tl0=-(20000%6); /*重载定时器0的时间常数*/ }
void main(void) { pluse=0;
tmod=0x11; /*定时器0和1均工作在方试1*/ th0=-(20000/256); tl0=-(20000%6); et0=1; ea=1; tr0=1; while(1)
{ ; } }
***********************键盘显示程序****************************
Z8279 EQU 08701H ;8279 状态/命令口地址 D8279 EQU 08700H ;8279 数据口地址 LEDMOD EQU 10H ;右端输入八位字符显示
;译码方式,双键互锁
LEDFEQ EQU 39H ;设置分频系数为25,产生100KHz扫描频率 LEDCLS EQU 0D1H ;清除
LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址 KEY: PUSH ACC ;保护现场 PUSH PSW JNB INT0,$ AJMP START ORG 0003H START:
MOV SP,#60H
30