急求PROTUES实现万年历 单片机C语言程序做的 HEX文件 源程序和仿真图

作者&投稿:智砌 (若有异议请与网页底部的电邮联系)
能不能把你做的单片机电子时钟程序和仿真hex文件发给我呢~

可以,附件即是。

你好!
具体什么要求,是12864显示吗,编程是汇编还是c语言

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit db=P2^7;
char i,sec,min,h,date,month,year,flag;
uchar j,k,m,n,o,p;
sbit dula=P2^0;
sbit wela1=P2^1;
sbit wela2=P2^2;
sbit key_ch=P3^5;
sbit key_add=P3^6;
sbit key_minus=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void init();
void delay(uint);
void second_display();
void minute_display();
void hour_display();
void date_display();
void month_display();
void year_display();
void control();
void time();
void main()
{
 init();
 while(1)
 {
  second_display();
  minute_display();
  hour_display();
  date_display();
  month_display();
  year_display();
  control();
 }
}
void init()
{
 db=0;
 i=0;
 sec=0;
 min=0;
 h=0;
 date=1;
 month=1;
 year=1;
 flag=0;
 wela1=0;
 wela2=0;
 EA=1;
 ET0=1;
 TMOD=0x01;
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 TR0=1;
}
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void second_display()
{
 int sec_shi,sec_ge;
 sec_shi=sec/10;
 sec_ge=sec%10;

 if(flag==1&&j!=1)
  j++; 
 else
 {
  j=0;
  dula=1;
  P0=~table[sec_ge];
  dula=0;
  wela1=1;
  P1=0x00;
  wela1=0;
  wela2=1;
  P1=0x20;
  wela2=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0;
  
  dula=1;
  P0=~table[sec_shi];
  dula=0;
  wela1=1;
  P1=0x00;
  wela1=0; 
  wela2=1;
  P1=0x10;
  wela2=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0; 
 }
}
void minute_display()
{
 int min_shi,min_ge;
 min_shi=min/10;
 min_ge=min%10;
 
 if(flag==2&&k!=1)
  k++; 
 else
 {
  k=0;
  dula=1;
  P0=~table[min_ge];
  dula=0;
  wela1=1;
  P1=0x00;
  wela1=0;
  wela2=1;
  P1=0x08;
  wela2=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0;
  
  dula=1;
  P0=~table[min_shi];
  dula=0;
  wela1=1;
  P1=0x00;
  wela1=0;
  wela2=1;
  P1=0x04;
  wela2=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0; 
 }
}
void hour_display()
{
 int h_shi,h_ge;
 h_shi=h/10;
 h_ge=h%10;
 
 if(flag==3&&m!=1)
  m++; 
 else
 {
  m=0;
  dula=1;
  P0=~table[h_ge];
  dula=0;
  wela1=1;
  P1=0x00;
  wela1=0;
  wela2=1;
  P1=0x02;
  wela2=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0;
  delay(1);
  
  dula=1;
  P0=~table[h_shi];
  dula=0;
  wela1=1;
  P1=0x00;
  wela1=1;
  P1=0x00;
  wela1=0;
  wela2=1;
  P1=0x01;
  wela2=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0;
  wela2=0;
  delay(1);
 }
  
}
void date_display()
{
 int date_shi,date_ge;
 date_shi=date/10;
 date_ge=date%10;

 if(flag==4&&n!=1)
  n++; 
 else
 {
  n=0;
  dula=1;
  P0=~table[date_ge];
  dula=0;
  wela2=1;
  P1=0x00;
  wela2=0;
  wela1=1;
  P1=0x80;
  wela1=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0;
  
  dula=1;
  P0=~table[date_shi];
  dula=0;
  wela2=1;
  P1=0x00;
  wela2=0;
  wela1=1;
  P1=0x40;
  wela1=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0; 
 }
}
void month_display()
{
 int month_shi,month_ge;
 month_shi=month/10;
 month_ge=month%10;

 if(flag==5&&o!=1)
  o++; 
 else
 {
  o=0;
  dula=1;
  P0=~table[month_ge];
  dula=0;
  wela2=1;
  P1=0x00;
  wela2=0;
  wela1=1;
  P1=0x20;
  wela1=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0;
  
  dula=1;
  P0=~table[month_shi];
  dula=0;
  wela2=1;
  P1=0x00;
  wela2=0;
  wela1=1;
  P1=0x10;
  wela1=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0; 
 }
}
void year_display()
{
 int year_qian,year_bai,year_shi,year_ge;
 year_qian=year/1000;
 year_bai=year%1000/100;
 year_shi=year%1000%100/10;
 year_ge=year%10;

 if(flag==6&&p!=1)
  p++; 
 else
 {
  p=0;
  dula=1;
  P0=~table[year_ge];
  dula=0;
  wela2=1;
  P1=0x00;
  wela2=0;
  wela1=1;
  P1=0x08;
  wela1=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0;
  
  dula=1;
  P0=~table[year_shi];
  dula=0;
  wela2=1;
  P1=0x00;
  wela2=0;
  wela1=1;
  P1=0x04;
  wela1=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0; 
 
  dula=1;
  P0=~table[year_bai];
  dula=0;
  wela2=1;
  P1=0x00;
  wela2=0;
  wela1=1;
  P1=0x02;
  wela1=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0;
 
  dula=1;
  P0=~table[2];
  dula=0;
  wela2=1;
  P1=0x00;
  wela2=0;
  wela1=1;
  P1=0x01;
  wela1=0;
  delay(1);
  dula=1;
  P0=0xff;
  dula=0;
  wela1=0;
 }
}
void control()
{
 if(!key_ch)
 {
  delay(5);
  if(!key_ch)
  {
   flag++;
   if(flag==7)
    flag=0;
  }
 }
 while(!key_ch);
 if(flag==1&&key_add==0)
 {
  while(!key_add);
  sec++;
  if(sec==60)
   sec=0;
 }
 if(flag==1&&key_minus==0)
 {
  while(!key_minus);
  sec--;
  if(sec==-1)
   sec=59;
 }

 if(flag==2&&key_add==0)
 {
  while(!key_add);
  min++;
  if(min==60)
   min=0;
 }
 if(flag==2&&key_minus==0)
 {
  while(!key_minus);
   min--;
  if(min==-1)
   min=59;
 }

 if(flag==3&&key_add==0)
 {
  while(!key_add);
  h++;
  if(h==24)
   h=0;
 }
 if(flag==3&&key_minus==0)
 {
  while(!key_minus);
  h--;
  if(h==-1)
   h=23;
 }

 if(flag==4&&key_add==0)
 {
  while(!key_add);
  date++;
  if(date==29)
   if((year%4!=0)&&(month==2))
    date=1;
  if(date==30)
   if((year%4==0)&&(month==2))
    date=1;
  if(date==31)
   if((month==4)||(month==6)||(month==9)||(month==11))
    date=1;
  if(date==32)
   if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))
    date=1;  
 }

 if(flag==5&&key_add==0)
 {
  while(!key_add);
  month++;
  if(month==13)
   month=1;
 }
 if(flag==5&&key_minus==0)
 {
  while(!key_minus);
  month--;
  if(month==0)
   month=12;
 }

 if(flag==6&&key_add==0)
 {
  while(!key_add);
  year++;
  if(year==99)
   year=1;
 }
 if(flag==6&&key_minus==0)
 {
  while(!key_minus);
  year--;
  if(year==0)
   year=99;
 } 
}

