|
Proteus仿真無顯示,求大神指導(dǎo)
單片機(jī)源程序如下:
#include <reg52.h>
#include <intrins.h> //包含_nop_()函數(shù)定義的頭文件
#define uchar unsigned char
#define uint unsigned int
//以下是對(duì)1302的定義
sbit clk= P2^3; //實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳
sbit IO= P2^2; //實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳
sbit rst =P2^1; //實(shí)時(shí)時(shí)鐘復(fù)位線引腳
uchar second,minute,hour,week,day,month,year; //8421碼表示的時(shí)間 高四位用于表示十位,低四位用于表示個(gè)位
char second1,minute1,hour1,week1,day1,month1,year1;//十進(jìn)制表示的時(shí)間 也即普通意義下的時(shí)間
uchar read_byte(uchar com);
uchar readyear_byte(uchar com);
void write_byte(uchar com,uchar date);
void init_1302();
void readtime();
//以下是對(duì)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; //使能信號(hào)位,將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);
//以下是對(duì)按鍵調(diào)時(shí)程序的定義
sbit mode=P1^0; //調(diào)整鬧鐘或者時(shí)間時(shí)的選擇按鍵
sbit plus=P1^1; //加1鍵
sbit minus=P1^2; //減1鍵
sbit s1=P1^3; //計(jì)算器和萬年歷切換鍵
void key();
void delay20ms();
//以下是對(duì)溫度采集部分的定義
sbit DS=P2^0; //DS18B20數(shù)據(jù)端口
uchar code wendu[]="0123456789"; //利用一個(gè)溫度表解決溫度顯示亂碼
void write_byte(uchar com,uchar date); //寫一個(gè)字節(jié)
void tmpDelay(int num); // 延時(shí)
void Init_DS18B20(); //初始化DS18B20
unsigned char ReadOneChar(); //讀一個(gè)字節(jié)
void WriteOneChar(unsigned char dat); //寫數(shù)據(jù)
unsigned int Readtemp(); //讀溫度
void display(); //顯示溫度
uchar num;
sbit lcden=P2^5; //定義引腳
sbit rs=P2^6;
sbit busy=P0^7; //LCD1602忙
//計(jì)算器有關(guān)變量定義
char i,j,temp,num_1,num1_2=0;
long a,b,c; //a,第一個(gè)數(shù) b,第二個(gè)數(shù) c,得數(shù)
float a_c,b_c;
uchar flag,fuhao;//flag表示是否有符號(hào)鍵按下,fuhao表征按下的是哪個(gè)符號(hào)
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) // 延遲函數(shù)
{
uchar y;
for(z;z>0;z--)
for(y=0;y<110;y++);
}
void check() // 判斷忙或空閑
{
do{
P0=0xFF; rs=0; //指令
lcden=0; //禁止讀寫
delay2(1); //等待,液晶顯示器處理數(shù)據(jù)
lcden=1; //允許讀寫
delay2(1); busy=0;
}while(busy==1); //判斷是否為空閑,1為忙,0為空閑
}
void write_com1(uchar com) // 寫指令函數(shù)
{
P0=com; //com指令付給P0口
rs=0;lcden=0;
check();lcden=1;
}
Proteus仿真不顯示,求指導(dǎo):
仿真.rar
(21.86 KB, 下載次數(shù): 4)
2021-7-13 14:58 上傳
點(diǎn)擊文件名下載附件
源程序.rar
(73.68 KB, 下載次數(shù): 8)
2021-7-13 14:59 上傳
點(diǎn)擊文件名下載附件
原理圖和PCB.rar
(615.34 KB, 下載次數(shù): 5)
2021-7-13 14:59 上傳
點(diǎn)擊文件名下載附件
|
|