ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:17.76KB ,
资源ID:7095566      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7095566.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数码管动态显示的三种实验.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数码管动态显示的三种实验.docx

1、数码管动态显示的三种实验/* 实 验 名 : 动态显示数码管实验* 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4键盘使用P1* 实验效果 : 按矩阵键盘分别显示在数码管上面显示十六进制的0到F。* 注 意 :*/#include/#include #define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P22;sbit LSB=P23;sbit LSC=P24;unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0

2、x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char KeyValue;/用来存放读取到的键值unsigned char KeyState; /记录按键的状态,0没有,1有unsigned char DisplayData8;/用来存放要显示的8位数的值unsigned char Num;/用来存放中断的时候显示的第位数值void Delay50us(); /延时50usvoid KeyDown(); /检测按键函数void DigDisplay(); /动态显示函数void TimerConfiguratio

3、n();/定时器初始化设置/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void) TimerConfiguration(); KeyState=0; /初始化按键状态 while(1) KeyDown(); if(KeyState=1) DisplayData7=DisplayData6; DisplayData6=DisplayData5; DisplayData5=DisplayData4; DisplayData4=DisplayData3; DisplayData3=DisplayData2; DisplayData

4、2=DisplayData1; DisplayData1=DisplayData0; DisplayData0=DIG_CODEKeyValue; KeyState=0; / DigDisplay(); /* 函 数 名 : TimerConfiguration* 函数功能 : 定时器初始化* 输 入 : 无* 输 出 : 无*/void TimerConfiguration() TMOD=0X02;/选择为定时器0模式,工作方式2,仅用TRX打开启动。 TH0=0X9C; /给定时器赋初值,定时100us TL0=0X9C; ET0=1;/打开定时器0中断允许 EA=1;/打开总中断 TR0

5、=1;/打开定时器 /* 函 数 名 : DigDisplay* 函数功能 : 使用数码管显示* 输 入 : 无* 输 出 : 无*/void DigDisplay() unsigned char i,j;/ for(i=0;i7) i=0;/ j=10; /扫描间隔时间设定/ while(j-)/ Delay50us(); / GPIO_DIG=0x00;/消隐/ /* 函 数 名 : KeyDown* 函数功能 : 检测有按键按下并读取键值* 输 入 : 无* 输 出 : 无*/void KeyDown(void) unsigned int a=0; GPIO_KEY=0x0f; if(G

6、PIO_KEY!=0x0f) Delay50us(); a+; a=0; if(GPIO_KEY!=0x0f) ET0=0;/关定时器中断 KeyState=1;/有按键按下 /测试列 GPIO_KEY=0X0F;/ Delay50us(); switch(GPIO_KEY) case(0X07): KeyValue=0;break; case(0X0b): KeyValue=1;break; case(0X0d): KeyValue=2;break; case(0X0e): KeyValue=3;break;/ default: KeyValue=17; /检测出错回复17意思是把数码管全灭

7、掉。 /测试行 GPIO_KEY=0XF0; Delay50us(); switch(GPIO_KEY) case(0X70): KeyValue=KeyValue;break; case(0Xb0): KeyValue=KeyValue+4;break; case(0Xd0): KeyValue=KeyValue+8;break; case(0Xe0): KeyValue=KeyValue+12;break;/ default: KeyValue=17; ET0=1;/开定时器中断 while(a0;b-) for(a=22;a0;a-);/* 函 数 名 : Delay50us* 函数功能

8、 : 延时函数,延时50us* 输 入 : 无* 输 出 : 无*/void Timer() interrupt 1 DigDisplay(); /* 实 验 名 : 动态显示数码管实验* 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4* 实验效果 : 数码管显示76543210。* 注 意 :*/#include#define GPIO_DIG P0sbit LSA=P22;sbit LSB=P23;sbit LSC=P24;unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x

