单片机c语言版数码管动态显示实验报告

上传人:s****a 文档编号:181899858 上传时间:2023-01-18 格式:DOCX 页数:6 大小:85.27KB
返回 下载 相关 举报
单片机c语言版数码管动态显示实验报告_第1页
第1页 / 共6页
单片机c语言版数码管动态显示实验报告_第2页
第2页 / 共6页
单片机c语言版数码管动态显示实验报告_第3页
第3页 / 共6页
点击查看更多>>
资源描述
1. 数码管动态显示实验在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输出口与7段数码管数据引脚相连,P2.0P2.3引脚输出选控制信号在Keil软件中编写程序,采用动态显示法,实现数码管显示变量unsignedintshow_value的值(show_value的值范围为00009999),即把show_value的千百十个位的值用数码管显示出来。二、实验目的1. 巩固Proteus软件和Keil软件的使用方法学习端口输入输出的高级应用掌握7段数码管的连接方式和动态显示法掌握查表程序和延时等子程序的设计(条理清晰,含程序的一些功能分析计算)如下图(五)所示,由P1口将要显示的数字输给七段数码管;再由P2第四位输给数码管的公共端,作为扫描输入信号;用外部中断P3.2和P3.3分别接PB1与PB2,实现数字的增减。所要实现的功能是,开始运行电路功能图时,四个数码管分别显示0000,按下PB1增1,直到9999回到0000,相反按下PB2减1,直到0000回到9999。在算相关数据时,由于要显示个十百千的不同数字,要调用disp函数,disp0=show/1000;/显示千位的值disp1=show%1000/100;/显示百位的值disp2=show%100/10;/显示十位的值disp3=show%10;/显示个位的值本实验需要用到IE寄存器与TC0N寄存器。、硬件原理图及程序设计(一)硬件原理图设计PO.O/ADOU1P1.7P3.7/RDP1.6P3.6/WRP1.5P3.5/lP1.4P3.4TO-P1.3P3.3/INT1P1.2P3.2/INT0P1.1P3.1/TXDP1.0P3.0/RXDP2.7/A15P2.6/A14EAP2.5/A13ALEP2.4/A12PSENP2.3/A11P2.2/A10P2.1/A9P2.0/A8RSTP0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4XTAL2卜P0.3/AD3P0.2/AD2P0.1/AD1图(五)开始运行proteus,四个数码管显示0000,按下PB1数码管增1,按下PB2数码管减1。二)程序流程图设计声明函数三)程序设源代码main()IE=0X85;/开IE寄存器,允许INTO和INT1中断TC0N=0X05;/开INT0,INT1while(l)/无穷循环get_disp();#include#defineSEG7PP1#defineSCANPP2charcodeTAB10=0xc0,0xf9,0xa4,0x92,0x83,chardisp4=0,0,0,0;voiddelay_ms(intx);charscan4=0xfe,0xfd,0xfb,0xf7;chari,j;voiddisplay();intshow=0000;voidget_disp();/定义8051寄存器头文件/定义数码管输入信号接Pl/定义数码管扫描信号接P20xb0,0x99,/数字040xf8,0x80,0x98;/数字59/显示数组/声明延迟函数/声明输入扫描信号/声明变量/显示数组diso的内容/定义初始值/声明返回diap/主程序开始/声明延迟函数/定义变量/开始计数,计数X次/计数120次,延迟1ms/声明显示函数/开始计数,计数4次/diap的值附到变量j/显示扫描信号/显示数字到数码管/延迟4ms/INTO中断子程序开始/如果显示数值小于/显示数值自增1/否则显示数值0/INT1中断子程/如果显示数值/显示数值自减1/否则显示数值/显示千位的值/显示百位的值display();voiddelay_ms(intx)inti,j;for(i=0;ix;i+)for(j=0;j120;j+);voiddisplay()for(i=0;i4;i+)j=disp3-i;SCANP=scani;SEG7P=TABj;delay_ms(4);voidINT0_ISR(void)interrupt0if(show0)大于0show-;elseshow=9999;9999voidget_disp()disp0=show/1000;disp1=show%1000/100;/显示十位的/显示个位的值disp2=show%100/10;disp3=show%10;五实验总结实验过程中遇到的问题及解决方法、体会问题1:运行电路原理图时,数码管都不亮。解决方法:定义IE寄存器时,没有开启总开关EA,导致数码管不能正常显示数字。问题2:按下PB1或PB2,数码管乱码。解决方法:因为使用了两个外部中断,所以INT0和INT1都要开启,在声明INT0和INT1时,起初写成if(show0);show+;而应该是if(show0);show-;最电路原理图能正常显示00009999。体会:科学的魅力太强大了,从之前的一个数码管亮09,现在只要你想要几个数码管亮就可以接几个,写入正确的程序,就能实现你想要的效果。程序一直在增多,实现的功能也在无穷的变换着,越来越觉得单片机实现的功能,在生活中也随处可见。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!