急,在线等!求单片机 AT89C51 八段数码管显示程序和各程序段的功能详细解释!

如题所述

  #include<reg52.h>
  #define uchar unsigned char /*unsigned char 缩写为uchar*/
  #define uint unsigned int/*unsigned int 缩写为int*/
  sbit wei=P2^0; /*共阴极接在P2^0,8个阳极分别接在P08个端口*/

  uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; /*0-9的数码管显示控制*/
  void init () /* 初始化函数 */
  {

  P0=0XFF;/*使数码管开机不显示*/
  P2=0X00;/*使数码管开机不显示*/

  }
  void delay(uchar z) /*延时函数*/
  {
  uchar i,j;
  for(i=100;i>0;i--)
  for(j=z;j>0;j--);

  }

  void display(uchar ge ) /*显示函数 带返回值 */
  {
  P2=0X00;/*关闭上一次显示内容*/
  wei=1;/*给共阳极输入高电平*/
  P0=num[ge];/*给阴极输入该有的低电平 由数组控制 0-9均可显示*/
  delay(5);/*延时一下 以便人能看的出来 */

  }

  void main() /*主函数*/
  {
  init();/*调用初始化*/
  while(1)/*进入死循环 让数码管一直显示*/
  {

  display(1);/*显示数字 括号里面是多少显示就是多少*/
  }
  }

  刚刚写好的 自己写的 绝对不是炒的 如果你是共阴极则为

  #include<reg52.h>
  #define uchar unsigned char /*unsigned char 缩写为uchar*/
  #define uint unsigned int/*unsigned int 缩写为int*/
  sbit wei=P2^0; /*共阴极接在P2^0,8个阳极分别接在P08个端口*/

  uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; /*0-9的数码管显示控制*/
  void init () /* 初始化函数 */
  {

  P0=~0XFF;/*使数码管开机不显示*/
  P2=~0X00;/*使数码管开机不显示*/

  }
  void delay(uchar z) /*延时函数*/
  {
  uchar i,j;
  for(i=100;i>0;i--)
  for(j=z;j>0;j--);

  }

  void display(uchar ge ) /*显示函数 带返回值 */
  {
  P2=~0X00;/*关闭上一次显示内容*/
  wei=0;/*给共阴极输入高电平*/
  P0=~num[ge];/*给阴极输入该有的低电平 由数组控制 0-9均可显示*/
  delay(5);/*延时一下 以便人能看的出来 */

  }

  void main() /*主函数*/
  {
  init();/*调用初始化*/
  while(1)/*进入死循环 让数码管一直显示*/
  {

  display(1);/*显示数字 括号里面是多少显示就是多少*/
  }
  }
温馨提示:内容为网友见解,仅供参考
无其他回答

...八段数码管显示程序和各程序段的功能详细解释!
while(1)\/*进入死循环 让数码管一直显示*\/ { display(1);\/*显示数字 括号里面是多少显示就是多少*\/ } }

AT89C51数码管动态显示
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,\/\/0~9的段码值 0xf1,0xbf};\/\/J,-的段码 uchar ledram[]={10,2,11,0,6,11,2,9};\/\/10显示J,11,显示-,其余为显示的5个数,可以改 void delay()\/\/延时子程序 { uint j;for(j=400;j>0;j--)...

急求基于单片机AT89C51的多功能数字电子钟的汇编程序,高手进!~
用89C51控制3个HC595,前两个595接8段数码显示管,显示“0”~“9”每秒跳动一次.第3个HC595接8个LED灯,每隔1秒闪烁1次.include<at89x52.h> include<intrins.h> define uchar unsigned char define uint unsigned int uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90...

求:用AT89C51单片机实现直流电机PWM调速原理图,protues仿真、程序
if(k==0)\/\/正转时显示"三"{

AT89C51单片机用8位7段显示管显示160530 求大佬帮忙给个c语言的程序
break; case 1: P2=0x80; P0=ledtab[3]; break; case 2: P2=0x40; P0=ledtab[5]; break; case 3: P2=0x20; P0=ledtab[0]; break; case 4: P2=0x10; P0=ledtab[6]; break; case 5: P2=0x08; P0=ledtab[1]; break...

高分 求 单片机直流电压表原理流程图
1).AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了...

at89c51单片机实现电子时钟,不带闹铃。显示时分秒。求图求程序
0x7d,0x07,0x7f,0x6f,0x00,0x80};\/*0~9和无显示、的数码管段码*\/ uint dd=0,sec=0,min=0,hour=12; \/\/时间初始值12:00:00 uchar sec1=0,min1=0,hour1=0,set=0,sw=0;\/\/闹钟设定初始值0:00:00 uchar x[7],y[7];uint temp,k; \/\/ variable of temperature uchar flag1...

用单片机AT89C51驱动两位数码管显示00--99依次循环程序代码
以下是用单片机AT89C51驱动两位数码管显示00--99循环的程序代码片段:程序开始于0000h地址,通过计数器temp(22h)控制数码管从00到99的循环显示。计数器初始化为0,然后调用子程序display进行显示。每当计数器加1并判断是否达到100后,若未满则返回stlop继续循环,满100则清零重新开始。display子程序中,先...

关于at89c51单片机 定时中断的问题
用T0定时器定时50ms,采用中断方式,对中断计数20次,就是1秒,再对1秒计数就可以了。其次是显示出计时的秒即可。这个提问有这么多灌水的回答,而且也网友采纳了。你能采纳了,用私信发给你程序。仿真图如下

急~!!用数码管显示60秒的秒表设计(单片机AT89C51)
;程序如下:;fosc = 11.0592MHz SP1 BIT P3.2 LED BIT P3.4 ;--- ORG 0000H SJMP START ORG 000BH MOV TH0, #4CH JNB F0, T0_END DJNZ R5, T0_END MOV R5, #20 INC R4 CJNE R4, #60, T0_E1 ;最大为59 MOV R4, #0 CLR LED T0_E1...

相似回答