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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数码管显示.docx

1、数码管显示第二讲 数码管显示一、硬件电路图1 数码管与单片机连接电路图1为与实验板配套的数码管电路,该电路使用时要先用短路帽接上CON2,以便给74HC573锁存器供电。数码管显示实验电路有两种核心器件:数码管和锁存器。74HC573锁存器可以锁存数据,当锁存器的C为高电平时,锁存器的输出随输入变化,输入为高电平,输出也为高电平,输入为低电平时,输出跟着也会低电平。当锁存器C为低电平时,输出状态保存其最后一次C使能时的状态。数码管按段数可分为七段数码管和八段数码管,每段为一个发光二极管单元。八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)。按发光二极管单元连接方式可分为共

2、阳数码管和共阴数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共阴极COM端接到地线 GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段不亮。本实验使用的F5361AH三位数码管是共阴数码管。二、数码管的外形及引脚排列1、1位数码管 (a) (b)图2图2中(a)为1位数

3、码管的外形图,(b)为其对应的引脚图,小数点端为引脚5,与之同排的第1个引脚为引脚1。提示:如不知道数码管共阴或共阳,可用数字万用表电阻档的200欧档测量,用黑表笔接公共端,红表笔接公共端之外的任何一引脚,如有二极管段点亮,则为共阴数码管,否则为共阳数码管。引脚排列亦按此方法判断。2、本实验所使用的三位数码管5361的外形及引脚定义三位数码管引脚定义:正面观看(此时小数点在右下角),引脚排布如下 12 11 10 9 8 7 1 2 3 4 5 6各引脚定义如下: 12 11 10 9 8 7 6 5 4 3 2 1DIG1 A F DIG2 DIG3 B 不用 G C DP D E其中DIG

4、13分别为正面观看时从左到右的三个数码管的公共端。对于共阴数码管,如需点亮对应的二极管位,则此公共端必须为低电平。三、程序示例一:用第一个数码管显示数字8分析:要想显示8,第一个数码管的各段位应为 H G F E D C B A 0 1 1 1 1 1 1 1其中H可为0可为1。设置各段位的步骤:1、设置该数码管公共端低电位:将控制各数码管公共端的锁存器573B的LE端(图1的C段)置高电平,P00置低电平,由于锁存器573的LE为高电平时其输出与输入同步,故此时第一个数码管的公共端WE1也为低电平。2、点亮第一个数码管对应的二极管段位:将控制数码管各段位的锁存器573A的LE端置高电平,由于

5、此时锁存器的输入输出同步,故要想显示8,只需将十六进制数0X7F送入P0口,在输出端即可使得第一个数码管对应的段位为0111 1111。说明:由于两个573锁存器共用P0口,故在进行第2步时需要将控制各数码管公共端的锁存器573B的LE置为低电平。此时573B的输出不随输入变化,故WE1的状态不随P00的电平变化而变化。又由于锁存器的锁存作用使得此时的WE1的状态不变,在执行第2步时仍为低电平。#include void main() P2=0X80; /P2=0000 0000 P27为高电平,P26为低电平 P0=0XFE; /P0=1111 1110 P2=0X40; P0=0X7F;

6、/dpgfedcba 0111 1111程序示例二:/*数码管实验,需要将CON2引脚短接以便给数码管供电P2.6控制573B,也即控制数码管的位选端的使能,具体位选为P0.0P0.5:WE1WE6P2.7控制573A的使能,也即数码管的段选端的使能,段选端具体对应关系如下:P0.0P0.7:ABCDEFGH(DP) */#include #include sbit E_573B=P27; /P26控制数码管573B的使能位,P27控制数码管573A的使能位sbit E_573A=P26;sbit WE1=P00;sbit WE2=P01;sbit WE3=P02;sbit WE4=P03;s

7、bit WE5=P04;sbit WE6=P05;void main() P2=0X10; /0001 0000,第三位为1主要是为了防止蜂鸣器响 P0=0XFF; while(1) E_573B=1; /P2=0000 0000 P27为高电平,P26为低电平 WE2=0; /如果需要其他数码管显示同样的字符,只需改此处为WE2等即可 E_573B=0; E_573A=1; P0=0XFf; /dpgfedcba 0111 1111 提高篇编程实现数码管与定时器结合显示时间。#include #define uchar unsigned char sbit HC573A=P26; /段控制锁

8、存器的使能端sbit HC573B=P27; /位控制锁存器的使能端sbit WE1=P00; sbit WE2=P01;sbit WE3=P02;sbit WE4=P03;sbit WE5=P04;sbit WE6=P05;uchar String_Dot10=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xe7;uchar String10= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67;uchar count;uchar hour=22,minute=38,second=30;/设置时间初

