51单片机使用定时器进行数码管动态扫描程序

数码管是51单片机学习中比较基础的一个模块,为简化电路连接,提高系统可靠性,降低制造成本,多位数码管广泛采用动态扫描的方式进行显示。如果程序编写不当,数码管动态扫描容易出现亮度不均匀、亮度过低、重影等现象。很多初学者会在主函数中使用while(1)循环,结合delay函数不断扫描,但这样得不断调用display扫描,如果单片机还要执行别的程序时,就会由于扫描不及时,导致各种问题。此外,在控制段选位选的先后顺序上,如果程序不当,则会造成显示重影等问题。在此给出一个稳定可靠的程序方案。


电路连接:P1口通过两个74HC573分别连接到八位数码管的段选和片选,段选、位选由P3.4和P3.5控制,低电平锁存

#include <reg52.h>#define DIGI_PORT P1 // 宏定义数码管端口,如果端口改变,只需修改这一句即可#define DIGI_NUM 8 // 宏定义数码管个数sbit DULA = P3^4;sbit WELA = P3^5;unsigned char digiBuf[DIGI_NUM]; //数码管缓冲区unsigned char code DigiTable[] = {0x3F,/*0*/0x06,/*1*/0x5B,/*2*/0x4F,/*3*/0x66,/*4*/0x6D,/*5*/0x7D,/*6*/0x07,/*7*/0x7F,/*8*/0x6F,/*9*/0x00,/* */};/* 初始化定时器0,方式1,11.0592MHz晶振时,每5ms进一次中断,如果只有4位数码管,10ms即可,间隔长度根据实际情况调整,在保证不闪烁的情况下,尽可能加长间距以减小对CPU资源的消耗*/void initDigi(){TMOD = 0x01;TH0 = 0xEE;TL0 = 0x00;EA = 1;ET0 = 1;TR0 = 1;}void main(){digiBuf[0] = 10; // 为10则该位不显示digiBuf[1] = 1;digiBuf[2] = 2;digiBuf[3] = 3;digiBuf[4] = 4;digiBuf[5] = 5;digiBuf[6] = 6;digiBuf[7] = 7;initDigi();while(1);}// 定时器0函数每隔一段时间运行一次void displayTimer0() interrupt 1{static unsigned char digiPos = 0; // 当前需要显示的数码管,此处使用静态局部变量,或者全局变量,不可使用默认局部变量TH0 = 0xEE;TL0 = 0x00;// 位选关闭所有数码管,否则可能出现重影(下面段选改变之后,位选改变之前,上一次已经位选打开的数码会显示错误的信息)DIGI_PORT = 0xFF;	//这一句如果和下一句位置交换,可能产生重影,具体见http://blog.csdn.net/jzj1993/article/details/8563337WELA = 1;WELA = 0;// 这里进行段选(此时所有数码管都已关闭,不会显示错误信息)DIGI_PORT = DigiTable[digiBuf[digiPos]];DULA = 1;DULA = 0;// 这里根据digiPos进行位选switch(digiPos) {case 0:	DIGI_PORT = ~(1 << 0); break; // 打开第0个数码管case 1:	DIGI_PORT = ~(1 << 1); break; // 打开第1个数码管case 2:	DIGI_PORT = ~(1 << 2); break; // 打开第2个数码管case 3:	DIGI_PORT = ~(1 << 3); break; // 打开第3个数码管case 4:	DIGI_PORT = ~(1 << 4); break; // 打开第4个数码管case 5:	DIGI_PORT = ~(1 << 5); break; // 打开第5个数码管case 6:	DIGI_PORT = ~(1 << 6); break; // 打开第6个数码管case 7:	DIGI_PORT = ~(1 << 7); break; // 打开第7个数码管}WELA = 1;WELA = 0;// 改变digiPos值,为下一次进入此函数做准备digiPos++;if(digiPos == DIGI_NUM)digiPos = 0;}