void T0_rpt() interrupt 1
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 i++;
 time();
}

void time()
{
 if(i==20)
 {
  i=0;
  sec++;
  if(sec==60)
  {
   sec=0;
   min++;
   if(min==60)
   {
    min=0;
    h++;
    if(h==24)
    {
     h=0;
     min=0;
     sec=0;
     date++;
     if(date==29)
      if((year%4!=0)&&(month==2))
      {
       date=1;
       month++;
       if(month==13)
       {
        month=1;
        year++;
       }
      }
     if(date==30)
      if((year%4==0)&&(month==2))
      {
       date=1;
       month++;
       if(month==13)
       {
        month=1;
        year++;
       }
      }
     if(date==31)
      if((month==4)||(month==6)||(month==9)||(month==11))
      {
       date=1;
       month++;
       if(month==13)
       {
        month=1;
        year++;
       }
      }
     if(date==32)
      if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))
      {
       date=1;
       month++;
       if(month==13)
       {
        month=1;
        year++;
       }
      }
    }
   }
  }
 } 
}



这个度娘应该很多阿...自己先搜一下吧


proteus怎么实现高低电平?
proteus可以给高低电平的开关,可以用一个单刀双掷开关,如下图左边的那个开关。需要接到VCC和GND上,才能实现上拨输出高电平,下拨输出低电平。当然不会与实验箱上完全相同的开关的,但效果是完全相同的。下图是输出高电平的状态。右边的那个,是调试工具中的。这种小工具输出高电平和低电平更直观和文便...

