附 录
参考文献
[1]段晨东.《单片机原理及接口技术》.北京:清华大学出版社,2008 [2]周润景 郝晓霞.《传感器及检测技术》.北京:电子工业出版社,2009
[3]楼然苗 李光飞.《51系列单片机设计实例》.北京: 北京航天航空大学出版社,2006
[4]高峰.单片微型计算机原理与接口技术.北京:科学出版社,2003
[5]何立民.单片机高级教程应用与设计.北京:北京航空航天大学出版社,2000 原件清单: 元器件 电阻 电阻 电阻 独石电容 独石电容 电解电容 51单片机实验板 89C54芯片 MAX232芯片 74LS245芯片 1602 DS18B20 三极管9012 二极管IN4001 晶振 芯片座 电源座 通信插座 电源适配器 通讯电缆 微型按钮开关 数量 3 4 2 6 2 1 1 1 1 2 1 1 2 1 1 6 1 1 1 1 10 备注 1K 5.1K 8K 0.1uF 30PF 10Uf 25V PNP 11.0592MHz 三脚 5V CON232 15
实验插板 单排插针 双排插针 短路块 导线 1 若干 若干 若干 若干 程序源代码
#include
#define uchar unsigned char #define uint unsigned int uchar code table[]=\ \ //7
uchar code table1[]=\ //6 uchar code table2[]=\ //6 uchar code table10[]=\ //6 uchar code table12[]=\ //6 uchar code table9[]=\ //6 uchar code table6[]=\ //6 uchar code table7[]=\ //2 uchar code table8[]=\ //2
uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; sbit lcden=P3^4; //液晶使能端 sbit lcdrs=P3^5; //液晶数据命令选择端 sbit ds=P1^3; sbit key1=P1^0; sbit key2=P1^1; sbit key3=P1^2; sbit beep=P3^0; sbit zhushui=P3^1; sbit fangshui=P3^3; sbit key4=P3^6; sbit key5=P3^7; sbit SW1=P1^7; sbit SW2=P1^6; sbit SW3=P1^5; sbit SW4=P1^4;
uchar num,fen,l,m,n,count,flag,i,jian1,jian2,jian3,jian5,mi,pwm1=10;
16
uint temp;
float f_temp,miao;
void chushihua() { EA=1;//开总中断 EX0=1;//开外部中断0 TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%6; TH1=(65536-50000)/256; TL1=(65536-50000)%6; EA=1; ET0=1; // TR0=1;//启动定时器0 ET1=1; // TR1=1; //启动定时器1 }
void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }
/*********以下是步进电机的程序**********************************************/ void delayA(uint t)
{ uint k; while(t--) {
for(k=0; k<125; k++) { } } }
void motor_ffw() {
uchar i; uint j;
for (j=0; j<12; j++) //转1*n圈 {
17
/*if(K3==0)
{break;} */ //退出此循环程序 for (i=0; i<8; i++) //一个周期转30度 { if(key4==0) { delay(8); if(key4==0) { pwm1--;} } if(key3==0) { delay(8); if(key3==0) { pwm1++;} }
P0 = FFW[i]; //取数据
delayA(pwm1); //调节转速 } } }
/********************************************************/ /*步进电机反转
/********************************************************/ void motor_rev() {
uchar i; uint j; for (j=0; j<12; j++) //转1×n圈 { //退出此循环程序 for (i=0; i<8; i++) //一个周期转30度 { if(key4==0) { delay(8); if(key4==0) { pwm1--;}
18

