


免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/整个控制过程为先键入所要的控制角,控制角被计算成相应的触发延时时间,/并等待当单片机检测到外部中断信号。当检测到外部中断信号后启动定时器1延时相应的时间,/之后接着启动定时器0并产生发出六脉冲信号经过变换放大触发相应的晶闸管导通,以获得相应的电压#include /#include#include #define uint unsigned int #define uchar unsigned char uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0;uchar temp; uchar num; /键盘返回值 uchar jishu; uchar ge; uchar shi; uchar shijian; float dingshi; uint dingshi_1;sbit dula=P26;sbit wela=P27; /sbit A_1=P26; /sbit B_1=P27; sbit ug_1=P12; /脉冲输出引脚定义 1.2-7sbit ug_2=P13; sbit ug_3=P14; sbit ug_4=P15; sbit ug_5=P16; sbit ug_6=P17; uchar js=0; /六脉冲计数器 void init()/定时器、中断初始化函数 TMOD=0x11; EA=1; ET0=1; ET1=1; TR1=0; TR0=0; IP=0x08; /T1wei gao you xian ji IP=0x09 ?/IPH=0x01; IT0=1; /外中断0为下降沿触发 TCON中设置TH0=(65536-1667)/256;/定时时间,即脉冲宽度 TL0=(65536-1667)%256; void delay(uint z) /1ms延时 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void display(uchar shi, uchar ge)dula=1;P0=tableshi;dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delay(5);dula=1;P0=tablege;dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay(5); uchar Keyboard() P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0) jishu+;temp=P3;switch(temp)case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:num=4;break;while(temp!=0xf0)/松手检测temp=P3;temp=temp&0xf0;P3=0xfd;temp=P3;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0) jishu+;temp=P3;switch(temp)case 0xed:num=5;break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0xfb;temp=P3;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0) jishu+;temp=P3;switch(temp)case 0xeb:num=9;break;case 0xdb:num=10;break;case 0xbb:num=11;break;case 0x7b:num=12;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0; P3=0xf7;temp=P3;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0) jishu+;temp=P3;switch(temp)case 0xe7:num=13;break;case 0xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0; return num; void main() init(); EX0=1; dula=1;P0=0x3f;dula=0;P0=0xff;wela=1;P0=0xfc;wela=0;delay(5);while(1) Keyboard(); if(jishu=1)/按键一次 shiweishi=num; if(jishu=2) /按键两次 gewei ge=num; jishu=0; shijian=shi*10+ge; dingshi=(shijian+30)/360)*20; /*1000; F=50HZ,工频电源,T=20MS display(shi-1,ge-1); /*从同步电压跳跃点算起经控制角+30的延时,将+30转化为C/T1的时间常数,在同步电压跳跃点开始定时,C/T1溢出时,在中断中置入新的时间常数,其数据对应的定时时间为工频交流电的30脉宽时间,并且启动T0,在T0中断中输出6路脉冲。*/3最后进入的中断 void zhongduan() interrupt 1/定时器t0中断函数 js+; /js为6脉冲计数值,执行完该语句JS=1TH0=(65536-1667)/256; TL0=(65536-1667)%256; if(js=1) ug_6=0; ug_1=0; if(js=2) ug_1=1; ug_2=1; if(js=3) ug_1=0; ug_2=0; if(js=4) ug_2=1; ug_3=1; if(js=5) ug_2=0;ug_3=0; if(js=6) ug_3=1; ug_4=1; if(js=7) ug_3=0; ug_4=0; if(js=8) ug_4=1; ug_5=1; if(js=9) ug_4=0; ug_5=0; if(js=10) ug_5=1; ug_6=1; if(js=11) ug_5=0; ug_6=0; if(js=12) ug_6=1;ug_1=1; js=0; /2 其次进入的中断void T1_dingshi() interrupt 3 TR1=0; TH0=(65536-1667)/256;/脉宽定时时间为脉冲宽度30所对应的时间约1.667MS,其中晶振12MHZ,工频f=50HZTL0=(65536-1667)%256; TR0=1;/启动定时器0 /1首先进入的中断 同步脉冲为矩形脉冲(经变换过的)且为反向(经
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版配电房土建施工与配套设备采购一体化合同
- 2025年度政府采购协议供货及绿色采购认证合同
- 2025版新能源土地租赁合同补充协议书
- 2025版苹果产地直供与零售收购合同范本
- 2025版艺术画廊租赁管理协议
- 2025版室内门个性化设计、安装与售后服务合同
- 贵州省紫云苗族布依族自治县2025年上半年事业单位公开遴选试题含答案分析
- 2025年度环保监测系统软件升级改造变更协议
- 2025年企业员工职业规划培训承包合同
- 2025版全新农业行业劳务派遣合同试用期条款
- 五牌一图(完整版)
- 幼儿园绘本故事:《十二生肖》 课件
- DDI定向井难度系数
- 踏虎凿花的探究 详细版课件
- 激光跟踪仪使用手册
- 新媒体运营知识考核试题与答案
- 金属材料的主要性能ppt课件(完整版)
- 湖北化工集团会计核算手册
- 丽声北极星自然拼读绘本第二级 Fat Cat 课件
- 临汾热电公司机械伤害事故案例分析
- 普通高等学校毕业生登记表模板_B4_直接打印版
评论
0/150
提交评论