由于有点长,放在了空间里,求大声移步http://hi.baidu.com/bfkflcsfrobjnyd/item/373e4dd2142ee570d63aaebd现在想让秒针每秒+1,没有实现,停在了01不动,不知道是为什么
你在程序里的"shi""fen""miao"寄存器是按全局变量用的,所以在display()子程序中不要在设置形参了,直接修改这三个寄存器就好了。
另外注意定义变量时候的类型uchar和char
...
//void display(char shi,char fen,char miao)
void display()
...
//display(shi,fen,miao);
display();
...
附件里有改的程序,试了一下24MHz晶振下时间跑得有些快!
我又改了改程序,附加了Proteus仿真电路,新程序在clock_.c中。
/* 因为用的仿真电路不一样,所以rs和en引脚改P2口了 */
/* 1602有个rw读写使能端,加了个引脚控制 */
/* 我不知道这dula和wela两个引脚的作用,所以临时换到P3口了 */
/* 在write_cmd和write_date的时序中加了rw读写使能 */
/* data是数据的意思 date是日期的意思 */
/* 把时分秒的显示都挪到最后了,前面的if条件语句只做时分秒数据的修改,这样能保证数据变0时显示正常 */
/* 把初始化往后挪了,方便调用其他子程序 */
/* 每条write_cmd或write_data的最后都已将en=0,所以不用在其他位置设置en=0了 */
/* 初始化子程序的最后加了一条display指令,用来将显示刷新成既定时刻 */
/* 主程序中设置了时钟时间初始值,以观察时间能否正常变化 */
您定义了全局变量shi,fen,miao, display函数定义 中的参数也是shi,fen,miao,计时动作是在display中做的,对函数内部的 shi,fen,miao的操作不会改变全局的shi,fen,miao,
下次用display(shi,fen,miao);调用display时,从未被改变过的全局变量的值又赋给display内部的局部变量,所以就没法计时了。
一种笨修改方法是去掉 display 的参数,定义那行改为
void display()// (char shi,char fen,char miao)调用改为
void display()// (char shi,char fen,char miao)这样就工作正常了,仿真效果如下:
本回答被网友采纳用51单片机编写数字钟出问题了,求高手解答
\/\/void display(char shi,char fen,char miao)void display()...\/\/display(shi,fen,miao);display();...附件里有改的程序,试了一下24MHz晶振下时间跑得有些快!我又改了改程序,附加了Proteus仿真电路,新程序在clock_.c中。\/* 因为用的仿真电路不一样,所以rs和en引脚改P2口了 *\/\/* 1...
51单片机单数字钟代码0×df啥意思
0xdf 是单片机C语言编程中的16进制, d 代表的是高四位, f 代表的是低四位,总共控制八个字节位,可以控制任意一个p口的输出。 从你的问题来看,这个应该是共阴时钟数码管选择位选的。 希望能帮到你!
利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开...
利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开始每1秒钟加1。 我来答 5个回答 #活动# 参与造句大挑战,答题瓜分万元豪礼 zlzskddj2602 推荐于2017-09-27 知道答主 回答量:19 采纳率:0% 帮助的人:0 我也去答题访问个人页 关注 展开全部 没有定时器的不过有数字钟的...
51单片机八位数码管,
不知你问题在哪?以上是电路图参考,下面是仿真运行效果,显示时间为23:59分31秒 星期六 以上设计是没有采用时钟芯片的,时间来源才用的是单片机定时自动重载的方式计算实现。如果加上时钟芯片的话,可以实现断电继续走时,现在常用的方案就是这样。关于单片机程序方面,难者不会,会者不难,在此寥寥几...
用单片机设计一个时钟,可显示时和分,可以调时间,也要有闹钟功能,要有设...
unsigned char z,s=00,m=00,h=00;给时钟初始值 while(1){ for(z=0;z<100;z++){ tmp=0x01;P2=tab[h\/10];小时显示 disp();P2=tab[h%10];disp();P2=tab[m\/10];分钟显示 disp();P2=tab[m%10];disp();P2=tab[s\/10];秒显示 disp();P2=tab[s%10];disp();} s++;while...
单片机问题,求高手详解!
1、答案:00H,LCALL调用把地址0221H放到堆栈中,先低后高,所以08H是00H,PC也会变化,这里就不说了 2、十进制变成二进制不能一位对应四位,那个是十六进制变成2进制的方法。。。
单片机程序分析题求高手解答。。。
MOV A,#60H ;立即数寻址,所以(A)=60H MOV R0;#40H ;(R0)=40H MOV @R0,A ;间接寻址,将寄存器A存的值存入寄存器R0所指地址40H中,(40H)=60H MOV 41H,R0 ;直接寻址,将R0的值存入41H单元,(41H)=40H
51单片机数字钟制作里面的74LS380N多功能八进制寄存器可以用什么替 ...
单片机内部的RAM足够用了,真不理解你的数字钟怎么会用到74LS380,不可思议。假如,是用纯数字电路制作电子钟,还有情可缘。74LS380的引脚图如下,DIP24封装。如果非要用外部寄存器,可以用8位数据锁存器,就有很多可选择了,常用的有,74LS373,74LS374,74LS377,74LS573,等等很多。
求高手解答单片机
18个不对,mov c,20h是位寻址。另一个是直接寻址。19不对,用来锁存p0口的低八位地址。20理论上如此,但每个单片机肯定会有时钟的上限。21对 22不对,一个指令周期可以包含数个机器周期 23对的 24不对scon只是串口中断的控制寄存器。25不对,SP始终指向栈顶。26不对 都是64K 27不对,是一条...
求高手解答单片机问题。
22、用MCS-51串行口扩展并行I\/O口时,串行口工作方式应选择( 0 )。25、假定(SP)=40H,(39H)=30H,(40H)=60H。执行下列指令:--题目有错,39H、40H,不是连续的单元,不能当做本题目的已知条件。POP DPH ,POP DPL后,DPTR的内容为( ),SP的内容是( )。26、单片机的堆栈...