proteus中怎么实现双拍整步正转
1、首先在电脑中打开proteus软件、新建工程,打开自己的图纸。2、其次接着在器件中间连接一条线。3、最后按下d按键,电机即可产生正转、反转、停止的效果。

proteus如何实现可控电流
proteus实现可控电流步骤如下:1、打开proteus,点击左侧P按钮打开器件库。2、据控制支路的控制量的不同,受控源分为四种:电压控制电压源(VCVS)、电流控制电压源(CCVS)、电压控制电流源(VCCS)、电流控制电流源(CCCS),根据需要的类型在Keyword栏输入关键词,比如VCVS,按enter键可得到搜索结果,双击...

proteus如何实现波形的叠加
1、运行ISIS7professional点击虚拟仪器模式按钮。选择OSCILLOSCOPE(示波器),在绘图区点击鼠标左键,出现示波器图形,并移动鼠标到合适位置点击左键放置示波器。2、依上述方法放置正弦波发生器并连接引脚。选中正弦波发生器并双击弹出属性设置面板,将频幅设置为1V,频率设置为50HZ,点击运行按钮,运行后会弹出示...

proteus怎么在实物中接地和连接电源?
在跳开的界面中需要点击“P”字按钮。可以看到界面中的数字,输入“AT89C51”就会出现各种51单片专机。接下来是一系列的数子,用鼠标双击。4、proteus地线,就是接地,GND,是电源的负极。如下图,先点左边的工具条中的端子按钮,画红圈那个,列表的POWER就是电源正极,VCC,GROUND是电源负极,GND。

proteus 怎么实现串口仿真
点击打开 此软件不需安装,直接使用。打开串口调试助手,选择串口号和波特率,注意选择的是以上设置的虚拟串口(COM9)3.打开文件夹 用proteus打开 设置串口输出的物理接口(COM4)和波特率,导入HEX文件进行仿真。通过串口调试助手向单片机发送字符串,单片机每接收到10个字符就把它显示出来并且发送回给PC....

proteus怎么连线?
在Proteus中,蓝色的粗线代表总线,要与其他线连接,需要使用网络标签(Net Label)来实现。1. 理解总线与网络标签 在Proteus的电路设计中,总线是用于表示一组电线,它简化了复杂电路中的线路布局。而网络标签则是用于标识和连接这些电线的。网络标签允许您将不同的电线或组件连接到同一网络上,即使它们在...

怎么用proteus来仿真51
用proteus来仿真51的步骤:工具\/原料:Proteus,keil c51 1、首先我们打开Proteus软件,点击左边菜单栏的P按钮,然后再搜索框里输入80c51,选择第一个就是80c51单片机;2、然后在搜索框里面输入led,找到Optoelectronics,然后再里面选择LED-RED,红色的led,当然其他颜色也可以;3、接着我们点击鼠标右键可以...

proteus求教
proteus 仿真软件中的温度传感器U1和U2,是单总线结构,输出的是串行的数字温度,而且转换和读取温度时,也需要写入命令字。所以,你画的方框内应该用一个单片机,并根据U1和U2的温度差控制继电器。下图是读取温度的仿真图。

