模拟电梯控制模拟电梯控制

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
uint x,i; for(i=0;i<6;i++) for(x=0;x<15000;x++) ; } void km() { mbz = 0 ; P0 = 0x18; delay(); P0 = 0x3c; delay(); P0 = 0x7e; delay(); P0 = 0xff; } void gm() { mbz= 1 ; P0 = 0x7e; delay(); P0 = 0x3c; delay(); P0 = 0x18;
delay(); P0 = 0x00; } void ss() { dq1 = dq1 << 1; P3_0 = 1; P3_1 = 0; delay(); delay(); switch (dq1) {
case 0x01 :{P2=0x9f;break;} case 0x02 :{P2=0x25;break;} case 0x04 :{P2=0x0d;break;} case 0x08 :{P2=0x99;break;} }
case 0x01:{mb=mb&0xfe;P3_4=1;}break; case 0x02:{mb=mb&0xfd;P3_5=1;}break; case 0x04:{mb=mb&0xfb;P3_3=1;}break; case 0x08:{mb=mb&0xf7;P3_7=1;}break; } } if((!down)&&(dq1<((0x10-dq1)&mb))) { up=1; ss(); switch (dq1) { case 0x01:{if((mb&0xfe)==0) {up=0;break;}} case 0x02:{if((mb&0xfc)==0) {up=0;break;}} case 0x04:{if((mb&0xf8)==0) {up=0;break;}} case 0x08:{up=0;break;}
如下:兼容 MCS-51 内核单片机;4KB 可在线编程 Flash 存储器,
可有效擦除/读写 1000 次;工作电压范围 4.0~5.5V;完全静态工
作:0Hz~33MHz;ROM 三级加密模式;128*8bit 内置 RAM;32 位
可控 I/O 引脚;2 个 16 位的时钟源;5 个中断源;全双工 UART 串
} } if((!up)&&((mb<dq1)&&(mb!=0))) {
down=1; xj(); switch (dq1) {
case 0x01:{if((mb&0xf7)==0){down=0;break;}}
case 0x02:{if((mb&0xf3)==0){down=0;break;}}
33mf
1
提供复位时间常数
AT89C51 芯片简介:
AT89 系列单片机是 ATMEL 公司最早推出,也是功能最简单的
一个系列,该系列都是内含 Flash 程序存储器的 MCS-51 兼容单片
机,AT89C51 就是其中一款可在线编程 ISP Flash 单片机。AT89C51
具有价格便宜、性能优良、可在线编程等特点。其具体性能参数
单片机课程设计
专业:人工智能与控制技术 班级:0691201 姓名:邸宝鑫 指导教师:王文仲、孟祥莲、孙平
哈尔滨工业大学华德应用技术学院 2007 年 12 月 XX 日
姓名:
邸宝鑫
班级:
学号:
18
课题编号:
课题名称: 模拟电梯
基本功能:模拟电梯的基本工作
点阵模拟电梯开关门动作
数码管显示轿厢所在层数
四、调试 硬件调试:
在硬件设计时考虑到本程序点阵只涉及开门关门不用考虑其 他功能这样我们只控制哪一列亮或灭就可以了,所以我们把所有 的行线都直接接到电源上,用单片机直接给地就可以控制了。
按键设计考虑到所有人的呼叫都要得到相应不能漏掉呼叫, 所以我们把按键通过与门都接到 INT0 上,用中断判断按键的按 下。 软件调试
把电梯的所有呼叫都用一个变量的低四位表示(如:一层、二 层、三层都有呼叫则标志位为:00000111),当前所在层也用一个 变量的低四位表示(如:当前在四层则标志为:00001000)通过我 们共同研究的算法模拟电梯的基本运行方式。 五、心得体会
在这次课程设计调试过程中,提示灯无法正确工作,始终保 持常量状态,经过仔细查询程序错误,并进行及时修改,完成了 提示灯工作任务。还有焊点不导通问题,有时候调试修改,会把 其中焊点或导线端碰掉。用万用表进行排查,找出不导通的焊点 区域,进行重新焊接。在不层呼叫的时候也出现过错误,有的时 候是忽略了某层呼叫,有的时候程序跑飞,在通过修改单片机引 脚进行了修改。
case 0x04:{if((mb&0xf1)==0){down=0;break;}}
case 0x08:{down=0;break;} } }
}
}
通过这次课程设计,使我对单片机应用范围了解了更多,特 别是在生活中有那么多广泛的应用。希望以后有机会能设计出自 己思想的单片机。
附录 1:(程序代码) #include "reg51.h" #define uchar unsigned char #define uint unsigned int
sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_2=P3^2; sbit P3_4=P3^4; sbit P3_5=P3^5; sbit P3_3=P3^3; sbit P3_7=P3^7; uchar mb=0,up=0,down=0,mbz=1,dq1=1; void delay() {
行接口;低功耗工作模式;看门狗计时器;两个数据指针;快速
编程特性。
三、软件设计方案
主要算法:呼叫标志变量 MB 轿厢在所在层变量 DQ 判断是否开门算法 (mb&dq1)==dq1 判断是否上升算法 (!down)&&(dq1<((0x10-dq1)&mb)) 判断是否下降算法 (!up)&&((mb<dq1)&&(mb!=0))
if((jz&0x10)==0) {
mb = mb | 0x01; P3_4=0; } if((jz&0x20)==0) { mb = mb | 0x02; P3_5=0; } if((jz&0x40)==0) { mb = mb | 0x04; P3_3=0; } if((jz&0x80)==0) { mb = mb | 0x08; P3_7=0; } if((jz&0x01)==0) mb = mb | 0x01; if((jz&0x02)==0) mb = mb | 0x02; if((jz&0x04)==0) mb = mb | 0x04; if((jz&0x08)==0) mb = mb | 0x08; }
} void xj() {
dq1 = dq1 >> 1; P3_0 = 0; P3_1 = 1; delay(); delay(); switch (dq1) {
case 0x01 :{P2=0x9f;break;} case 0x02 :{P2=0x25;break;} case 0x04 :{P2=0x0d;break;} case 0x08 :{P2=0x99;break;} } } void anjian() interrupt 0 { uchar jz; jz = P1;
void main() {
P0=0x00; EX0=1; IT0=0; P1=0xff; P3_2=1;
EA=1; P2=0x9f; if(mb!=0) while(1) {
if((mb&dq1)==dq1) {
delay(); delay(); delay(); km(); delay(); delay(); delay(); gm(); P3_0=1; P3_1=1; switch(dq1) {
1
核心控制部分
芯片
DM74LS08N
2
与门
点阵
8*8
1
显示开关门
数码管
共阳
1
显示所在层数
电池盒
4 节 1.5V
1
提供工作电压
二极管
4红1绿1黄 6
提示灯
按键
普通
8
电梯呼叫
晶振
12MHz
1
时钟控制信号
电阻
470Ω
16
限流电阻
电阻
4.7KΩ
8
上拉电阻
电阻
100Ω
1
限流电阻
ቤተ መጻሕፍቲ ባይዱ
瓷片电容
30pf
1
配合晶振工作
电解电容
按键为呼叫按钮
LED 显示呼叫层数
0691201 11
扩展功能:
成绩:
评审老师:
一、需求分析: 随着生活水平的提高,电梯在生活中的使用也变得广泛。
该设计可应用在四层楼中。通过扩展可应用在更高的楼上,为 生活节省时间带来方便。
二、硬件设计方案
硬件所用器件:
器件名称
型号
数量
功能说明
单片机
AT89C51
相关文档
最新文档