请问是模块化编程吗?
如果是模块化编程的话你的问题可能两个,就我以前模块化编程时候遇到的问题解答。
第一个:你的NUM[]被多次初始化。解决办法是extern NUM[];
第二个:程序编写错误。
另外,附上我以前编写的DS1302和LCD1602的程序模块
这里是1302的h文件
#ifndef __DS1302_H__
#define __DS1302_H__
#include<reg52h>
#include"delayh"
extern uchar now_time[13];
sbit SCLK=P2^3; //位申明
sbit IO=P2^2;
sbit RST=P2^4;
void write_byte_to_ds1302(uchar dat); //写入一个字节
void write_date_to_ds1302(uchar add,uchar dat); //写入时间地址与数
extern uchar read_from_ds1302(uchar add); //读取地址
void init_ds1302(); //初始化时间
void read_clock(); //读取时间
void chang_to_bcd(); //BCD码转换为16进制数
//void display(); //数码管显示时间
#endif
下面是1602的h文件
#ifndef __LCD1602_H__
#define __LCD1602_H__
#include<reg52h>
#include"delayh"
#include"ds1302h"
#include"24C02h"
#include"18b20h"
sbit lcden=P2^7;
sbit lcdrw=P2^6;
sbit lcdrs=P2^5;
void write_com_to_1602(uchar com);
void write_data_to_1602(uchar date);
void init_1602();
void display_lcd1602();
#endif
这里是主程序模块
#include"delayh"
#include"24C02h"
#include"keyboardh"
#include"ds1302h"
#include"lcd1602h"
#include"beerh"
#include"18b20h"
void main()
{
time0_init();
init_24C02();
// init_ds1302();//初始化时间
init_1602();
while(1)
{
read_clock();
chang_to_bcd();
display_lcd1602();
check_beer((read_add_from_24C02(10))%3);
scanf_keyboard();
}
}
希望对你有用。
不一样,12864有20个脚,实际上有用的脚是18个,比1602多两脚,即PSB和PES,一个是设置串行、并行输入的,另一个是复位的。
在初始化把这两个设置了,指令啥的再改改就和1602差不多了
以上就是关于为什么我在lcd12864模块中加进ds1302就不行了,搞不清楚程序哪儿出问题了全部的内容,包括:为什么我在lcd12864模块中加进ds1302就不行了,搞不清楚程序哪儿出问题了、LCD1602和LCD12864液晶显示屏初始化程序一样吗有什么不同哪位大侠告诉我一下啊、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)