找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1636|回复: 0
收起左侧

STC89C52单片机计算器与万年历Proteus仿真不显示,求指导

[复制链接]
ID:952486 发表于 2021-7-13 14:59 | 显示全部楼层 |阅读模式
Proteus仿真无显示,求大神指导
51hei.png

万年历.jpg 计算器.jpg
51hei.png
单片机源程序如下:
#include <reg52.h>
#include <intrins.h>  //包含_nop_()函数定义的头文件
#define uchar unsigned char
#define uint  unsigned int
//以下是对1302的定义
sbit  clk= P2^3;              //实时时钟时钟线引脚
sbit  IO= P2^2;              //实时时钟数据线引脚
sbit  rst =P2^1;              //实时时钟复位线引脚
uchar second,minute,hour,week,day,month,year;       //8421码表示的时间  高四位用于表示十位,低四位用于表示个位
char second1,minute1,hour1,week1,day1,month1,year1;//十进制表示的时间  也即普通意义下的时间
uchar read_byte(uchar com);
uchar readyear_byte(uchar com);
void write_byte(uchar com,uchar date);
void init_1302();
void readtime();
//以下是对lcd1602的定义
sbit wela=P2^6;
sbit dula=P2^7;
uchar table[]="0123456789";
sbit LCM_RS=P2^6;    //寄存器选择位,将RS位定义为P2.6引脚
sbit LCM_EN=P2^5;     //使能信号位,将E位定义为P2.5引脚
bit lcd_bz(void);
void write_com(unsigned char CMD);
void write_date(unsigned char dataW);
void init_1602();
void displaytime();
void delaynms(unsigned char n);
//以下是对按键调时程序的定义
sbit mode=P1^0;         //调整闹钟或者时间时的选择按键
sbit plus=P1^1;         //加1键
sbit minus=P1^2; //减1键
sbit s1=P1^3;         //计算器和万年历切换键
void key();
void delay20ms();
//以下是对温度采集部分的定义
sbit DS=P2^0;                          //DS18B20数据端口
uchar code wendu[]="0123456789";        //利用一个温度表解决温度显示乱码
void write_byte(uchar com,uchar date);         //写一个字节
void tmpDelay(int num);                                        // 延时
void Init_DS18B20();                                        //初始化DS18B20
unsigned char ReadOneChar();                    //读一个字节
void WriteOneChar(unsigned char dat);        //写数据
unsigned int Readtemp();                                //读温度
void display();                                                        //显示温度

uchar num;         
sbit lcden=P2^5; //定义引脚
sbit rs=P2^6;

sbit busy=P0^7;         //LCD1602忙
//计算器有关变量定义
char i,j,temp,num_1,num1_2=0;
long a,b,c;     //a,第一个数 b,第二个数 c,得数
float a_c,b_c;
uchar flag,fuhao;//flag表示是否有符号键按下,fuhao表征按下的是哪个符号

uchar code table1[]={
7,8,9,0,
4,5,6,0,
1,2,3,0,
0,0,0,0};
uchar code table2[]={
7,8,9,0x2f-0x30,
4,5,6,0x2a-0x30,
1,2,3,0x2d-0x30,
0x01-0x30,0,0x3d-0x30,0x2b-0x30};

void delay2(uchar z) // 延迟函数
{
uchar y;
for(z;z>0;z--)
   for(y=0;y<110;y++);
}

void check() // 判断忙或空闲
{
do{
    P0=0xFF;    rs=0;     //指令
    lcden=0;     //禁止读写
    delay2(1); //等待,液晶显示器处理数据
    lcden=1;     //允许读写
        delay2(1);        busy=0;
    }while(busy==1); //判断是否为空闲,1为忙,0为空闲
}
void write_com1(uchar com) // 写指令函数
{
P0=com;    //com指令付给P0口
rs=0;lcden=0;
check();lcden=1;
}

Proteus仿真不显示,求指导: 仿真.rar (21.86 KB, 下载次数: 4)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表