完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
主要问题是readclock();这个子程序加上后12864无显示,怕1302的程序写错,特意写了个数码管的程序,能够正常读取数值,所以readclock();这个没有问题,请哪位高手帮忙看看。冲突或者在那。
#include #include #define uchar unsigned char #define uint unsigned int #define writeaddr_nian 0x8c #define writeaddr_yue 0x88 #define writeaddr_zhou 0x8a #define writeaddr_ri 0x86 #define writeaddr_shi 0x84 #define writeaddr_feng 0x82 #define writeaddr_miao 0x80 #define writeaddr_wp 0x8e #define readaddr_nian 0x8d #define readaddr_yue 0x89 #define readaddr_zhou 0x8b #define readaddr_ri 0x87 #define readaddr_shi 0x85 #define readaddr_feng 0x83 #define readaddr_miao 0x81 uchar nian,yue,ri,zhou,miao; char shi,feng,shi1,feng1; uchar code dis[] = {"年月日时分秒星期定时: ℃"}; uchar dis1[2]; uchar shijian[15]; uchar riqi[12]; uchar dingshi[10]; uchar xingqi[5]; ***it LCD_RS = P2^6; //寄存器选择输入 ***it LCD_RW = P2^5; //液晶读/写控制 ***it LCD_EN = P2^7; //液晶使能控制 ***it LCD_PSB = P3^2; //串/并方式控制 ***it LCD_RST = P3^7; //液晶复位端口 ***it sclk=P3^6; //时钟信号 ***it ce=P3^5; //使能信号 ***it io=P3^4; //1302信号 ***it ACC_7=ACC^7; void delayms(int x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } //延时程序 void write1302( uchar addr ,uchar dat) //写入1302 {uchar i ,temp; ce=0; sclk=0; ce=1; for(i=8;i>0;i--) //写地址 {sclk=0; temp=addr; io=(bit)(temp&0x01); addr>>=1; sclk=1; } for(i=8;i>0;i--) //写数据 {sclk=0; temp=dat; io=(bit)(temp&0x01); dat>>=1; sclk=1; } ce=0; } uchar read1302(uchar addr) //读1302 {uchar i,temp,dat1,dat2; ce=0; sclk=0; ce=1; for(i=8;i>0;i--) //写地址 {sclk=0; temp=addr; io=(bit)(temp&0x01); addr>>=1; sclk=1; } for (i=8;i>0;i--) { ACC_7=io; sclk=1; ACC>>=1; sclk=0; } ce=0; dat1=ACC; dat2=dat1/16; dat1=dat1%16; dat1=dat1+dat2*10; return(dat1) ; void lcd_wcmd(uchar cmd) //写指令数据到LCD RS=L,RW=L,E=高脉冲,D0-D7=指令码。 { LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; P0 = cmd; delayms(5); LCD_EN = 1; delayms(5); LCD_EN = 0; } void lcd_wdat(uchar dat) //写显示数据到LCD RS=H,RW=L,E=高脉冲,D0-D7=数据。 { LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayms(5); LCD_EN = 1; delayms(5); LCD_EN = 0; } void lcd_init() //液晶初始化 { LCD_PSB = 1; //并口方式 delayms(5); lcd_wcmd(0x30); //基本指令操作 delayms(5); lcd_wcmd(0x0C); //显示开,关光标 delayms(5); lcd_wcmd(0x01); //清除LCD的显示内容 delayms(5); } void zh (uchar dat) { dis1[0]=dat/10+0x30; dis1[1]=dat%10+0x30; } void display() {uchar i; zh(nian); riqi[0]=dis1[0] ; riqi[1]=dis1[1] ; riqi[2]=dis[0] ; riqi[3]=dis[1] ; zh(yue); riqi[4]=dis1[0] ; riqi[5]=dis1[1] ; riqi[6]=dis[2] ; riqi[7]=dis[3] ; zh(ri); riqi[8]=dis1[0] ; riqi[9]=dis1[1] ; riqi[10]=dis[2] ; riqi[11]=dis[3] ; lcd_wcmd(0x80); for(i=0;i<12;i++) { lcd_wdat(riqi); } //日期显示 xx年xx月xx日 zh(shi); shijian[0]=dis1[0] ; shijian[1]=dis1[1] ; shijian[2]=dis[20]; zh(feng); shijian[3]=dis1[0] ; shijian[4]=dis1[1] ; shijian[5]=dis[20]; zh(miao); shijian[6]=dis1[0] ; shijian[7]=dis1[1] ; shijian[8]=dis[21] ; shijian[9]=dis[21] ; shijian[10]=dis[12] ; shijian[11]=dis[13] ; shijian[12]=dis[14] ; shijian[13]=dis[15] ; zh(zhou); shijian[14]=dis1[1] ; lcd_wcmd(0x90); for(i=0;i<15;i++) { lcd_wdat(shijian); } //时间显示 xx时xx分xx 星期x dingshi[0]=dis[16] ; dingshi[1]=dis[17] ; dingshi[2]=dis[18] ; dingshi[3]=dis[19] ; dingshi[4]=dis[21] ; zh(shi1); dingshi[5]=dis1[0] ; dingshi[6]=dis1[1] ; dingshi[7]=dis[20]; zh(feng1); dingshi[8]=dis1[0] ; dingshi[9]=dis1[1] ; lcd_wcmd(0x88); for(i=0;i<10;i++) { lcd_wdat(dingshi); } //定时显示 xx时xx分 星期x } void c51init() { TMOD = 0x02; TH0 = 0x06; TL0 = 0x06; EA = 1; ET0 = 1; TR0 = 1; } void readclock() {miao=read1302(readaddr_miao); nian=read1302(readaddr_nian); yue=read1302(readaddr_yue); ri=read1302(readaddr_ri); zhou=read1302(readaddr_zhou); feng=read1302(readaddr_feng); shi=read1302(readaddr_shi); } void main() { delayms(10); //上电,等待稳定 lcd_init(); c51init(); //初始化LCD while(1) { anjian(); display(); if(xscs>=40000) { xscs=0; readclock(); } } } void timer0Interrupt(void) interrupt 1 { xscs++; }
|
|
相关推荐
5个回答
|
|
已复制保存查看了等待结果
|
|
|
|
|
|
|
|
把原理图看下!有可能是DS1302和12864 的管脚共用了
|
|
|
|
我以前碰到这样过
|
|
|
|
谢谢大家,问题找到了的,犯了一个低级错误,P34这个脚复用了的,没仔细看开发板。给大家添麻烦了的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
479 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
229 浏览 0 评论
334 浏览 0 评论
165 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
496 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11972 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 17:35 , Processed in 0.623187 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号