Proteus仿真通过



源码及Proteus仿真文件点此链接下载


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gartner Magic Quadrant for Enterprise Network Firewall (2018,2017,2016,2015,2014,2013,2011,2010)

Based on Gartner’s definition, the enterprise network firewall ” is composed primarily of purpose-built appliances for securing enterprise corporate networks. Products must be able to support single-enterprise firewall deployments and large and/or comple…

avr-gcc中关于delay延时函数的应用修改版[ourdev]

在51中我们的延时函数都是自己编写的&#xff0c;无论是在汇编中还是在C言语中。虽然有模板&#xff0c;有时还是有点烦。呵呵。不过在应用avr 单片机的时候我们就有福了。因为avr-gcc 提供给我们很方便的delay 延时函数, 只有在源文件包含&#xff1a; #include <util/dela…

最后半天时间,支付宝等第三方支付机构备付金必须100%上交

这几天支付宝、微信等第三支付机构备付金100%上交央行的新闻相信大家已经看到很多&#xff0c;对于备付金可能大家都不是很了解&#xff0c;甚至很多人认为这是不是银行又跟支付宝等第三方支付机构过意不去了&#xff0c;今天我们就带大家来了解下事情的经过以及真相。央行铁令…

顺丰负债300亿就压力山大,而万达曾经负债4000亿却稳如泰山

近段顺丰负债300亿的消息闹得沸沸扬扬&#xff0c;作为国内快递一哥&#xff0c;顺丰借壳上市后市值曾经超过3000亿人民币&#xff0c;然而目前却负债300亿&#xff0c;这对于一家轻资产的快递公司来说可不得了。顺丰目前的处境难免让人联想到2017年的时候万达负债4000个亿的情…

2019年各大银行最新存款利率,这么存可以获得更多的利息!

2019年怎么存款才能获得最高的利率&#xff1f;这个相信口袋里有点钱的人都会关心的问题&#xff0c;今天我们就来跟大家仔细说一下。先来看一下2019年各大银行最新存款利率是多少。目前各大银行的存款利率跟2018年年底其实没有多大的差别&#xff0c;虽然已经过了2018年12月份…

怎样学习MSP430单片机

