第36节:带数码管显示的加法简易计算器
时间:11-22
来源:互联网
点击:
- her=ulSource;//第二个运算数默认等于原始数
- ucDisplayUpdate=1;//刷新显示窗口
- break;
- case 2: //在第二个参与运算数据的窗口下
- ulResult=ulSource+ulOther;//连加
- ulSource=ulResult; //下一次运算的原始数据默认为当前运算结果,方便连加功能
- ucWd=1; //切换到第一个窗口
- ucDisplayUpdate=1;//刷新显示窗口
- break;
- }
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 14:// 14号键 等于号按键对应朱兆祺学习板的S14键
- switch(ucWd)
- {
- case 1: //在原始数据和运算结果的窗口下
- switch(ucOperator)//根据不同的运算符号进行不同的操作
- {
- case 0://无运算符号
- break;
- case 1://加法
- ulResult=ulSource+ulOther;//连加
- ulSource=ulResult; //下一次运算的原始数据默认为当前运算结果,方便连加功能
- ucDisplayUpdate=1;//刷新显示窗口
- break;
- case 2://减法本程序没有减法功能,如果读者想增加减法程序,可以按键这个框架添加下去
- break;
- }
- break;
- case 2: //在第二个参与运算数据的窗口下
- switch(ucOperator)//根据不同的运算符号进行不同的操作
- {
- case 1://加法
- ulResult=ulSource+ulOther;//连加
- ulSource=ulResult; //下一次运算的原始数据默认为当前运算结果,方便连加功能
- ucWd=1; //切换到第一个窗口
- ucDisplayUpdate=1;//刷新显示窗口
- break;
- case 2://减法本程序没有减法功能,如果读者想增加减法程序,可以按键这个框架添加下去
- break;
- }
- break;
- }
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 15:// 15号键 对应朱兆祺学习板的S15键
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 16:// 16号键 清除按键 相当于复位的功能。重新输入数据对应朱兆祺学习板的S16键
- ulSource=0;
- ulOther=0;
- ulResult=0;
- ucOperator=0;
- ucWd=1; //切换到第一个窗口
- ucDisplayUpdate=1;//刷新显示窗口
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- }
- }
- /* 注释四:
- * 此处参与运算的输入数字ucWhichKey记得用最大变量类型unsigned long,可以避免数据溢出等错误
- */
- void number_key_input(unsigned long ucWhichKey)//由于数字按键的代码相似度高,因此封装在这个函数里
- {
- switch(ucWd)
- {
- case 1: //在原始数据和运算结果的窗口下
- switch(ucOperator)//根据不同的运算符号进行不同的操作
- {
- case 0://无运算符号按键输入原始数据,比如被加输
- if(ulSource<=9999999) //最大只能输入8位数
- {
- ulSource=ulSource*10+ucWhichKey;//十进制的数值移位方法。
- }
- break;
- default://在已经按下了运算符号的情况下
- ulOther=0;//第二个运算数先清零,再输入新的数据,然后马上切换到第2个窗口下
- ulOther=ucWhichKey;
- ucWd=2; //马上切换到第二个窗口下
- break;
- }
- ucDisplayUpdate=1;//刷新显示窗口
- break;
- case 2: //在第二个参与运算数据的窗口下 按键输入第二个参与运算的数据
- if(ulOther<=9999999) //最大只能输入8位数
- {
- ulOther=ulOther*10+ucWhichKey;//十进制的数值移位方法。
- }
- ucDisplayUpdate=1;//刷新显示窗口
- break;
- }
- }
- void T0_time() interrupt 1
- {
- TF0=0;//清除中断标志
- TR0=0; //关中断
- key_scan(); //放在定时中断里的按键扫描函数
- if(uiVoiceCnt!=0)
- {
- uiVoiceCnt--; //每次进入定时中断都自减1,直到等于零为止。才停
数码管显示加法简易计算 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)