单片机数码管显示实验_第1页
单片机数码管显示实验_第2页
单片机数码管显示实验_第3页
单片机数码管显示实验_第4页
单片机数码管显示实验_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档供参考,可复制、编制,期待您的好评与关注! 实验一 数码管实验一、 实验目的1. 了解数码管的显示原理;2. 掌握JXARM9-2440 中数码管显示编程方法二、 实验仪器JXARM9-2440教学实验箱、ADT1000仿真器和ADT IDE集成开发环境、串口连接线、PC机。三、 实验原理7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。 LED显示器的接口一般有静态显示与动态显示接口两种方式。本实验中采用的是动态显示接口,其中数码管扫描控制地址为0x20007000,位0位5每位分别对应一个数码管,将其中某位清0 来选择相应

2、的数码管,地址0x20006000 为数码管的数据寄存器。数码管采用共阳方式,向该地址写一个数据就可以控制LED 的显示,数据中的1对应的不亮,0对应的亮,数码管各位从高到低排列为dp-g-f-e-d-c-b-a,例如当数据寄存器是11111111时则不亮,当是01111111时则显示8,其原理图如图所示。 四、 实验内容1、编程实现:六个数码管同时正向显示0-F ,然后反向显示F-0。2、编程实现:在六个数码管上依次显示与自己姓名有关的内容,可分辨出轮流显示。3、编程实现:在六个数码管上依次显示与自己姓名有关的内容,分辨不出轮流显示。4*、编程实现:在每个数码管上递增显示09 。5*、自行开

3、发。五、 实验程序1,/*/*文件名称: LEDSEG7.C */*实验现象: 数码管依次显示出0、1,2、9、a、b、C、d、E、F */*/#define U8 unsigned charunsigned char seg7table16 = /* 0 1 2 3 4 5 6 7*/ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, /* 8 9 A B C D E F*/ 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,;void Delay(int time);/*/* 函数说明: JXARM9

4、-2410 7段构共阳数码管测试 */* 功能描述: 依次在7段数码管上显示0123456789ABCDEF */* 返回代码: 无 */* 参数说明: 无 */*/void Test_Seg7(void) int i;*(U8*)0x20007000)=0x00;/*6个数码管都亮*/for(;)/*数码管从0到F依次将字符显示出来*/for(i=0;i<0x10;i+)*(U8*)0x20006000)=seg7tablei;Delay(10000); /*数码管从F到0依次将字符显示出来*/ for(i=0x0f;i>0x00;i-)*(U8*)0x20006000)=seg

5、7tablei;Delay(10000); / TODO /*/* Function name : 循环延时子程序 */* Description : 循环 'time' 次 */* Return type :void */* Argument : 循环延时计数器 */*/void Delay(int time) int i;int delayLoopCount=10000; for(;time>0;time-);for(i=0;i<delayLoopCount;i+);2,/*/*文件名称: LEDSEG7.C */*实验现象: 数码管依次显示ZHAngg,并能看

6、出轮流显示 */*/#define U8 unsigned charunsigned char seg7table16 = /* Z H A n g g 6 7*/ 0xa4, 0x89, 0x88, 0xc8, 0x90, 0x90, 0x82, 0xf8, /* 8 9 A B C D E F*/ 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, /* H I N*/ 0x89, 0xcf, 0x48;void Delay(int time);/*/* 函数说明: JXARM9-2410 7段构共阳数码管测试 */* 功能描述: 在六个数码管上

7、分别显示字母,与姓名有关 */* 返回代码: 无 */* 参数说明: 无 */*/void Test_Seg7(void) int i; *(U8*)0x20007000)=0x00; for(;) *(U8*)0x20007000)=0x1f;*(U8*)0x20006000)=seg7table0;Delay(10000);*(U8*)0x20007000)=0x2f;*(U8*)0x20006000)=seg7table1;Delay(10000);*(U8*)0x20007000)=0x37;*(U8*)0x20006000)=seg7table2;Delay(10000);*(U8*

8、)0x20007000)=0x3b;*(U8*)0x20006000)=seg7table3;Delay(10000);*(U8*)0x20007000)=0x3d;*(U8*)0x20006000)=seg7table4;Delay(10000);*(U8*)0x20007000)=0x3e;*(U8*)0x20006000)=seg7table5;Delay(10000);/ TODO /*/* Function name : 循环延时子程序 */* Description : 循环 'time' 次 */* Return type :void */* Argument :

9、 循环延时计数器 */*/void Delay(int time) int i;int delayLoopCount=10000; for(;time>0;time-);for(i=0;i<delayLoopCount;i+);3,/*/*文件名称: LEDSEG7.C */*实验现象: 数码管依次显示出ZHAngg,并看不出轮流显示 */*/#define U8 unsigned charunsigned char seg7table16 = /* Z H A n g g 6 7*/ 0xa4, 0x89, 0x88, 0xc8, 0x90, 0x90, 0x82, 0xf8,

