单片机数码管实验总结精选 .doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机数码管实验总结精选

单片机数码管实验总结 一、实验要求 1. 在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路 2. 在电路中增加四个7段数码管,将P1口作数据输出口与7段数码 管数据引脚相连 ,~引脚输出选控制信号 3. 在Keil软件中编写程序,采用动态显示法,实现数码管显示变量unsigned int show_value的值,即把show_value的千百十个位的值用数码管显示出来。 二、实验目的 1. 巩固Proteus软件和Keil软件的使用方法 2. 学习端口输入输出的高级应用 3. 掌握7段数码管的连接方式和动态显示法 4. 掌握查表程序和延时等子程序的设计 三.实验说明 如下图所示,由P1口将要显示的数字输给七段数码管;再由P2第四位输给数码管的公共端,作为扫描输入信号;用外部中断和分别接PB1与PB2,实现数字的增减。所要实现的功能是,开始运行电路功能图时,四个数码管分别显示0000,按下PB1增1,直到9999回到0000,相反按下PB2减1,直到0000回到9999。 在算相关数据时,由于要显示个十百千的不同数字,要调用disp函数, disp[0]=show/1000; //显示千位的值 disp[1]=show%1000/100; //显示百位的值 disp[2]=show%100/10; //显示十位的值 disp[3]=show%10; //显示个位的值 本实验需要用到IE寄存器与TCON寄存器。 四、硬件原理图及程序设计 硬件原理图设计 图 开始运行proteus,四个数码管显示0000,按下PB1数码管增1,按下PB2数码管减1。 程序流程图设计 三)程序设源代码 #include #define SEG7P P1 #define SCANP P2 //定义8051寄存器头文件 // 定义数码管输入信号接P1 //定义数码管扫描信号接P2 char code TAB[10]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, //数字0~4 0x92, 0x83, 0xf8, 0x80, 0x98 };//数字5~~9 char disp[4]={0,0,0,0}; //显示数组 void delay_ms; //声明延迟函数 char scan[4]={0xfe,0xfd,0xfb,0xf7}; //声明输入扫描信号 char i,j; //声明变量 void display; //显示数组diso的内容 int show=0000; //定义初始值 void get_disp; //声明返回diap main { IE=0X85; TCON=0X05; while { get_disp; display; //主程序开始 //开IE寄存器,允许INT0和INT1中断 //开INT0,INT1 //无穷循环 } void delay_ms { int i,j; for for ; } void display //声明延迟函数 //定义变量 //开始计数,计数x次 //计数120次,延迟1ms //声明显示函数 { for // { j=disp[3-i]; //diap SCANP=scan[i]; // SEG7P=TAB[j]; // delay_ms; // } } void INT0_ISR interrupt 0 //INT0 { if //9999 show++; // else show=0; // } void_INT1_ISR interrupt 2 //INT1序开始 { if 大于0 show--; // else show=9999; 9999 } void get_disp { disp[0]=show/1000; // disp[1]=show%1000/100; // disp[2]=show%100/10; //开始计数 ,计数4次 的值附到变量j 显示扫描 信号 显示数字到数码管 延迟4ms 中断子程序开始 如果显示数值小于 显示数值自增1 否则显示数值0 中断子程 //如果显示数值 显示数值自减1 //否则显示数值 显示千位的值 显示百位的值 显示十位的 disp[3]=show%10; //显示个位的值 } 五

文档评论(0)

wdjp11801 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档