计算器程序.docx
- 文档编号:5447470
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:20
- 大小:16.92KB
计算器程序.docx
《计算器程序.docx》由会员分享,可在线阅读,更多相关《计算器程序.docx(20页珍藏版)》请在冰豆网上搜索。
计算器程序
1、GPIOLEDDlg.cpp程序代码
m_hDev=CreateFile(_T("GIO1:
"),GENERIC_WRITE,0,NUL
L,OPEN_EXISTING,0,0);
if(m_hDev==INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("打开设备失败"));
}
m_hDev1=CreateFile(_T("LED2:
"),GENERIC_WRITE,0,NU
LL,OPEN_EXISTING,0,0);
if(m_hDev==INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("打开设备失败"));
}
returnTRUE;//returnTRUEunlessyousetthefocustoa
control
}
voidCGPIOLEDDlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
//设置LED灯亮
KillTimer
(1);
KillTimer
(2);
KillTimer(3);
KillTimer(4);
m_bValue=FALSE;
WriteFile(m_hDev,&m_bValue,4,&m_dwBytes,NULL);
}
voidCGPIOLEDDlg:
:
OnButton2()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
//设置LED灯熄灭
KillTimer
(1);
KillTimer
(2);
KillTimer(3);
KillTimer(4);
m_bValue=TRUE;
WriteFile(m_hDev,&m_bValue,4,&m_dwBytes,NULL);
}
voidCGPIOLEDDlg:
:
OnButton3()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_cla=0;
m_bValue=FALSE;
KillTimer
(2);
KillTimer(3);
KillTimer(4);
SetTimer(1,1000,NULL);
}
voidCGPIOLEDDlg:
:
OnTimer(UINTnIDEvent)
{
//TODO:
Addyourmessagehandlercodehereand/orcall
default
if(nIDEvent==1)
{
//设置LED闪烁
m_cla=m_cla+1;
if(m_bValue==FALSE)
{
if(m_cla==m_s1)
{
m_bValue=TRUE;
m_cla=0;
}
}
if(m_bValue==TRUE)
{
if(m_cla==m_s2)
{
m_bValue=FALSE;
m_cla=0;
}
}
WriteFile(m_hDev,&m_bValue,4,&m_dwBytes,NULL);
}
if(nIDEvent==2)
{
//LED的循环
BYTEdata2[4]={0,0,0,0};
DWORDbytes;
m_cla=m_cla+1;
if(m_bValue==1)
{
if(m_cla==m_s1)
{
WriteFile(m_hDev1,data2,4,&bytes,NULL);
m_cla=0;
m_bValue=0;
}
}
else
{
if(m_cla==m_s1)
{
WriteFile(m_hDev1,data,4,&bytes,NULL);
m_cla=0;
m_bValue=1;
}
}
}
if(nIDEvent==3)
{
//LED的单闪
BYTEdata2[4]={data[0],0x00,0x00,0x00};
BYTEdata3[4]={0x00,data[1],0x00,0x00};
BYTEdata4[4]={0x00,0x00,data[2],0x00};
BYTEdata5[4]={0x00,0x00,0x00,data[3]};
DWORDbytes;
m_cla=m_cla+1;
if(m_cla==m_s1)
{
if(i>3)
{
i=0;
}
if(i==0)
{
WriteFile(m_hDev1,data2,4,&bytes,NULL);
}
if(i==1)
{
WriteFile(m_hDev1,data3,4,&bytes,NULL);
}
if(i==2)
{
WriteFile(m_hDev1,data4,4,&bytes,NULL);
}
if(i==3)
{
WriteFile(m_hDev1,data5,4,&bytes,NULL);
}
i=i+1;
m_cla=0;
}
}
if(nIDEvent==4)
{
//LED的右移
BYTEa;
DWORDbytes;
m_cla=m_cla+1;
if(m_cla==m_s1)
{
a=data[3];
data[3]=data[2];
data[2]=data[1];
data[1]=data[0];
data[0]=a;
WriteFile(m_hDev1,data,4,&bytes,NULL);
m_cla=0;
}
}
CDialog:
:
OnTimer(nIDEvent);
}
voidCGPIOLEDDlg:
:
OnButton4()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
BOOLb1,b2;
UINTq;
UINTval1=GetDlgItemInt(IDC_EDIT1,&b1,FALSE);
UINTval2=GetDlgItemInt(IDC_EDIT2,&b2,FALSE);
m_s1=0;
m_s2=0;
data[0]=0;
data[1]=0;
data[2]=0;
data[3]=0;
//获取Edit框的内容
memset(data,0,2);
if(b1)
{
inti1,n1;
charstr1[16];
n1=sprintf(str1,"%d",val1);
n1=n1>2?
2:
n1;
for(i1=0;i1 { q=0; q=str1[i1]-'0'; data[i1+2]=ledfont[q]; m_s1=m_s1*10+q; } } memset(data,0,2); if(b2) { inti2,n2; charstr2[16]; n2=sprintf(str2,"%d",val2); n2=n2>2? 2: n2; for(i2=0;i2 { q=0; q=str2[i2]-'0'; data[i2]=ledfont[q]; m_s2=m_s2*10+q; } } } voidCGPIOLEDDlg: : OnButton5() { //TODO: Addyourcontrolnotificationhandlercodehere //数码管显示数据 KillTimer (2); KillTimer(3); KillTimer(4); DWORDbytes; WriteFile(m_hDev1,data,4,&bytes,NULL); } voidCGPIOLEDDlg: : OnButton6() { //TODO: Addyourcontrolnotificationhandlercodehere BOOLb1,b2; UINTq; UINTval3=GetDlgItemInt(IDC_EDIT3,&b1,FALSE); UINTval4=GetDlgItemInt(IDC_EDIT4,&b2,FALSE); m_s1=0; m_s2=0; data[0]=0; data[1]=0; data[2]=0; data[3]=0; //获取Edit框的内容 memset(data,0,4); if(b1) { inti1,n1; charstr1[16]; n1=sprintf(str1,"%d",val3); n1=n1>4? 4: n1; for(i1=0;i1 { q=0; q=str1[i1]-'0'; data[i1]=ledfont[q]; } } if(b2) { inti2,n2; charstr2[16]; n2=sprintf(str2,"%d",val4); n2=n2>4? 4: n2; for(i2=0;i2 { q=0; q=str2[i2]-'0'; m_s1=m_s1*10+q; } } } voidCGPIOLEDDlg: : OnButton7() { //TODO: Addyourcontrolnotificationhandlercodehere //数码管闪烁效果 DWORDbytes; m_bValue=1; m_cla=0; WriteFile(m_hDev1,data,4,&bytes,NULL); KillTimer (1); KillTimer(3); KillTimer(4); SetTimer(2,1000,NULL); } voidCGPIOLEDDlg: : OnButton10() { //TODO: Addyourcontrolnotificationhandlercodehere //加法 BOOLb; data[0]=0; data[1]=0; data[2]=0; data[3]=0; UINTval=GetDlgItemInt(IDC_EDIT5,&b,FALSE);//获取 EDIT框的内容 memset(data,0,4); if(b) { inti,n,q; charstr[6]={0,0,0,0,0,0}; n=sprintf(str,"%d",val); n=n>4? 4: n; if(str[3]==0) { q=1; } if(str[2]==0) { q=2; } if(str[1]==0) { q=3; } for(i=q;i { data[i]=str[i-q]-'0'; } } ii=1; } voidCGPIOLEDDlg: : OnButton11() { //TODO: Addyourcontrolnotificationhandlercodehere //减法 BOOLb; data[0]=0; data[1]=0; data[2]=0; data[3]=0; UINTval=GetDlgItemInt(IDC_EDIT5,&b,FALSE);//获取 EDIT框的内容 memset(data,0,4); if(b) { inti,n,q; charstr[6]={0,0,0,0,0,0}; n=sprintf(str,"%d",val); n=n>4? 4: n; if(str[3]==0) { q=1; } if(str[2]==0) { q=2; } if(str[1]==0) { q=3; } for(i=q;i { data[i]=str[i-q]-'0'; } } ii=2; } voidCGPIOLEDDlg: : OnButton12() { //TODO: Addyourcontrolnotificationhandlercodehere //乘法 BOOLb; data[0]=0; data[1]=0; data[2]=0; data[3]=0; UINTval=GetDlgItemInt(IDC_EDIT5,&b,FALSE);//获取 EDIT框的内容 memset(data,0,4); if(b) { inti,n,q; charstr[6]={0,0,0,0,0,0}; n=sprintf(str,"%d",val); n=n>4? 4: n; if(str[3]==0) { q=1; } if(str[2]==0) { q=2; } if(str[1]==0) { q=3; } for(i=q;i { data[i]=str[i-q]-'0'; } } ii=3; } voidCGPIOLEDDlg: : OnButton13() { //TODO: Addyourcontrolnotificationhandlercodehere //除法 BOOLb; data[0]=0; data[1]=0; data[2]=0; data[3]=0; UINTval=GetDlgItemInt(IDC_EDIT5,&b,FALSE);//获取 EDIT框的内容 memset(data,0,4); if(b) { inti,n,q; charstr[6]={0,0,0,0,0,0}; n=sprintf(str,"%d",val); n=n>4? 4: n; if(str[3]==0) { q=1; } if(str[2]==0) { q=2; } if(str[1]==0) { q=3; } for(i=q;i { data[i]=str[i-q]-'0'; } } ii=4; } voidCGPIOLEDDlg: : OnButton14() { //TODO: Addyourcontrolnotificationhandlercodehere //等式 BOOLb; BYTEdata2[4]={0,0,0,0}; DWORDbytes; intm,m1,m2,m3,m4; KillTimer (1); KillTimer (2); KillTimer(3); KillTimer(4); UINTval=GetDlgItemInt(IDC_EDIT6,&b,FALSE);//获取 EDIT框的内容 memset(data2,0,4); if(b) { inti,n,q; charstr[6]={0,0,0,0,0,0}; n=sprintf(str,"%d",val); n=n>4? 4: n; if(str[3]==0) { q=1; } if(str[2]==0) { q=2; } if(str[1]==0) { q=3; } for(i=q;i { data2[i]=str[i-q]-'0'; } } if(ii==1) { m=data[0]*1000+data[1]*100+data[2]*10+data[3]+data2[0]*1 000+data2[1]*100+data2[2]*10+data2[3]; if(m>9999) { m=m-m/10000*10000; } m1=m/1000; m2=(m-m1*1000)/100; m3=(m-m1*1000-m2*100)/10; m4=m-m1*1000-m2*100-m3*10; } if(ii==2) { m=data[0]*1000+data[1]*100+data[2]*10+data[3]-data2[0]*1 000-data2[1]*100-data2[2]*10-data2[3]; if(m>9999) { m=m-m/10000*10000; } m1=m/1000; m2=(m-m1*1000)/100; m3=(m-m1*1000-m2*100)/10; m4=m-m1*1000-m2*100-m3*10; } if(ii==3) { m=(data[0]*1000+data[1]*100+data[2]*10+data[3])*(data2[0] *1000+data2[1]*100+data2[2]*10+data2[3]); if(m>9999) { m=m-m/10000*10000; } m1=m/1000; m2=(m-m1*1000)/100; m3=(m-m1*1000-m2*100)/10; m4=m-m1*1000-m2*100-m3*10; } if(ii==4) { m=(data[0]*1000+data[1]*100+data[2]*10+data[3])/(data2[0] *1000+data2[1]*100+data2[2]*10+data2[3]); if(m>9999) { m=m-m/10000*10000; } m1=m/1000; m2=(m-m1*1000)/100; m3=(m-m1*1000-m2*100)/10; m4=m-m1*1000-m2*100-m3*10; } data[0]=ledfont[m1]; data[1]=ledfont[m2]; data[2]=ledfont[m3]; data[3]=ledfont[m4]; WriteFile(m_hDev1,data,4,&bytes,NULL); SetDlgItemInt(IDC_EDIT7,m); } voidCGPIOLEDDlg: : OnButton9() { //TODO: Addyourcontrolnotificationhandlercodehere DWORDbytes; m_bValue=1; m_cla=0; WriteFile(m_hDev1,data,4,&bytes,NULL); KillTimer (1); KillTimer (2); KillTimer(4); SetTimer(3,1000,NULL); } voidCGPIOLEDDlg: : OnButton8() { //TODO: Addyourcontrolnotificationhandlercodehere DWORDbytes; m_bValue=1; m_cla=0; WriteFile(m_hDev1,data,4,&bytes,NULL); KillTimer (1); KillTimer (2); KillTimer(3); SetTimer(4,1000,NULL); } 2、GPIOLEDDlg.h程序代码 constBYTE ledfont[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; classCDigiDlg: publicCDialog { //Construction public: CGPIOLEDDlg(CWnd*pParent=NULL);//standard constructor HANDLEm_hDev;//声明一个句柄用来接收WriteFile的返 回值 BOOLm_bValue;//m-bValue是一个二进制的变量用来控 制LED的状态 DWORDm_dwBytes;//声明了一个双字类型的变量用作 WriteFile的参数 UINTm_cla;//计数器的计数时间参数 BYTEdata[4];//文本框输入数据 BYTEdata1[4];//LED时间控制文本框输入数据 HANDLEm_hDev1;//声明一个句柄用来接收CreateFile 的返回值 DWORDm_dwWrittenBytes;//声明了一个双字类型的变 量用作CreateFile的参数 UINTm_s1;//亮灯时间 UINTm_s2;//灭灯时间 UINTi;//循环计数 UINTii;//记录运算类型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算器 程序