ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:20.25KB ,
资源ID:2250376      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2250376.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机主程序.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机主程序.docx

1、单片机主程序一、程序的预处理和外部变量、函数定义#include “at89x52.h”#include#include#include#define uchar unsigned char#define uint unsigned int#define nop _nop_() /*定义空操作指令*/#define maxvolt 300#define minvolt 5#define minfre 0#define maxfre 4000#define UM 300#define IM 2#define fc 12000#define KP 0.2#define KI 25#define K

2、D 0#define COM8155 XBYTE0x7FF8#define PA XBYTE0x7FF9#define PB XBYTE0x7FFA#define R0 XBYTE0Xdf00#define R1 XBYTE0Xdf01#define R2 XBYTE0Xdf02#define R3 XBYTE0Xdf03#define R4 XBYTE0Xdf04#define R5 XBYTE0Xdf05#define R14 XBYTE0Xdf0E#define R15 XBYTE0Xdf0Fsbit SCL=P34; /*24C01 SCL接脚=89C52 T0 P3.4*/sbit

3、SDA=P35; /*24C01 SDA接脚=89C52 T1 P3.5*/sbit RST=P10;bit FLAG0=0,wuxiao=0,CHF=0,CHA=0,exit; /*设定位标号FLAG0=1键盘扫描回应*/Char ptr=0,ptr1=0; /*PTR键盘扫描指标,ptr1显示器扫描指标*/Char a1=0,b1=100; /*宣告变数a1为TIMER0的中断次数,ptr为TIMER1扫描数码管指标*/char ini6=0x40,0x5A,0x2c,0x02,0x00,0x00;/放置初始化数据char con6=0xcd,0xcc,0x06,0x80,0x80,0x8

4、0;/放置控制数据static const char tab16=0x01,0x02,0x03,0x0c, /*键盘码00,01,02,03,*/0x04,0x05,0x06,0x0d, /*键盘码04,05,06,07,*/0x07,0x08,0x09,0x0e, /*键盘码08,09,0a,0b,*/0x0a,0x00,0x0b,0x0f; /*键盘码0c,0d,0e,0f*/static const char duanxuan17=0x3F,0x06,0x5b,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71

5、,0x00;char lia=0,lu=0,dot,weishu=0;char dispel8; /显示值存放阵列char bufdata9;char bufuart6; /串口接收值存放列阵float vdataset=220;float vdata3=220,220,220;void delay (uint value) /延时子程序while(value!=0)value-;/10US延时void tserial(void); /串口serial发送子程序void rserial(void); /串口serial接收子程序void chvolt(void); /改变输出电压幅值子程序vo

6、id chfre(void); /改变输出电压频率子程序void xch(void); /宣告按键存放/显示器阵列disple右键滚入子程序二、主程序清单main() /*主程序*/ char I; TMOD=0X21; /*TIMER0工作在方式MODE1,16位定时器*/ /*TIMER1工作在MODE2,自动重新装载模式*/ /*方式寄存器TMOD */ /* 定时器1 定时器1 */ /*GATEC/TM1M0GATEC/TM1M0*/ /* */TH0=(65536-3000)/256; /*设定每隔3000us中断扫描一次数码管*/TL0=(65536-3000)%256; TR0

7、=1; /*启动TEMER0*/TH1=(65536-9200)/256; /*设TIMER1计数值*/TL1=(65536-9200)%256;TR1=1; /启动TEMER1/显示初始化disple7=0x73; /最左的显示器显示P,表示处于停止态for(i=2;i=6;i+)displei=0x00; /第3-7位显示器灭disple1=0x3e; /初态第二位显示器显示U,表示电压disple0=0x06; /初态第一位显示器显示1,表示第一相P2_0=1;P1=0XF0; /P1低4位为全0,高4位写入1COM8155=3; /*8155初始化,设定PA、PB工作在基本输出方式*/

8、RST=0; /进行4828初始化;R0=imi0;R1=imi1;R2=imi2;R3=imi3;R4=imi4;R5=imi5;R14=0; /R0-R5装入初始化寄存器/向8248写控制数据R0=con0;R1=con1;R2=con2;R3=con3;R4=con4;R5=con5;R15=0; /RO-R5装入控制寄存器IP=0x0b; /*中断优先级寄存器IP */ /* PT2PSPT1PX1PT0PX0*/IE=0X9f; /*7 6 5 43 2 1 0*/ /*EA ET2ESET1EX1ET0EX0*/ While(1); /等中断三、故障中断处理程序Void servi

9、ce_int0() interrupt 0 using 0 /*外部中断0,为故障中断*/ int i;RST=0;for(i=0;i=7;i+)displei=0x31; /显示故障信息四、键盘中断处理程序Void external_int1()interrupt2 using 2/键盘中断,进行按键命令处理char a1=0xf7,i,m,xiantai; /*a1=0XF7行扫描初值,I行*/bit flag1=0;IE&=OXFB;Delay(1000); /延时10msFLAG0=0; /*设按键回应旗号为0,键盘扫描计数指标为0*/ptr=0;if(P3_2=0) /*按键仍闭合则

10、进行键处理*/ For(i=0;i10x80; /*高位补1*/ if(FLAG0=0)return; switch(tabptr)/*是键盘扫描计数器指标至TAB取到的键盘码*/ case 0x0a: /*是否是第一次按“START”,是则启动SA4828的SPWM输出,最左的显示器显示D,表示SA4828在运行*/ if(flag1=0)RST=1;flag1=1;dispel7=duanxuan0x0D;break; /*跳出此循环*/case 0x0b: /*是否按 “STOP”是则停止SA4828的SPWM输出*/ RST=0; flag1=0; dispel7=0x73;/最左的显

11、示器显示P,表示处于停止态 break; /*跳出此循环*/case 0x0e: /*是否按“调压”,是则进行相应处理*/ if(CHF=0) /*调压与调频互锁,当调频时,按调压键无效*/ If(CHA=0) CHA=1; for(i=2;i=6;i+)dispeli=0x00; /*进入调压状态2位-6位显示器起初为全灭*/ xiantai=disple7; disple1=0x3e; dispel0=0x00;else if(weishu!=0)chvolt();/进行改变电压控制数据的处理; If(wuxiao=1)for(i=2;i=6;i+)dispeli=0;/调用显示“0000

12、0” for(i=0;i10;i+)delay(10000);/*延时1秒*/ while(m=p1);delay(1000);weishu=0;dot=0;disple7=xiantai;if(lia=0)disple1=0x3e;else disple1=duanxuan0x0A;disple0=duanxuanlu+1;CHA=0;If(wuxiao=1)wuxiao=0;return;Break; /*跳出此循环*/ case 0x0f: /*是否按“调频”,是则进行相应处理*/ if(CHA=0) /*调压与调频互锁,当调压时,按调频键无效*/ if(CHF=0) CHF=1; for(i=2;i=6;i+)displei=0x00; /*进入调频状态2位-6位显示器起初为全灭*/ xiantai=disple7;disple7=duanxuan0x0A;disple1=duanxuan0x0F;disple0=0x00;else if(weishu!=0)chfre(); /进行改变频率控制数据的处理; if(wuxiao=1)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1