好文档 - 专业文书写作范文服务资料分享网站

单片机数码管显示实验

天下 分享 时间: 加入收藏 我要投稿 点赞

v .. . ..

/* 返回代码: 无 */ /* 参数说明: 无 */ /****************************************************************************/

void Test_Seg7(void) { int i;

*((U8*)0x20007000)=0x00; for(;;) {

*((U8*)0x20007000)=0x1f; *((U8*)0x20006000)=seg7table[0]; Delay(10000); *((U8*)0x20007000)=0x2f; *((U8*)0x20006000)=seg7table[1]; Delay(10000); *((U8*)0x20007000)=0x37; *((U8*)0x20006000)=seg7table[2]; Delay(10000); *((U8*)0x20007000)=0x3b; *((U8*)0x20006000)=seg7table[3]; Delay(10000); *((U8*)0x20007000)=0x3d; *((U8*)0x20006000)=seg7table[4]; Delay(10000); *((U8*)0x20007000)=0x3e; *((U8*)0x20006000)=seg7table[5]; 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

. . . 资 料. */ */ */ */ .

v .. . ..

/****************************************************************************/

/*文件名称: LEDSEG7.C */ /*实验现象: 数码管依次显示出0、1,2、……9、a、b、C、d、E、F */ /****************************************************************************/

#define U8 unsigned char

unsigned char seg7table[16] = {

/* 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段构共阳数码管测试 */ /* 功能描述: 依次在7段数码管各自递增显示0—9 */

/* 返回代码: 无 */ /* 参数说明: 无 */ /****************************************************************************/

void Test_Seg7(void) { int i; for(;;) { for(i=0;i<=0x09;i++) {

*((U8*)0x20007000)=0x1f; *((U8*)0x20006000)=seg7table[i]; Delay(10000); } for(i=0;i<=0x09;i++) {

*((U8*)0x20007000)=0x2f; *((U8*)0x20006000)=seg7table[i]; Delay(10000); } for(i=0;i<=0x09;i++) {

*((U8*)0x20007000)=0x37; *((U8*)0x20006000)=seg7table[i]; Delay(10000); } for(i=0;i<=0x09;i++) {

. . . 资 料. .

v .. . ..

*((U8*)0x20007000)=0x3b; *((U8*)0x20006000)=seg7table[i]; Delay(10000); } for(i=0;i<=0x09;i++) {

*((U8*)0x20007000)=0x3d; *((U8*)0x20006000)=seg7table[i]; 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

六、 实验结果与分析

实验一结果:六个数码管同时显示相同的符号,从0-F再由F-0之间的循环变换。 分析:在数码管扫描控制地址处选中六个数码管,使其同时亮,在给其数

码管的数据寄存器存入不同符号对应的数值,加上相应的延迟,就可以是轮流变换的循环的符号变换。

实验二结果:第一个数码管显示Z后,第二个显示H,接着第三个显示A,接着

第四个显示n,接着第五个显示g,接着第六个显示g,接着第一个再显示Z…..如此循环。

分析:设置控制地址使其单独并且循环显示,每个数码管的数据寄存器送

. . . 资 料. .

v .. . ..

入不同的符号的数值,并设置较大的延迟时间即可产生该现象。

实验三结果:六个数码管一起显示“ZHAngg”。

分析:原理同实验二,只是将延迟时间改小到人眼无法分辨的地步即使一

起显示。

实验四结果:第一个数码管显示0—9之后,第二个接着显示0—9,接着第三个,

第四个….

分析:设置循环使六个数码管循环单独显示,在每个数码管显示中再加入

循环,使其递增显示0—9,设置较大的延迟,是我们可以看清实验现象。

七、 实验总结与心得体会

本次试验需要了解数码管的基本工作原理,基于C语言设计编程完成实验,实验的关键在于把握实现各种现象的本质上的差异,在程序上作出修改。通过本次试验对于实验的严谨性有了进一步的体验,稍有不小心实验结果就适得其反,以后要更加用心,更加认真的做实验。

. . . 资 料. .

单片机数码管显示实验

v...../*返回代码:无*//*参数说明:无
推荐度:
点击下载文档文档为doc格式
3az6492huj4c2db011p1797950lq6e00f8q
领取福利

微信扫码领取福利

微信扫码分享