单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机二进制→十进制数转换程序.doc

单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机二进制→十进制数转换程序.doc

ID:50733792

大小:28.50 KB

页数:4页

时间:2020-03-07

单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机二进制→十进制数转换程序.doc_第1页
单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机二进制→十进制数转换程序.doc_第2页
单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机二进制→十进制数转换程序.doc_第3页
单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机二进制→十进制数转换程序.doc_第4页
资源描述:

《单片机应用技术 教学课件 作者 邱文棣 主编 任务五_设计计算机二进制→十进制数转换程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、//二进制→十进制数转换程序#include//52系列单片机头文件#defineucharunsignedchar//宏定义#defineuintunsignedint//宏定义#definedis_portP0//宏定义#definekey_portP3//宏定义sbitdx=P2^6;//定义74HC573段选位sbitwx=P2^7;//定义74HC573位选位ucharnumber=0,len=0;bitflag1=0;//是否已输入过至少一次1标志//定义4个按键值,从左到右依次为:0、1、转换键"E"、

2、清除键"C"ucharcodejp[4]={0,1,'E','C'};//定义位码数组及相应的值uchardis_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};ucharcodeLEDcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//0~9共阴字型码ucharbuff[8];//定义显示缓冲区voiddelay(uintt)//延时子函数{uchari;while(t--)for(i=0;i<5;i++)

3、;}//按键扫描:并返回键值,无键按下返回"0XFF"uchargetkey(){ucharlie,k;key_port=0xfe;//扫描键盘:行输出低电平if(~key_port&0xf0)//获取键盘列取反后的值,若不为0则表示有键按下{delay(200);//去抖动k=~key_port&0xf0;//再次获取键盘列取反后的值if(k){//确实有键按下,则判断是哪一列if(k==0x10)lie=0;if(k==0x20)lie=1;if(k==0x40)lie=2;if(k==0x80)lie=3;while(~key_

4、port&0xf0);//等待键释放return(jp[lie]);//有键按下返回键值}}return(0xff);//没键按下返回0xff}/*==========数码管显示==========*/voiddisp()//显示子函数{uchari;for(i=0;i<8;i++){wx=0;//关位选锁存器dx=0;//关段选锁存器dis_port=dis_wei[i];//送位码wx=1;//开位选锁存器wx=0;//关位选锁存器if(i==7)dis_port=LEDcode[buff[i]]+0x80;//送段码,最低位补一

5、个小数点elsedis_port=LEDcode[buff[i]];//送段码dx=1;//开段选锁存器dx=0;//关段选锁存器delay(10);//短暂延时}}disp_init()//初始化显示缓冲区:仅让最低位显示0,其它都灭{uchari;for(i=0;i<7;i++){buff[i]=10;}buff[7]=0;//初始状态仅最低位显示"0"}//二进制位左移子函数//输入有效的二进制位,则各位左移,新输入位作为最低位,并计算当前有效数leftmove(uchark){uchari;if(len>7)return;//

6、数位最多只能8位if(flag1)//已输入了至少一次1,第一次1不用移位{for(i=0;i<7;i++){buff[i]=buff[i+1];}}buff[7]=k;flag1=1;number=number*2+k;//累计总数len++;//数位加1}btod()//二进制到十进制转换子函数{disp_init();//初始化显示缓冲区buff[7]=number%10;//获取对应十进制数的个位if(number>9)buff[6]=number/10%10;//获取对应十进制数有效位的十位if(number>99)buff

7、[5]=number/100;//获取对应十进制数有效位的百位}//按键识别与处理key(){ucharkey,i;key=getkey();//调用按键扫描子函数if(key!=0xff){if(key==1)leftmove(key);//输入1则为有效位,调用左移子函数if(key==0&&flag1)leftmove(key);//当前输入0且已输入过至少一次1则为有效位调用左移子函数if(key=='C')//按清除键则重新初始化{disp_init();//初始化显示缓冲区number=len=flag1=0;//恢复初始

8、状态}if(key=='E')btod();//调用二进制到十进制转换子函数}}voidmain()//主函数{disp_init();//初始化显示缓冲区while(1)//大循环{key();//调用按键识别与处理子

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。