9、6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char DisplayData8;/用来存放要显示的8位数的值void DigDisplay(); /动态显示函数/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void) unsigned char i; for(i=0;i8;i+) DisplayDatai=DIG_CODEi; while(1) DigDisplay(); /* 函 数 名 : DigDisplay*

10、 函数功能 : 使用数码管显示* 输 入 : 无* 输 出 : 无*/void DigDisplay() unsigned char i; unsigned int j; for(i=0;i8;i+) switch(i) /位选,选择点亮的数码管, case(0): LSA=0;LSB=0;LSC=0; break;/显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;/显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;/显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;/显示第3位 case(4): LS

11、A=0;LSB=0;LSC=1; break;/显示第4位 case(5): LSA=1;LSB=0;LSC=1; break;/显示第5位 case(6): LSA=0;LSB=1;LSC=1; break;/显示第6位 case(7): LSA=1;LSB=1;LSC=1; break;/显示第7位 GPIO_DIG=DisplayDatai;/发送段码 j=10; /扫描间隔时间设定 while(j-); GPIO_DIG=0x00;/消隐 /* 实 验 名 : 动态显示数码管实验* 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4键盘使用P1* 实验效果 : 按矩阵键盘分别

12、显示在数码管上面显示十六进制的0到F。* 注 意 :*/#include#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P22;sbit LSB=P23;sbit LSC=P24;unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char KeyValue;/用来存放读取到的键值unsigne

13、d char KeyState; /记录按键的状态,0没有,1有unsigned char DisplayData8;/用来存放要显示的8位数的值void Delay10ms(); /延时10msvoid KeyDown(); /检测按键函数void DigDisplay(); /动态显示函数/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void) KeyState=0; while(1) KeyDown(); if(KeyState=1) DisplayData7=DisplayData6; DisplayData6=Dis

14、playData5; DisplayData5=DisplayData4; DisplayData4=DisplayData3; DisplayData3=DisplayData2; DisplayData2=DisplayData1; DisplayData1=DisplayData0; DisplayData0=DIG_CODEKeyValue; KeyState=0; DigDisplay(); /* 函 数 名 : DigDisplay* 函数功能 : 使用数码管显示* 输 入 : 无* 输 出 : 无*/void DigDisplay() unsigned char i; unsig

15、ned int j; for(i=0;i8;i+) switch(i) /位选,选择点亮的数码管, case(0): LSA=0;LSB=0;LSC=0; break;/显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;/显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;/显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;/显示第3位 case(4): LSA=0;LSB=0;LSC=1; break;/显示第4位 case(5): LSA=1;LSB=0;LSC=1; break;/显示第5位 case

16、(6): LSA=0;LSB=1;LSC=1; break;/显示第6位 case(7): LSA=1;LSB=1;LSC=1; break;/显示第7位 GPIO_DIG=DisplayDatai;/发送段码 j=10; /扫描间隔时间设定 while(j-); GPIO_DIG=0x00;/消隐 /* 函 数 名 : KeyDown* 函数功能 : 检测有按键按下并读取键值* 输 入 : 无* 输 出 : 无*/void KeyDown(void) unsigned int a=0; GPIO_KEY=0x0f; if(GPIO_KEY!=0x0f) Delay10ms(); a+; a=

17、0; if(GPIO_KEY!=0x0f) KeyState=1;/有按键按下 /测试列 GPIO_KEY=0X0F;/ Delay10ms(); switch(GPIO_KEY) case(0X07): KeyValue=0;break; case(0X0b): KeyValue=1;break; case(0X0d): KeyValue=2;break; case(0X0e): KeyValue=3;break;/ default: KeyValue=17; /检测出错回复17意思是把数码管全灭掉。 /测试行 GPIO_KEY=0XF0; Delay10ms(); switch(GPIO_KEY) case(0X70): KeyValue=KeyValue;break; case(0Xb0): KeyValue=KeyValue+4;break; case(0Xd0): KeyValue=KeyValue+8;break; case(0Xe0): KeyValue=KeyValue+12;break;/ default: KeyValue=17; while(a0;c-) for(b=38;b0;b-) for(a=130;a0;a-);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1