




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/* 实 验 名 : 动态显示数码管实验* 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4键盘使用P1* 实验效果 : 按矩阵键盘分别显示在数码管上面显示十六进制的0到F。* 注 意 :*/#include<reg51.h>/#include<intrins.h>#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,0x
2、7f,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;/用来存放读取到的键值unsigned char KeyState;/记录按键的状态,0没有,1有unsigned char DisplayData8;/用来存放要显示的8位数的值unsigned char Num;/用来存放中断的时候显示的第位数值void Delay50us(); /延时50usvoid KeyDown(); /检测按键函数void DigDisplay(); /动态显示函数void
3、 TimerConfiguration();/定时器初始化设置/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void)TimerConfiguration();KeyState=0; /初始化按键状态while(1)KeyDown(); if(KeyState=1)DisplayData7=DisplayData6;DisplayData6=DisplayData5;DisplayData5=DisplayData4;DisplayData4=DisplayData3;DisplayData3=DisplayData2;Dis
4、playData2=DisplayData1;DisplayData1=DisplayData0;DisplayData0=DIG_CODEKeyValue;KeyState=0;/DigDisplay();/* 函 数 名 : TimerConfiguration* 函数功能 : 定时器初始化* 输 入 : 无* 输 出 : 无*/void TimerConfiguration()TMOD=0X02;/选择为定时器0模式,工作方式2,仅用TRX打开启动。TH0=0X9C;/给定时器赋初值,定时100usTL0=0X9C;ET0=1;/打开定时器0中断允许EA=1;/打开总中断TR0=1;/打
5、开定时器/* 函 数 名 : DigDisplay* 函数功能 : 使用数码管显示* 输 入 : 无* 输 出 : 无*/void DigDisplay()unsigned char i,j;/for(i=0;i<8;i+)/GPIO_DIG=0x00;/消隐switch(i) /位选,选择点亮的数码管,case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=
6、0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;GPIO_DIG=DisplayDatai;i+;if(i>7)i=0;/j=10; /扫描间隔时间设定/while(j-)/Delay50us();/GPIO_DIG=0x00;/消隐/* 函 数 名 : KeyDown* 函数功能 : 检测有按键按下并读取键值* 输 入 : 无* 输 出 : 无*/void KeyDown(void)unsigne
7、d int a=0;GPIO_KEY=0x0f;if(GPIO_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;/检测出错回复1
8、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(a<5000)&&(GPIO_KEY!=0xf0) /检测按键松手检测Delay50u
9、s();a+;a=0;/* 函 数 名 : Delay50us* 函数功能 : 延时函数,延时50us* 输 入 : 无* 输 出 : 无*/void Delay50us(void) /延时50us误差 0us unsigned char a,b; for(b=1;b>0;b-) for(a=22;a>0;a-);/* 函 数 名 : Delay50us* 函数功能 : 延时函数,延时50us* 输 入 : 无* 输 出 : 无*/void Timer() interrupt 1DigDisplay();/* 实 验 名 : 动态显示数码管实验* 使用的IO : 数码管使用P0,P
10、2.2,P2.3,P2.4* 实验效果 : 数码管显示76543210。* 注 意 :*/#include<reg51.h>#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,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 DisplayData8;/
11、用来存放要显示的8位数的值void DigDisplay(); /动态显示函数/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void)unsigned char i;for(i=0;i<8;i+)DisplayDatai=DIG_CODEi;while(1)DigDisplay();/* 函 数 名 : DigDisplay* 函数功能 : 使用数码管显示* 输 入 : 无* 输 出 : 无*/void DigDisplay()unsigned char i;unsigned int j;for(i=0;i<8;i
12、+)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(6):LSA=0;LSB=1;LSC=1; break;/显示第6位ca
13、se(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* 实验效果 : 按矩阵键盘分别显示在数码管上面显示十六进制的0到F。* 注 意 :*/#include<reg51.h>#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P22;sbit LSB=P23;sbit
14、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;/用来存放读取到的键值unsigned char KeyState;/记录按键的状态,0没有,1有unsigned char DisplayData8;/用来存放要显示的8位数的值void Delay10ms(); /延时10msvoid Key
15、Down(); /检测按键函数void DigDisplay(); /动态显示函数/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void)KeyState=0;while(1)KeyDown(); if(KeyState=1)DisplayData7=DisplayData6;DisplayData6=DisplayData5;DisplayData5=DisplayData4;DisplayData4=DisplayData3;DisplayData3=DisplayData2;DisplayData2=DisplayDat
16、a1;DisplayData1=DisplayData0;DisplayData0=DIG_CODEKeyValue;KeyState=0;DigDisplay();/* 函 数 名 : DigDisplay* 函数功能 : 使用数码管显示* 输 入 : 无* 输 出 : 无*/void DigDisplay()unsigned char i;unsigned int j;for(i=0;i<8;i+)switch(i) /位选,选择点亮的数码管,case(0):LSA=0;LSB=0;LSC=0; break;/显示第0位case(1):LSA=1;LSB=0;LSC=0; break
17、;/显示第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(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_DI
18、G=0x00;/消隐/* 函 数 名 : KeyDown* 函数功能 : 检测有按键按下并读取键值* 输 入 : 无* 输 出 : 无*/void KeyDown(void)unsigned int a=0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f) Delay10ms();a+;a=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;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理带班组长竞聘
- 疫情防控宣传课件小学生
- 2025年乡村医生考试题库:农村医疗卫生机构管理法规与实务
- 2025年大学统计学期末考试题库:时间序列分析在水资源管理中的应用试题
- 2025-2030网络优化产业规划专项研究报告
- 2025-2030组合健身器械产业市场深度调研及发展趋势与投资研究报告
- 2025建筑工程劳务承包合同混凝土工
- 2025-2030米拉贝李子行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030童装项目商业计划书
- 2025-2030空压机密封垫市场发展现状调查及供需格局分析预测报告
- 义务教育法主题班会课件
- 信号与系统考试试题及答案
- 血透病人合并骨折的护理查房
- 2025届全国高考分科模拟调研卷数 学(一)(含答案)
- 贺兰山凝眸(2023年浙江台州中考语文试卷散文阅读题及答案)
- 2024年五年级语文下册 第七单元 口语交际:我是小小讲解员教案 新人教版
- 江西省数字产业集团有限公司招聘笔试真题2023
- 省应急指挥平台建设方案
- 心理学原理(中文版)
- JG-T 194-2018 住宅厨房和卫生间排烟(气)道制品
- DL∕T 1215.4-2013 链式静止同步补偿器 第4部分现场试验
评论
0/150
提交评论