完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include #include"12864LCD.h" #include"code.h"
#define CHP0 //继电器通道选择 ***it REVP=P1^0; //***itG0=P1^4;//通道1增益选择 //***it G1=P1^5; //***itF1=P1^6;//有功功率输出 //***it F2=P1^7; ***it B1=P1^0; ***it B2=P1^1; ***it B3=P1^2; //***it B4=P1^3; ***it B5=P1^4; ***it B6=P1^5; ***it B7=P1^6; ***it B8=P1^7;
uint N=0;//脉冲计数值 uint M=0;//T1中断计数值 uint temp=0;//2秒内脉冲数 uint temp1=0;//2秒内脉冲数 uint temp2=0;//2秒内脉冲数 uint temp3=0;//2秒内脉冲数 uint temp4=0;//2秒内脉冲数 uint temp5=0;//2秒内脉冲数 uint temp6=0;//2秒内脉冲数 uint temp7=0;//2秒内脉冲数
uint Fq=0;//CF频率 uinttab_pow[8];//8路功率 uchar c ; uchar d; //***it CF=P1^3;
/******定时器/计数器初始化********/ void Inittimer() { TMOD=0x15;//0001 0101设置方式1,计数器0,定时器1 TH1=0x3c;//定时初值装载,50ms TL1=0xb0; TCON=0X51;//0101 0001计数器0下降沿触发 IE=0X89;//1000 1001开总中断、外部中断0、定时中断1 } /**********显示函数***********/ voiddisp_power(uchar i) //显示第i路功率,1<=i<=8 { uchar k; uint ge,shi,bai,qian; switch (i) { case 1:k=2; break; case 2:k=4; break; case 3:k=6; break;
default: break; } qian=tab_pow[i-1]/1000; bai =(tab_pow[i-1]%1000)/100; shi =((tab_pow[i-1]%1000)%100)/10; ge =((tab_pow[i-1]%1000)%100)%10; Display_FULL(1,0,6*16,(2));//选屏,页,列,字数 Display_FULL(2,0,0*16,(3));//选屏,页,列,字数
Display_FULL(1,2,4*16,(4));//选屏,页,列,字数 Display_FULL(1,2,5*16,(7));//选屏,页,列,字数
Display_FULL(1,4,4*16,(5));//选屏,页,列,字数 Display_FULL(1,4,5*16,(7));//选屏,页,列,字数
Display_FULL(1,6,4*16,(6));//选屏,页,列,字数 Display_FULL(1,6,5*16,(7));//选屏,页,列,字数
Display_HALF(2,k,1*8,qian); Display_HALF(2,k,2*8,bai); Display_HALF(2,k,3*8,shi); Display_HALF(2,k,4*8,ge); } /******主函数**********/ void main() { uchar i; CH=0XFF;//关闭所有通道 InitLCD(); Display_PIC(&tab_start[0]);//开机画面 delay();//延时5s ClearScreen(0); CH=0X01;//打开通道1 InitTimer();//初始化定时器 while(1) { for(i=1;i<=3;i++) { disp_power(i); } } } /*******终端服务子程序******/ void Int0()interrupt 0 using 1 { N++;//计数脉冲数
}
void Timer1()interrupt 3 using 2 { TH1=0x3c;//定时初值重装,50ms TL1=0xb0; M++; if (B1==0) { temp=0; temp1=0; temp2=0; temp3=0;
}
if(M==40)//计时2秒到了? { //temp=N;//读取2秒内脉冲数 if (P0==0X01) {temp=temp+N; N=0;//清零 M=0; Fq=temp/2+(temp%2);//计算频率 tab_pow[c]=Fq;//保存各路功率值 } if (P0==0X02) {//temp=0; temp1=temp1+N; N=0;//清零 M=0; Fq=temp1/2+(temp1%2);//计算频率 tab_pow[1]=Fq;//保存各路功率值 } } if (P0==0X04) {//temp=0; temp2=temp2+N; N=0;//清零 M=0; Fq=temp2/2+(temp2%2);//计算频率 tab_pow[2]=Fq;//保存各路功率值 } } c++; if(c==3) { c=0; } CH=(0x01< }
}
|
|
相关推荐
1个回答
|
|
我是在学习汇编,C语言不是很了解,但是流程还是了解,第一你的这个代码是抄的还是自己写的,第二,你的仿真电路的接线是否正常,比如高电平是否为高。我碰到过仿真无效,代码是网上下载的,因给供电出现错误,造成不能工作,低电平时为蓝色,高电平为红色,无效为灰色。
|
|
|
|
只有小组成员才能发言,加入小组>>
12182 浏览 2 评论
4503 浏览 3 评论
3753 浏览 5 评论
9765 浏览 47 评论
4594 浏览 9 评论
747浏览 0评论
557浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 20:51 , Processed in 0.528546 second(s), Total 55, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号