电气控制课程报告

上传人:新** 文档编号:513888346 上传时间:2023-07-06 格式:DOC 页数:15 大小:1,004.50KB
返回 下载 相关 举报
电气控制课程报告_第1页
第1页 / 共15页
电气控制课程报告_第2页
第2页 / 共15页
电气控制课程报告_第3页
第3页 / 共15页
电气控制课程报告_第4页
第4页 / 共15页
电气控制课程报告_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《电气控制课程报告》由会员分享,可在线阅读,更多相关《电气控制课程报告(15页珍藏版)》请在金锄头文库上搜索。

1、 . 附录一3.3电路图该电路图主要由STC89C52RC单片机、单片机最小系统上的4*4矩阵键盘和4位八段数码管、用于多机通信的MAX485E芯片以及4位拨码开关。位于电路图最下面的485芯片的7、6引脚接另一系统中485芯片的7、6引脚。附录二:3.3.2 元件明细表 元件数量备注拨码开关1DIP8104电容8105电容8103电容8120欧姆电阻21K欧姆电阻8MAX485ECPA1DIP8封装,maxim 公司的芯片双绞线2米 STC89C52单片机最小系统实验箱1含数码管、矩阵键盘、发光二极管附录三:系统实现程序清单:Main函数:#include typedef.h#include

2、 key.h#include display.h#include uart.h#include delay.h#include ModeOne_Send.h#include ModeTwo_Receive.h#define PORT_MODE P0/P0.4-P0.7sbit re_ta=P37;/0:接收;1:发送u8 GetMode(void);void RECEIVE_CODE(void);void M_RECEIVE_CODE(void);volatile u8 MODE;/变量定义void main()EA=0;Variable_Init();display_init(); UART

3、_init();REN = 1; /串口允许接收EA=0;while( !(MODE=GetMode() )PORT_BYTESEC=0;PORT_SEGSEC=0; EA=1;/开中断while(1) switch(MODE)case 1:re_ta=1;SENE_CODE();delay_ms(100);/单发break;case 2:re_ta=0;RECEIVE_CODE();/单收break;case 3:re_ta=1;M_Send(); MODE=2; / 多发break; case 4:re_ta=0;M_Receive(); /多收 break;default: break;

4、 u8 GetMode(void)u8 temp;PORT_MODE|=0xf0;delay_ms(1);temp=PORT_MODE;temp&=0xf0;switch(temp)case 0x70:return 1; /发送break;case 0xb0:return 2; /接收break;case 0xd0: return 3; /单发多收break;case 0xe0:return 4;break;default:return 0;延时模块:#include delay.hvoid delay_ms(u16 ms) u16 i,j; for(i=ms;i0;i-) for(j=110

5、;j0;j-);显示模块:#include display.h#include delay.h#include reg52.hu8 num4=0;static u8 * numPointer = num;extern volatile u8 Num_Count;void display_init() TMOD = TMOD | 0x01; TH0 = 45536/256; TL0 = 45536%256; EA = 1; ET0 = 1; TR0 = 1;void display(u8 pos,u8 dat) if(pos = 0) num0 = dat; else if(pos = 1) n

6、um1 = dat; else if(pos = 2) num2 = dat; else if(pos = 3) num3 = dat;u8 getBDisNum() u8 disNum = num2 * 10 + num3; return disNum;u8 getFDisNum()u8 disNum= num0 *10 + num1;return disNum;void Timer0_Server()interrupt 1 ET0 = 0; TH0 = 45536/256; TL0 = 45536%256; PORT_BYTESEC = PORT_BYTESEC | 0x0f; PORT_

7、SEGSEC = tablenum0; PORT_BYTESEC = PORT_BYTESEC & 0xfe; delay_ms(1); if(Num_Count1) PORT_BYTESEC = PORT_BYTESEC | 0x0f; PORT_SEGSEC = tablenum1; PORT_BYTESEC = PORT_BYTESEC & 0xfd; delay_ms(1); if(Num_Count2) PORT_BYTESEC = PORT_BYTESEC | 0x0f;PORT_SEGSEC = tablenum2; PORT_BYTESEC = PORT_BYTESEC & 0

8、xfb; delay_ms(1); if(Num_Count3) PORT_BYTESEC = PORT_BYTESEC | 0x0f; PORT_SEGSEC = tablenum3; PORT_BYTESEC = PORT_BYTESEC & 0xf7; delay_ms(1); ET0 = 1;按键模块:#include key.h#include delay.hsbit sound=P35;/蜂鸣器引脚/*-keyxy : 判定硬件编号输入参数:xx :4位二进制;-*/u8 keyxy(u8 xx)u8 ans;switch(xx)case 0x07:ans=3;break;case

9、 0x0b:ans=2;break;case 0x0d:ans=1;break;case 0x0e:ans=0;break;return ans;/*-lzkeyscan : 矩阵键盘扫描返回值 :0-15-*/u8 lzkeyscan(void)u8 h=10,l=10,s=ERROR,i,j,a,b16;PORT_KEY=0x0f;while(PORT_KEY=0x0f);delay_ms(10);/去抖if(PORT_KEY!=0x0f)h=keyxy(PORT_KEY);PORT_KEY=0xf0;l=keyxy(PORT_KEY/16);s=4*h+l;for(i=0;i200;i+

10、) /让P3.5引脚电平不断取反输出音频 sound=0; a=15; while(a-); sound=1; a=15; while(a-);/延时return s;模式一即主从机之间单向通信:#include ModeOne_Send.h#include key.h#include uart.hvolatile u8 Num_Count=0;/用户变量extern u8 num4;/外部变量extern u8 slaver_flag;extern u8 rec_flag;void SENE_CODE(void)u8 key; key=lzkeyscan(); +Num_Count;if(N

11、um_Count4) Num_Count=4; switch(key)/矩阵键盘按键数值case 0: movenum(Num_Count); num0=0;break;case 1: movenum(Num_Count);num0=1;break;case 2: movenum(Num_Count);num0=2;break;case 3: movenum(Num_Count);num0=3; break;case 4: movenum(Num_Count);num0=4;break;case 5: movenum(Num_Count);num0=5;break;case 6: movenum(Num_Count);num0=6;break;case 7: movenum(Num_Count);num0=7;break;case 12: movenum(Num_Count);num0=8;break;case 13: movenum(Num_Count);num0=9;break;case

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号