02数码管模块_第1页
02数码管模块_第2页
02数码管模块_第3页
02数码管模块_第4页
02数码管模块_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、硬件模块02:数码管V-r.1一、原理和电路图:aDOfbD5DIgD6ecD4D?d hD7muimi图1外观形态图2图1中,ah描述了数码管的低位至高位,可用图2进行类比,低位至高位(D0D7)。n十丫图3为数码管内部电路图,采用共阳极的 设计。因为是共阳极,若要点亮数码管中b o_片klc人的灯,需要给其低电平,故置“0”点亮!i od o_K Z若PORTA的信号控制数码管中灯的亮灭,r O以下语句将显示数字3h oPORTA = Obi 0110000或图3内部电路图PORTA =0 xB0控制数码管与控制发光二极管原理类似,主要区别为:亮灭信号不一样,正好相反。数码管有四组,流水灯

2、只有一组。每组八个灯的位置不一样,流水灯在一行上,数码管逆时针排列。数码管硬件连线:(参考)每组数码管显示控制B.B.B.B.数码管组选择控制假设实验中按如下连线:(自己可根据情况灵活接插)C1C4接在PORTC的03号针脚上,用以控制选择哪组数码管。adp 接在PORTA ,用以控制数码管的显示。二、实验任务:在最右边的数码管中,反复显示数字0 9,数字变化间隔为500 ms。三、算法分析:如何让最右边的数码管亮呢?最右边的数码管对应的是C1针脚,只要该针脚上给高电平,就可使其数码管 处于开通状态。故可用如下语句实现:PORTC = 01)00000001;端口值 初始化 接C1的PORTC

3、O针脚置1DDRC = Obllllllll;端口方向 初始化 针脚全部定义为信号输出最右边的数码管可以点亮的情况下,如何按耍求显示数字。9呢?步骤 1:显示数字0PORTA = Ob 11000000:步骤 2 :显示数字1PORTA=0blllll001;步骤 3 :显示数字2PORTA=0bl0100100:按此顺序,直至数字9为止,并且反复循环。关键点:找到所要显示数字字形的电平对应序列。切记:亮0 ,暗1。 推荐用二进制或十六进制表示。四、程序实现:在最右边的数码管中,反复显示数字09,数字变化间隔为500 ms o示例#mclude #iiiclude void mam(void)

4、PORTC = 01)00000001;DDRC = Obllllllll;端口 C的值初始化端口 C的方向初始化选择数码管组 信号输出PORTA=Obllllllll;DDRA = Obllllllll;端口A的值初始化端口A的方向初始化全暗信号输出显示数字0显示数字1显示数字2显示数字3显示数字4显示数字5显示数字6显示数字7显示数字8显示数字9while (1)PORTA=ObllOOOOOO;delay_ms(500);PORTA=0blllll001;delay_ms(500);PORTA=0bl0100100;delay_ms(500);PORTA = Ob 10110000;de

5、lay_ms(500);PORTA=0bl0011001;delay_ms(500);PORTA =0bl0010010;delay_ms(500);PORTA = 0b 10000010;delay_ms(500);PORTA =0bll 111000;delay_ms(500);PORTA = 0b 10000000;delay_ms(500);PORTA = 0b 10010000;delay_ms(500);五、课堂实践:请完成上述一位数码管控制的实验任务。修改上述程序,分别使第二组、第三组、第四组数码管反复显示数字09 (以 右侧为基准)。六、深入学习:完成了上述课堂实践任务后,请再

6、仔细体会一下。不知你是否感觉“循环显示 数字09 ”的代码有些繁琐冗长,希望用一种更加巧妙的方法让其能够更精简一 些。用位运算符的左移或右移能实现我们的愿望吗?回答:不能!因为要显示的数 字转换后的电平信号二进制是不连续、无规则的,所以只能另想办法。此处将用C语言中的 数组 来使程序代码更加精简。知识点链接: 数组的定义例:unsigned char num10 = 1, 2, 3, ;ttt数据类型数组名及大小具体数据说明: 数据类型有很多,此处选用的是无符号字符型,表示值范围:【0,255】(2)C语言中数组下标从0开始,所以规模为10的数组,下标范围:0,9(3)数组中要存放的数据直接在