9、值,这里为11点56分57秒void Second_Display(uchar);void Minute_Display(uchar);void Hour_Display(uchar);void Time0_Init();/定义延时函数void Delay(uchar i) uchar j,k; for(j=i;j0;j-) for(k=10;k0;k-);/主函数void main() Time0_Init(); P2=0x10; /对P2口进行初始化 P0=0xFF; /对P0口进行初始化 while(1) if(count=20)/满50ms*20=1s,second+ second+;

10、 count=0; if(second=60) second=0; minute+; if(minute=60) hour+; minute=0; if(hour=24) hour=0; Second_Display(second); Minute_Display(minute); Hour_Display(hour); /用数码管5和6显示秒的函数void Second_Display(uchar second) /个位数据送P0口 HC573A=1; P0=Stringsecond%10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1

11、; WE6=0; HC573B=0; Delay(10); /十位数据送P0口 HC573A=1; P0=Stringsecond/10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE5=0; HC573B=0; Delay(10);/用数码管3和4显示分的函数void Minute_Display(uchar minute) /个位数据送P0口 HC573A=1; P0=String_Dotminute%10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE4=0;

12、HC573B=0; Delay(10); /十位数据送P0口 HC573A=1; P0=Stringminute/10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE3=0; HC573B=0; Delay(10);/用数码管1和2显示小时的函数void Hour_Display(uchar hour) /个位数据送P0口 HC573A=1; P0=String_Dothour%10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE2=0; HC573B=0; Dela

13、y(10); /十位数据送P0口 HC573A=1; P0=Stringhour/10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE1=0; HC573B=0; Delay(10);/初始化定时器0void Time0_Init() TMOD=0X01; TH0=0X3C; TL0=0XB0; ET0=1; EA=1; TF0=0; TR0=1;/定时器中断函数,每次中断计时50msvoid Time0() interrupt 1 /50ms TH0=0X3C; TL0=0XB0; count+; 三、按键调节时间#includ

14、e #define uchar unsigned char #define uint unsigned intsbit HC573A=P26; /段控制锁存器的使能端sbit HC573B=P27; /位控制锁存器的使能端sbit WE1=P00; sbit WE2=P01;sbit WE3=P02;sbit WE4=P03;sbit WE5=P04;sbit WE6=P05;sbit KEY1=P32; /KEY1用于设定小时sbit KEY2=P33; /KEY2用于设定分钟sbit KEY3=P34; /KEY3用于设定秒uchar String_Dot10=0xbf,0x86,0xdb

15、,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;uchar String10= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar count;uchar hour=8,minute=15,second=50;/设置时间初值,这里为11点56分57秒void Second_Display(uchar);void Minute_Display(uchar);void Hour_Display(uchar);void Time0_Init();/定义延时函数void Delay2us(uint i) while(-

16、i);/主函数void main() Time0_Init(); P2=0x10; /对P2口进行初始化 P0=0xFF; /对P0口进行初始化 KEY1=1; KEY2=1; KEY3=1; while(1) if(!KEY1) Delay2us(5000); if(!KEY1) /单片机上电后所有IO口都为高电平,由于按键另一端接地,故按下按键对应引脚肯定为低电平 hour+; if(hour=24) hour=0; while(KEY1=0); if(!KEY2) Delay2us(5000); if(!KEY2) minute+; if(minute=60) minute=0; whi

17、le(KEY2=0); if(!KEY3) Delay2us(5000); if(!KEY3) second+; if(second=60) second=0; while(KEY3=0); if(count=20)/满50ms*20=1s,second+ second+; count=0; if(second=60) second=0; minute+; if(minute=60) hour+; minute=0; if(hour=24) hour=0; Second_Display(second); Minute_Display(minute); Hour_Display(hour); /

18、用数码管5和6显示秒的函数void Second_Display(uchar second) /个位数据送P0口 HC573A=1; P0=Stringsecond%10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE6=0; HC573B=0; Delay2us(80); /十位数据送P0口 HC573A=1; P0=Stringsecond/10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE5=0; HC573B=0; Delay2us(80);/用数码管3和4

19、显示分的函数void Minute_Display(uchar minute) /个位数据送P0口 HC573A=1; P0=String_Dotminute%10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE4=0; HC573B=0; Delay2us(80); /十位数据送P0口 HC573A=1; P0=Stringminute/10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE3=0; HC573B=0; Delay2us(80);/用数码管1和2显示小

20、时的函数void Hour_Display(uchar hour) /个位数据送P0口 HC573A=1; P0=String_Dothour%10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE2=0; HC573B=0; Delay2us(80); /十位数据送P0口 HC573A=1; P0=Stringhour/10;/秒的个位,送第六个数码管显示 HC573A=0; P0=0XFF; /打开位使能端 HC573B=1; WE1=0; HC573B=0; Delay2us(80);/初始化定时器0void Time0_Init() TMOD=0X01; TH0=0X3C; TL0=0XB0; ET0=1; EA=1; TF0=0; TR0=1;/定时器中断函数,每次中断计时50msvoid Time0() interrupt 1 /50ms TH0=0X3C; TL0=0XB0; count+;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2