这个是51hei开发板专区里转来的一个程序,注释很详细,运行也没有问题,原文地址:http://www.51hei.com/bbs/dispbbs.asp?boardid=10&id=4140
/*动态数显的设计思路,首先是我们要先知道怎样才能使哪个位亮,显示的段是什么数值,接下来就是中断时间
的问题了,设计步骤如下,如果要让八个数码管静态显示1到8,我们可以修改中断时间,如把50000改成100或更低*/
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
uchar a,numw,numd;
uchar code tabled[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f}; /*第二步骤,创建段显数值的对码表0~9数值.如果要显示1~8数值,最好多加前后两位数0跟9,
因为后面++移位时就能按我们常规顺序亮下去,至于如何显示对应数值请先看数码显示电路图*/
uchar code tablew[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f}; //第二步骤,创建位显,就是显示的位置,这个码表相对简单,用二进制表示11111110~01111111,是0的为八位数显管的位置
void main()
{
a=0; //定义个时间函数
numw=0; //附位显初值为0位
numd=0; //附段显初值为0位
TMOD=0X01; //第四步骤,附中断暂存器初值
TH0=(65535-50000)/256; //附中断请求时间初值,高8位
TL0=(65536-50000)%256; //附中断请求时间初值,低8位
EA=1; //开启总中断
ET0=1; //开启定时中断
TR0=1; //启动定时中断
while(1)
{
if(a==10) //第三步骤,执行速度,如果等20差不多是1秒,则往下执行,相当于单位数值亮的时间
{
a=0; //重新附值初值0
numd++; //段显值++
if(numd==9) //如果段值在对码表第9位则转下执行
numd=1; /*重新附值段显值对应对码表第1位,因为++所以0位并不在数码管中显示.
如果要显示,也会因为++而在第二轮中显示出*/
duan=1; //开启段显端
P0=tabled[numd];//附段显P0值对应段显值对码表
duan=0; //锁存
wei=1; //开启位显端
P0=tablew[numw];//附位显P0值对应位显值对码表
wei=0; //锁存
numw++; //相当于位显移位
if(numw==8) //如果位显值到对应位显对码表第八位则转下执行
numw=0; //重新附值位显值对应对码表第0位起
/*
下面是简单的单个数码管显示例证 第一骤, 修改后在第三步骤内
#include"reg52.h"
#include"intrins.h"
sbit duan=P2^6; //段显端口
sbit wei=P2^7; //位显端口
void main()
{
//P0=0xff; 数码管不显示任何信号,默认情况下通电本身就不显示,可以不写
duan=1; //开启段显端口
P0=0x06; //附值段显数值为1,可以查阅数码管电路图相对应显示的对码表
duan=0; //锁存,保持上一步段显状态,硬件说明请查阅74HC573功能
wei=1; //开启位显端口
P0=0xfe; //附值位显位置,01111111,左边第一位,为0的显示
wei=0; //锁存,保持上一步位显状态,硬件说明请查阅74HC573功能
}
*/
}
}
}
void timer0() interrupt 1 /*第四步骤,中断时间函数这个相当于移位数显的速度,速度够快,人眼就会有余辉效应,
感觉8位数显一直在亮着,相当于正在播放的电影胶卷*/
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
/*
以上有什么地方还需要改进的还请老师明示
*/
上一篇:智能定时插座程序
下一篇:学习型红外遥控器汇编语言程序
推荐阅读最新更新时间:2024-03-16 13:11
设计资源 培训 开发板 精华推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
- DSP-Sitara精品课上线,礼品、开发板等你拿!
- 看帖打卡赚现金:挑战21天学习freertos,打卡成长&赚外快
- 有奖直播|2021年STM32峰会暨粉丝狂欢节
- 【EEWORLD第三十三届】2011年12月社区明星人物揭晓!
- Mouser 福利活动:邀请新用户下单,各得百元奖励!
- 安全在任何时候都是第一要素,你的嵌入式设计也是!诚邀参加英飞凌 OPTIGA™ Trust M 安全防御大揭秘!
- 答题赢好礼| ADI 智能楼宇烟雾探测方案
- 电子电路经典课程带你开启充电模式!抢楼有礼喽!
- 【EEWORLD带你DIY】数字示波器V2.0火热进行中......
- 免费测评| TDK-Lambda 电源降压模块