MSP430是Texas Instrument(TI&#xff0c;德州仪器)推出的一款超低功耗单片机。TI是一个非常有实力的、全球领先的芯片制造公司&#xff0c;MSP430不仅因为其优秀的设计&#xff0c;更因为TI提供的强有力的技术支持&#xff0c;而很快成为今天市场上非常受欢迎的一款单片机。 使…

【原创】“三次握手,四次挥手”你真的懂吗?

记得刚毕业找工作面试的时候&#xff0c;经常会被问到&#xff1a;你知道“3次握手&#xff0c;4次挥手”吗&#xff1f;这时候我会“胸有成竹”地“背诵”前期准备好的“答案”&#xff0c;第一次怎么怎么&#xff0c;第二次……答完就没有下文了&#xff0c;面试官貌似也没有…

17年前存款11万,取款时银行以销户为由拒绝,法院判银行全额赔付

1999年年底&#xff0c;陈伯在某银行的存折中存入2.6万元&#xff0c;加上这一笔&#xff0c;当时存折里总共有116703元&#xff0c;之后存折遗失。2016年&#xff0c;陈伯在搬家时找到这个存折。从2017年开始&#xff0c;陈伯多次拿着存折到银行取款&#xff0c;均被银行告知账…

上市公司降价200万卖房仍然无人接手,有的甚至降价1900万

房价降价200万甩卖房子还卖不出去&#xff1f;看到这估计很多人不相信&#xff0c;因为通过各种数据统计&#xff0c;我们可以看到2018年中国大部分城市的房价都是上涨的&#xff0c;而且部分城市甚至上涨40%以上&#xff0c;但我们普通老百姓看到的却是有些业主降价几十万甚至…

写一篇新文章

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

男子借款70万前后还了1600万仍未还清,如何避免套路贷?

事件回顾&#xff1a;男子借70万陷入套路贷&#xff0c;前后还了1600万。浙江宁波有一侯姓男子&#xff0c;自己是做石材生意的&#xff0c;本来自己一直安安分分做着生意&#xff0c;2013年年底&#xff0c;因为对一个建筑项目投标&#xff0c;急需一大笔钱。他通过中间人向张…

测试下HTML博文

发布测试 <script>window.onload function () {var obj document.getElementById("box");alert("获取#box元素成功");} </script>

Photoshop图层学习总结

移动工具选择图层 方式1&#xff1a;按Ctrl键并单击画布相应位置&#xff0c;选择相应图层 方式2&#xff1a;勾选“自动选择” 图层蒙版 图层蒙版中白色部分&#xff0c;对应图层位置会显示&#xff1b;黑色部分&#xff0c;对应图层不显示(即为透明) 1、可在图层面板创建 2、…

5000万存银行会有什么待遇?有钱真让人羡慕!

年底了估计有不少朋友家里拆迁&#xff0c;5000万赔偿款正愁着没地方花&#xff01;所以想找个银行存钱&#xff01;开个玩笑&#xff0c;我们回归正题&#xff0c;你要是真有5000万存进银行&#xff0c;那不管是对国有大银行还是对一些小银行来说&#xff0c;绝对是一笔大额数…

2018年中国人均GDP接近1万美元,这在全球处于什么样的水平?

按照人均1万美元计算&#xff0c;目前我国大概可以排在世界第64位&#xff0c;比2017年的上升6位左右。中国人均GDP突破1万亿美元&#xff0c;属于中等偏上收入国家1月16日有媒体爆料&#xff0c;预计2018年人均国内生产总值可接近1万美元。1万美元的人均GDP略高于中等偏上收入…

信用卡逾期不还是否要坐牢?看法律是怎么规定的

信用卡不还款要坐牢&#xff1f;估计这事情说的有点严重&#xff0c;但事实上确实有不少人因为信用卡逾期还不上而被法院判刑了的。我们先来看2个实际的案例。案例1&#xff1a;萍乡一贸易老板经常套现信用卡用于偿还债务。2014年5月开始&#xff0c;黄某开始不按期归还信用卡账…

优惠到期,2月1日起支付宝将恢复0.6%的手续费

这个题目相信很多网友都会一脸茫然&#xff0c;支付宝优惠到期是什么优惠呢&#xff1f;我们怎么没有享受过&#xff1f;其实这个所谓的优惠就是刷卡手续费的费率优惠&#xff0c;当然这个主要是针对商家而言&#xff0c;对普通消费者暂时没有什么影响。可能说到刷卡手续费&…

语义分析 文本矛盾点解析_关于解析文本的几点思考

语义分析 文本矛盾点解析Yesterday I wrote about three course modules in Oslo, and the fact that most of the presentation material is online. Today I will be writing about one lesson in the curriculum about ‘Parsing’. First I will share a few general thoug…

专家建议用南方的养老金拿去救济东北,网友炸锅了

随着我国老龄化的不断加剧&#xff0c;养老资金已经成为了社会要面临的一个艰巨问题&#xff0c;特别是在东北地区&#xff0c;这些年来东北地区经济发展比较缓慢&#xff0c;导致养老资金收入也跟着放慢&#xff0c;目前有的省份养老基金结余已经为负数&#xff0c;这对于如何…

明明知道银行存款会贬值,为什么还有那么多人把钱放在银行?

钱存在银行肯定是贬值的&#xff0c;但是对于那些风险意识比较低&#xff0c;或者从风险承受能力比较低的人来说&#xff0c;你除了存在银行&#xff0c;还有别的更好选择吗&#xff1f;没有&#xff01;银行存款利率基本上跑不赢通货膨胀。最近几年&#xff0c;我国货币量的不…