7、 中给出,用逗号分隔。因为数组的下标是连续的,所以先将数据存放在数组中,然后通过循环结构控制下标变 化,读取相应的数据,通过该方法可使代码更加精简。具体如下所示:示例程序2:#mclude #mclude Jvoid main(void)unsigned chainum10=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80.0 x90;/*定义数组,存放数字09 ,此处用十六进制表示*/unsigned chai 1;控制循环的变量PORTC = 0b00000001;DDRC = 0b00000001;PORTA=Obllllllll

8、;DDRA =Obllllllll;端口 C的值初始化端口 C的方向初始化端口 A的值初始化端口A的方向初始化选择数码管组PORTCO针脚信号输出全暗所有针脚信号输出while (1)控制数组下标变化读取相应数组下标中的值赋给端口 A延时500毫秒foi (i=0;i10;i-H-)PORTA = numi;delay_ms(500);淤实践提高:(1)完成上述示例程序2,体会其中设计特点,掌握数组的应用。(2)利用数组与循环结构完成以下任务:从数字9至0进行倒计时,最终显示字母H停止。 2.之前介绍了一位数码管的控制,现要控制后两位数码管(以右基准)显示数字 0099,每1秒跳动一次,该如何

9、实现呢?算法分析:虽然肉眼感觉两位数同时出现在眼前,但单片机在实际处理时还是有先后交替 的过程,只要交替的过程频率足够快,肉眼就感觉是静止状态。可用如下伪代码描 述:开通C1组数码管,关闭C2组数码管,显示数字。 延时10ms开通C2组数码管,关闭C1组数码管,显示数字。 延时10ms为了让肉眼看清显示的数字,并符合1秒跳动一次的要求,重复上述步骤50 次。为什么?因为这两步共延时20ms,执行50次,正好是1秒。具体如下所示:示例程序3:#iiiclude #iiiclude Jvoid main(void)unsigned char num10 = 0 xC0.0 xF9,0 xA4,0

10、xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;上述语句,定义数组,并存放数字09unsigned chai i;unsigned chai j;unsigned chai c;控制低位控制高位计数器,控制进位DDRC =0b00000011;PORTA=Obllllllll;DDRA =0bllllllll;while (1)for (j=O;jvlO;j+)高位取值的范围foi (i=0;i10;i+)低位取值的范围fbr (c=0;c50;c+)此循环控制数码管数字跳动为1秒低位 lOnis,高位 lOnis, 50 次 共 1000msPORTC = 0

11、b00000001; 先选择最右边一组数码管(低位)PORTA = numi; 得到数据 delay_ms(10);PORTC = 01)00000010; 再选择右边第二组数码管(高位)PORTA = uum|j; 得到数据 delay_ms(10);完成上述示例程序3,体会其中设计特点,掌握两位数码管的控制方法。设计程序完成以下任务:从数字00至25进行计数,每隔1秒数字变化,最终 显示字母H停止。(3)设计程序,控制四位数码管进行数字计数。(选做)七、模块小结:掌握点亮控制数码管的基本原理。(先选中数码管组,再控制)掌握C语言中数组的应用掌握两位数码管静态图像显示的实质。(快速刷新)附:历届上海市单片机竞赛一一数码管项目赛题在D 口从1计数并显示到9,然后倒计数到0结束。最后显示字母 计数速度为1秒钟加1或减lo在B 口动态显示,从35倒计数到1结束,结束后显示字母“H”。计数速度为1秒钟减lo在B 口从20倒计数到1结束,结束后显示字母“E”。计数速度为1秒钟减lo在D 口用数码管的个位按次序轮流显示A、B、C、D、E、F笔划段。再按次序轮 流显示F、E、D、C、B、A笔划段,速度为每隔0.5秒钟变化到下一

温馨提示

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

评论

0/150

提交评论