如何实现51汇编8汇编8255两位数码管动态显示6数字,每位数字每次加一

51单片机怎么让数码管显示学号?用汇编语言_百度知道
51单片机怎么让数码管显示学号?用汇编语言
最好有电路图
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
数码管连接电路如图1所示,P0口输出码型,P2口输出位选。锁存器74HC573起驱动作用,提供驱动电流供数码管发光。译码器74HC138将位选地址转换成位选信号,例如当前是第5个数码管显示,那么P2口输出位选地址05H,译码器输入CBA=110,输出位选信号Y7-Y0=,其中Y5=0,第5个数码管选通并显示,其它数码管不显示。实验时将J6的左边两个引脚针(1和2)用跳冒连接,锁存器11脚接VCC,关闭锁存功能。&&&&数码管显示方式为动态扫描方式,当P0口送第一个数0的码型到锁存器时,P2送位选地址01H,即Y0=0,只有第一个数码管亮,显示0,其他数码管不显示。当P0口送第二个数1的码型到锁存器时,P2送位选地址02H,即Y1=0,只有第二个数码管亮,显示1,其他数码管不显示。即每次只有一个数码管点亮,8个数码管是轮流被点亮的,轮流点亮的间隔时间很短(一般用延时程序延时几个毫秒),由于视觉的暂留现象,看到的却好象全都点亮着,这就是动态扫描。&&数码管显示数字的码型由数码管的数据脚a~dp决定,图2为数码管的笔段分布图,由于是共阴极的,所以当a~dp为高电平时相应的笔段会亮,电路中P1.0~P1.7分别接数码管的a.b.c.d.e.f.g.dp,得到0~9这10个数字的码型如表1所示。图2&数码管的笔段分布图引脚 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1P0.0数字&&码型笔段 dp g f e d c b&&&a
0 0 1 1 1 1 1&&&1 0&&&&&3FH 0 0 0 0 0 1 1&&&&0 1&&&&&06H 0 1 0 1 1 0 1&&&1 2&&&&&&5BH 0 1 0 0 1 1 1&&1 3&&&&&&4FH 0 1 1 0 0 1 1&&&0 4&&&&&&66H 0 1 1 0 1 1 0&&&1 5&&&&&&6DH 0 1 1 1 1 1 0&&1 6&&&&&7DH 0 0 0 0 0 1 1&&1 7&&&&&&07H 0 1 1 1 1 1 1&&1 8&&&&&&&7FH 0 1 1 0 1 1 1&&1 9&&&&&&&6FH 1 0 0 0 0 0 0&&0 小数点80H只要把上面的相关数,改成学好就可以了。
采纳率:19%
ORG 00H AJMP MAIN ORG 30HMAIN: MOV 20H,#2把你的学号的10位送到相应单元 MOV 21H,#8 MOV 22H,#3 MOV 23H,#0 MOV 24H,#8 MOV 25H,#5 MOV 26H,#0 MOV 27H,#4 MOV 28H,#0 MOV 29H,#7 LCALL DISP显示子程序
AJMP MAINDISP: MOV A,20H送最高位到A ACALL SEG7取码指针子程序 MOV P0,A段码送P0口 CLR P2.0位选
ACALL DLY延时1MS,即显示1MS SETB P2.0关显示。 动态显示的方法就是 :取优码,送段码,位选,延时1MS,关显示. MOV A,21H下一位 ACALL SEG7 MOV P0,A CLR P2.1 ACALL DLY SETB P2.1 MOV A,22H
ACALL SEG7 MOV P0,A CLR P2.2 ACALL DLY SETB P2.2 MOV A,23H
ACALL SEG7 MOV P0,A CLR P2.3 ACALL DLY SETB P2.3 MOV A,24H
ACALL SEG7 MOV P0,A CLR P2.4 ACALL DLY SETB P2.4 MOV A,25H
ACALL SEG7 MOV P0,A CLR P2.5 ACALL DLY SETB P2.5 MOV A,26H
ACALL SEG7 MOV P0,A CLR P2.6 ACALL DLY SETB P2.6 MOV A,27H
ACALL SEG7 MOV P0,A CLR P2.7 ACALL DLY SETB P2.7 MOV A,28H
ACALL SEG7 MOV P0,A CLR P3.0 ACALL DLY SETB P3.0 MOV A,29H
ACALL SEG7 MOV P0,A CLR P3.1 ACALL DLY SETB P3.1 RET DLY: MOV R7,#10延时1MS子程序。12M晶振,粗略算法:2X R7 X R6D1: MOV R6,#50 DJNZ R6,$ DJNZ R7,D1 RETSEG7: INC A MOVC A,@A+PC RET
共阴管段码
没线路图,说了也是白说。
找本单片机的书,有很多汇编语言点亮数码管的子程序的!自己研究一段,做成一个子程序就OK了!
#include &REG52.H&#include &intrins.h&#include &absacc.h&void time(unsigned int ucMs);
/*延时单位: ms*/void display(void);
/*显示0, 1,..,7*//*********************************************************/void main (void){
display();
display(void)
/*显示0, 1,
,7*/{unsigned char code LEDValue[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};unsigned char position=0x01;
for (i=0; i&8; i++)
XBYTE[0x0FFF8] = LEDValue[i];
/*显示内容*/
XBYTE[0x0FFF9] =
/*位译码输入*/
position = position&&1;
/*状态维持*/
}}/**********************************************************
函数说明:延时5us,晶振改变时只用改变这一个函数! 1、对于11.0592M晶振而言,需要2个_nop_(); 2、对于22.1184M晶振而言,需要4个_nop_();*********************************************************/void delay_5us(void)
//延时5us,晶振改变时只用改变这一个函数!{ _nop_(); _nop_();}/************ delay_50us ***************/void delay_50us(void)
//延时50us{
for(i=0;i&4;i++) {
delay_5us(); }}/******** 延时100us ******************/void delay_100us(void)
//延时100us{ delay_50us(); delay_50us();}/*********** 延时单位:ms *******************/void time(unsigned int ucMs)//延时单位:ms{
while(ucMs&0){
for(j=0;j&10;j++) delay_100us();
ucMs--; }}
其他2条回答
为您推荐:
其他类似问题
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。汇编数字钟_8位数码管显示_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
汇编数字钟_8位数码管显示
电气工程师|
总评分4.4|
用知识赚钱
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢怎么让51单片机的数码管显示不同的数字
感激不尽!! - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
怎么让51单片机的数码管显示不同的数字
感激不尽!!
20:28:20  
15130&查看
小弟小白一个。。。刚入手51单片机, 问题是单片机的控制数码管的锁存器只有一个,就是说只有一个74HC573控制着8个数码管;&&郭老师的视频我看了,他的有2个573&&。。。 所以我的单片机少了一个哎& &现在不会亮出不同的数字& &&&心里面很急很急& &希望大家帮帮忙&&小弟感激不尽 感激不尽~~~~
20:34:49  
设置一个延时,一个while(1)循环,循环内让每一个电子管依次打开位选,各自的断选,并且每个电子管显示延时1毫秒。。
爪机无力,就不写程序了
21:54:50  
用一组I/O口独立控制位选啊,573控制段选
23:04:57  
新人木有E币啦。T.T
11:33:52  
设置一个延时,一个while(1)循环,循环内让每一个电子管依次打开位选,各自的断选,并且每个电子管显示延时 ...
谢谢啦 。 我下去试试& &
12:17:15  
clude&reg52.h& #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; void delay(uint z); void main() {& & & &&&& & & & while(1) & & & & { & & & & & & & & wela=1; & & & & & & & & P0=0 & & & & & & & & wela=0; & & & & & & & & dula=1;& &&&& & & & P0=0x6d; & & & & & & & & dula=0; & & & & & & & & delay(1);& & & &&&& & & & & & & &&&& & & & & & & & wela=1; & & & & & & & & P0=0 & & & & & & & & wela=0; & & & & & & & & dula=1; & & & & & & & & P0=0x5b; & & & & & & & & dula=0; & & & & & & & & delay(1); & & & & & & & &&&& & & & & & & & wela=1; & & & & & & & & P0=0 & & & & & & & & wela=0; & & & & & & & & dula=1; & & & & & & & & P0=0x3f; & & & & & & & & dula=0; & & & & & & & & delay(1);& & & &&&& & & & & & & & & & & &&&& & & & & & & &&&& & & & & & & & & & & & & & & & & & & &&&& & & & }& & & & & & & &&&} void delay(uint z) { & & & & uint x,y; & & & & for(x=z;x&0;x--) & & & && & for(y=110;y&0;y--);
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司基于51单片机的LED数码管动态显示_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于51单片机的LED数码管动态显示
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩3页未读,
定制HR最喜欢的简历
你可能喜欢八位数码管动态显示程序
16:55:42编辑:什么鱼 关键字:&&&&
这个是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 charsbit duan=P2^6;&&&& sbit wei=P2^7;
uchar& a,numw,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}; //第二步骤,创建位显,就是显示的位置,这个码表相对简单,用二进制表示11111,是0的为八位数显管的位置void main(){&a=0;&&&&&&&&&&& //定义个时间函数&numw=0;&&&& //附位显初值为0位&numd=0;&&&& //附段显初值为0位&&TMOD=0X01;&&& //第四步骤,附中断暂存器初值&TH0=()/256; //附中断请求时间初值,高8位&TL0=()%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=0 数码管不显示任何信号,默认情况下通电本身就不显示,可以不写&duan=1;& //开启段显端口&P0=0x06; //附值段显数值为1,可以查阅数码管电路图相对应显示的对码表&duan=0;& //锁存,保持上一步段显状态,硬件说明请查阅74HC573功能&wei=1;& //开启位显端口&P0=0 //附值位显位置,,左边第一位,为0的显示&wei=0;& //锁存,保持上一步位显状态,硬件说明请查阅74HC573功能}*/& & } &} }
void timer0() interrupt 1 /*第四步骤,中断时间函数这个相当于移位数显的速度,速度够快,人眼就会有余辉效应,&&&&&& 感觉8位数显一直在亮着,相当于正在播放的电影胶卷*/
{&TH0=()/256;&TL0=()%256;&a++;}
以上有什么地方还需要改进的还请老师明示
关键字:&&&&
来源: 21ic
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //第二步骤,创建位显,就是显示的位置,这个码表相对简单,用二进制表示11111,是0的为八位数显管的位置void main(){&a=0;&&&&&&&&&&& //定义个时间函数&numw=0;&&&& //附位显初值为0位&numd=0;&&&& //附段显初值为0位&&TMOD=0X01;&nbsp
题目:用两个动态数码管从0显示到60,由89C51的P1口输出,不加译码器,直接连接数码管,注意是动态数码管,不是两个单独的静态数码管。;=====================================程序如下:&&&&&&& ORG& 0000H&&&&&&& LJMP MAIN&&&&&&& ORG& 0100HMAIN:&&&&&&nbsp
51单片机,要求用 8 位数码管动态显示 12 位学号。还要用按键调整走动速度,C语言的。//-------------------------------------------#include &reg52.h&#include &intrins.h&sbit &k_add = P3^1;sbit &k_sub = P3^4;//-------------------------------------------unsigned char code SEG7[] = {& & 0xc0
数码管是单片机系统中经常用到的显示器件, 从内部结构上可以分为共阴极和共阳极数码管。对不同的数码管,电路的接法也不一样。图1A为数码管的结构图。以共阳极数码管为例, 要想点亮某段, 只需要在相应的段上给低电平即可。图1B为共阳极数码管段码分布, 以及一个显示的实例。&图1 数码管段码分布及显示示例按照工作方式, 数码管驱动可以分为静态显示和动态扫描。所谓静态显示, 就是每一个数码管的段码都要独占具有锁存功能的输出口, CPU把要显示的字码送到输出口上,就可以使数码管显示对应的字符, 直到下一次送出另外一个字码之前, 显示的内容一直不会消失;动态扫描是把所有显示器的8个段码中的A-dp的各个相同段连接在一起, 接到一个公共
//电路里有4个七段LED,用此程序,每个LED的刷新周期为200/4=50Hz。&&&&& //程序里实时改变DispResult的值,显示就会相应改变。&&&&& #include &iom8v.h&&&&&& #include &macros.h&&&&&& unsigned char&&&&&& table[10]={0xc0
;&&TH0&=&0xFC;&//重新加载初值
&&&&TL0&=&0x67;
&&&&//以下代码完成&LED&点阵动态扫描刷新
&&&&P0&=&0xFF;&&//显示消隐
&&&&switch&(i){
&&&&&&&&case&nbsp
热门资源推荐
最新单片机文章
最新视频课程
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。
相关热搜器件

我要回帖

更多关于 七段数码管动态显示汇编6 的文章

 

随机推荐