用单片机AT89C51驱动两位数码管显示00--99依次循环程序代码

作者&投稿:姚美 (若有异议请与网页底部的电邮联系)
~ 以下是用单片机AT89C51驱动两位数码管显示00--99循环的程序代码片段:

程序开始于0000h地址,通过计数器temp(22h)控制数码管从00到99的循环显示。计数器初始化为0,然后调用子程序display进行显示。每当计数器加1并判断是否达到100后,若未满则返回stlop继续循环,满100则清零重新开始。

display子程序中,先将temp中的值转换为十进制,然后根据十位和个位数字,分别从NUMTAB数组中查找对应的7段代码,并依次将它们送到P0口显示。在显示每个位数时,会控制P2.6和P2.7引脚以防止鬼影。整个显示过程会循环执行250X4次,每次延时约162微秒。

NUMTAB数组存储了0到9的共阴显示7段代码,D1MS子程序用于实现162微秒的延时。最后,程序结束。


怎么我的KEIL软件里atmei目录下没有AT89C5X系列的单片机呢?是我安装...
是啊,你安装错了,Keil有两个版本,一是Keil C51,用来编写51程序的,二是Keil Realview MDK 是用来编写ARM的,两个的界面是一样的,很明显,你这个装的是 RVMDK

智能机器人的组成与结构
电动机驱动电路采用两个NPN管对单片机AT89C5 1的I\/O口输出电流信号放大,利用电阻R19、R20作为三极管基极进行保护。当单片机I\/O口有信号输出时.该电流经电阻后送入第机器人技术 中文核心期刊《微计算机信息》(嵌入式与SOC)2007年第23卷第12.2期一级三极管基极,使第一级_一极管导通,导通电流经电阻送人第二个三极...

ADI,TI,NXP,MAX,PIC是什么
回答:ADI 亚德诺半导体技术有限公司 Analog Device Inc. 亚德诺半导体技术公司(Analog Devices, Inc. 纽约证券交易所代码:ADI)自从1965年创建以来到2005年经历了悠久历史变迁,取得了辉煌业绩,树立起成立40周年的里程碑。回顾ADI公司的成功历程——从位于美国马萨诸塞州剑桥市一座公寓大楼地下室的简陋实验室开...

北湖区15791088614: 基于AT89C51单片机,利用定时器设计一个两位数码 管显示电路.求详细的设计过程. -
梅辰默迪: 硬件很简单,我就不画图了,简单描述一下吧.在单片机最小系统的基础上,P0口接数码管的数据端,P2.6,P2.7接数码管的控制端. 程序如下: #include #define uint unsigned int #define uchar unsigned char sbit s1=P2^6;//十位 ...

北湖区15791088614: AT89c51单片机程序控制两个数码管显示00 - 59秒表的程序要怎么编啊? -
梅辰默迪: display(second)子函数与两个数码管的连接方式有关 void main(void )//主程序 { TMOD=0x01;// 定时器1工作方式一 ET0=1; EA=1; TH0=(65536-10000)/256;//定时10ms TL0=(65536-10000)%256; TR0=0;//上电先不启动 while(1) { if(key1==0)//判...

北湖区15791088614: 用AT89C51单片机编写一个C语言程序实现2个数码管秒计数器,用4个按键分别控制暂停、加一秒、减一秒和继续 -
梅辰默迪: #include<reg51.h>#define uchar unsigned char; uchar LED1,LED2; uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar num=0;sec,key; void delay(unsigned int a) { unsigned int i,j; for(i=0;i<a;i++) for(j=0;j<120;j++); } void ...

北湖区15791088614: 用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一.另设计一个“开始”按键和一 -
梅辰默迪: 因为分数低,只好给你说我的思路 因为是秒表,当然用定时器,我常用的是定时器0,工作方式1 TMOD=0X01;给一个溢满值3CB020次为一秒 if(counter> 19) {second++;conunter= 0;} 而后,动态显示,懂吧,用调用延迟 然后快加,每10ms快速加1,关了定时器0,换定时器1?至于暂停,也是一个中断吧,保持现状,就是变量值不改变,而后当然调用显示函数.再按下按键跳出循环.不知道行不行,参考而已

北湖区15791088614: 1、 基于AT89C51单片机,利用定时器设计一个两位数码管显示电路. 设计要求:每隔2S显示数字加1,显示初值
梅辰默迪: <p>这个我仿真过了 是有用的,,,是从00开始显示 到了99会从新开始从00开始加</p> <p>#include<reg51.h></p> <p>#define uchar unsigned char </p> <p>#define uint unsigned int</p> <p>uchar code disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x...

北湖区15791088614: 单片机中用at89c51控制74hc595驱动双联装数码管怎么连接线路?怎么写程序? -
梅辰默迪: 主要看你的数码管是共阴还是共阳的,如果是共阳那就好办,595的8个输出连数码管的7段和小数点,然后两个位选直接用8550驱动就行了,程序的思路就是先选通位,然后给595段码,然后延时再选通另外一位再给595段码延时,一直重复这个就行了.

北湖区15791088614: 利用AT89C51单片机实现两个共阳数码管倒数计时99秒,求程序!!要求是C语言的 -
梅辰默迪: 这是正时,改动一下 #include unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00}; unsigned char second; unsigned char keycnt; unsigned int tcnt; void main(void) { unsigned...

北湖区15791088614: 急求AT89C51单片机用按键控制输入串行数码管显示程序 -
梅辰默迪: SBUF=dispcode[num0];//第1位 while(!TI); TI=0; led0=0; delay(2); led0=1; SBUF=dispcode[num1];//第2位 while(!TI); TI=0; led1=0; delay(2); led1=1; SBUF=dispcode[num2];//第3位 while(!TI); TI=0; led2=0; delay(2); led2=1;

北湖区15791088614: 关于单片机AT89C51程序,利用两个数码管,利用按键控制实现“数字减一”显示99到00. -
梅辰默迪: #include "reg52.h" #include<intrins.h> #define uchar unsigned char uchar code LED_TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned int x=9999; void delay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网