10、/* 8 9 A B C D E F*/ 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, /* H I N*/ 0x89, 0xcf, 0x48;void Delay(int time);/*/* 函数说明: JXARM9-2410 7段构共阳数码管测试 */* 功能描述: 在六个数码管上分别显示字母,与姓名有关 */* 返回代码: 无 */* 参数说明: 无 */*/void Test_Seg7(void) int i; *(U8*)0x20007000)=0x00; for(;) *(U8*)0x20007000)=0x1f;*(U8*)0x

11、20006000)=seg7table0;Delay(10000);*(U8*)0x20007000)=0x2f;*(U8*)0x20006000)=seg7table1;Delay(10000);*(U8*)0x20007000)=0x37;*(U8*)0x20006000)=seg7table2;Delay(10000);*(U8*)0x20007000)=0x3b;*(U8*)0x20006000)=seg7table3;Delay(10000);*(U8*)0x20007000)=0x3d;*(U8*)0x20006000)=seg7table4;Delay(10000);*(U8*)

12、0x20007000)=0x3e;*(U8*)0x20006000)=seg7table5;Delay(1);/ TODO /*/* Function name : 循环延时子程序 */* Description : 循环 'time' 次 */* Return type :void */* Argument : 循环延时计数器 */*/void Delay(int time) int i;int delayLoopCount=10000; for(;time>0;time-);for(i=0;i<delayLoopCount;i+);4,/*/*文件名称: LED

13、SEG7.C */*实验现象: 数码管依次显示出0、1,2、9、a、b、C、d、E、F */*/#define U8 unsigned charunsigned char seg7table16 = /* 0 1 2 3 4 5 6 7*/ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, /* 8 9 A B C D E F*/ 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,;void Delay(int time);/*/* 函数说明: JXARM9-2410 7段构共阳数码管测试 */* 功能描

14、述: 依次在7段数码管各自递增显示09 */* 返回代码: 无 */* 参数说明: 无 */*/void Test_Seg7(void) int i;for(;) for(i=0;i<=0x09;i+) *(U8*)0x20007000)=0x1f;*(U8*)0x20006000)=seg7tablei;Delay(10000); for(i=0;i<=0x09;i+) *(U8*)0x20007000)=0x2f;*(U8*)0x20006000)=seg7tablei;Delay(10000); for(i=0;i<=0x09;i+) *(U8*)0x20007000)

15、=0x37;*(U8*)0x20006000)=seg7tablei;Delay(10000); for(i=0;i<=0x09;i+) *(U8*)0x20007000)=0x3b;*(U8*)0x20006000)=seg7tablei;Delay(10000); for(i=0;i<=0x09;i+) *(U8*)0x20007000)=0x3d;*(U8*)0x20006000)=seg7tablei;Delay(10000); / TODO /*/* Function name : 循环延时子程序 */* Description : 循环 'time' 次

16、 */* Return type :void */* Argument : 循环延时计数器 */*/void Delay(int time) int i;int delayLoopCount=10000; for(;time>0;time-);for(i=0;i<delayLoopCount;i+);六、 实验结果与分析实验一结果:六个数码管同时显示相同的符号,从0-F再由F-0之间的循环变换。 分析:在数码管扫描控制地址处选中六个数码管,使其同时亮,在给其数码管的数据寄存器存入不同符号对应的数值,加上相应的延迟,就可以是轮流变换的循环的符号变换。实验二结果:第一个数码管显示Z后,第二个显示H,接着第三个显示A,接着第四个显示n,接着第五个显示g,接着第六个显示g,接着第一个再显示Z.如此循环。 分析:设置控制地址使其单独并且循环显示,每个数码管的数据寄存器送入不同的符号的数值,并设置较大的延迟时间即可产生该现象。实验三结果:六个数码管一起显示“ZHAngg”。 分析:原理同实验二,只是将延迟时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论