求proteus单片机c语言程序代码,四路抢答器
void main(){ unsigned char key,cont;bit flag = 0;初始化IO口;\\\\关闭红灯点亮绿灯,数码管显示0 while(1){ key = P1&0xF;if(key!=0xF){ \/*按下的按键相应绿灯关闭*\/ LED_G1 = (bit)(key&0x1);LED_G2 = (bit)(key&0x2);LED_G3 = (bit)(key&0x4);LED_G4 = (bit...

顺庆区19671081242: 电子日历单片机制作 -
衡衫草铂: 用51单片机就可以做.编写软件用keil.仿真软件可以用Proteus.方案可以有以下2种:1.用专门的时钟芯片,比较经典的有DS12887和DS1302,任一种都是可以的.模块就是单片机最小系统+时钟芯片模块电路就可以了.2.利用单片机的定时器来做,只是误差要大一些,也可以实现功能.日历的显示可以用液晶模块:1602,或者是用数码管搭建(较麻烦).网上应该有现成的仿真资料的,这基本都是学习单片机需要做的一个实验.如果对模块非常熟悉,可以直接买实物焊接.如果只是做着玩,做做仿真就行了.

顺庆区19671081242: 急求单片机编程高手帮我编一个AT89C51的时钟+万年历的程序! -
衡衫草铂: 基于单片机的数字钟(电子万年历) http://hi.baidu.com/dsu5566/blog/item/7cfe0fa480cd14fe9152eec8.html

顺庆区19671081242: 在protues上仿真单片硬件设置.怎样把汇编程序生成的文件装进去.用汇编语言编写的 -
衡衫草铂: 双击单片机 出现的对话框中可以导入文件(很明显,自己找一下) 然后将你生成的hex文件导入就可以了 主要设置下你单片机的晶振 默认是12M的 protues仿真时单片机不用画最小系统就能工作(电源也不用接,貌似也没有电源端口)

顺庆区19671081242: 用proteus进行单片机仿真时,是不是不管用单片机做什么,实现什么功能,都得画出晶振和复位电路才 -
衡衫草铂: 可以不用画 复位电路 相当于运行这个软件可以开始,停止 晶振,你双击单片机可以在对话框里面修改值.

顺庆区19671081242: 用JAVA语言怎么写“万年历”的类?急求!
衡衫草铂: import java.util.Scanner; public class PrintCalendar { public static void main(String[] args) { System.out.println("******************欢 迎 使 用 万 年 历******************"); Scanner input = new Scanner(System.in); System.out.print("\n请选择年份...

顺庆区19671081242: 有DSN文件和HEX文件怎么用Protues运行仿真 -
衡衫草铂: 你应该有protues这个软件的吧双击dsn文件用protues打开,就是protues的仿真原理图,图形类似于protel原理图.如果你打不开的话就是你的protues版本和dsn文件的版本不对.而hex只能用在protues仿真图里可编程的东西如8051单片机双击单片机,里边有个选项“打开文件”,你把hex文件路径填进去,然后就可以仿真单片机了

顺庆区19671081242: 急求250行左右的C语言万年历编程 -
衡衫草铂: #include <stdio.h> #include <stdlib.h> #include <conio.h> #define X " Sun Mon Tue Wed Thu Fri Sat"void menu() {system("cls");printf("\nTHIS IS THE MENU OF THE PROGRAM !");printf("\nYOU CAN CHOOSE THE NUMBER FOR ...

顺庆区19671081242: 急求java万年历源代码!!!
衡衫草铂: package org.java.test; import java.util.Scanner; public class CalendarTest{ public static void main(String[] args) { System.out.println("欢 迎 使 用 万 年 历"); Scanner input = new Scanner(System.in); System.out.print("\n请选择年份: "); ...

顺庆区19671081242: 求一个单片机的系统,最好是WORD 文档,要有电路原理图,程序源代码,程序流程图等,纯软件 -
衡衫草铂: 发了 几个 供参考1602+DS1302+闹钟.rar DS1302时钟.rar 51 单片音乐机及编程示意.rar

顺庆区19671081242: 急:C++程序设计, 万年历:要求输入年份,输出该年各月的日历 ,谢谢各位大大了 -
衡衫草铂: 计算每年的第一天是周几,这个道理很简单400年的天数刚好是7的倍数,所以只求余下的那些年的天数就可 还有一点就是每年365天,364是7的倍数,所以一年多出一天,在加上闰年的多出来的那一天 int year(int ye) { int y=ye%400; int i; int dat...

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