共2条
1/1 1 跳转至页
12232 用12232做显示的实时时钟,碰到的怪问题?

问
本人在做实验的过程中,对LCD显示程序的单独调试中没有问题,但是把时钟调整程序 ( 定时器1开中断 ) 加进来后运行几分钟LCD局部地方会出现乱码,或者是时钟调整后也会显示乱码?现在已经不知所措......
请高手不吝赐教!
部分程序如下:
main()
{
SP= 0x30;
lcd_init();
clr_scr();//清屏
t0_init();//40MS定时中断 40MS*25=1S
t1_init();//10MS定时中断 键盘扫描
dis_init();
while(1)
{
key_sm();
dis_sm();
work();//温度测量
//flash();
}
//dis_sm();
}
答 1: 个人见解使用的是间接读写方式吧?
在读写LCD时关中断,完毕后开中断.
在最靠近硬件操作语句的地方修改,可以减短关中断的时间 答 2: to : zgl7903谢谢!
但这样会不会影响到时间精度问题呢?
另外
今天又做了个实验:不调用温度测量和闪烁程序时,程序可以正常运行,我想是不是函数太多了,堆栈出错...
本人菜鸟,没有调试经验,望大虾位指点!
答 3: 没有顶吗自己顶一点
请各位高手说说自己的看法.......(现在都在郁闷中度过....) 答 4: 个人见解定时精度可以使用自装载模式,没有累计误差就可以保证
答 5: 用显示缓冲区并在一处操作LCD.关中断就没必要了~~~ 答 6: 用显示缓冲区并在一处操作LCD.怎么理解?(小弟...愚..)
对LCD 显示操作,我只是在相对数据应发生变化时,才调用显示函数.
如:秒加1了,就把秒显示刷新一次,没有对其它数据进行显示刷新(个人认为没必要)
if(time1.sec != sec_buf)
{
sec_buf = time1.sec;
bcd(time1.sec,6);
dis(45, * ( BCD ) );//秒
dis(53, * ( BCD + 1 ) );
}
请高手不吝赐教!
部分程序如下:
main()
{
SP= 0x30;
lcd_init();
clr_scr();//清屏
t0_init();//40MS定时中断 40MS*25=1S
t1_init();//10MS定时中断 键盘扫描
dis_init();
while(1)
{
key_sm();
dis_sm();
work();//温度测量
//flash();
}
//dis_sm();
}
答 1: 个人见解使用的是间接读写方式吧?
在读写LCD时关中断,完毕后开中断.
在最靠近硬件操作语句的地方修改,可以减短关中断的时间 答 2: to : zgl7903谢谢!
但这样会不会影响到时间精度问题呢?
另外
今天又做了个实验:不调用温度测量和闪烁程序时,程序可以正常运行,我想是不是函数太多了,堆栈出错...
本人菜鸟,没有调试经验,望大虾位指点!
答 3: 没有顶吗自己顶一点
请各位高手说说自己的看法.......(现在都在郁闷中度过....) 答 4: 个人见解定时精度可以使用自装载模式,没有累计误差就可以保证
答 5: 用显示缓冲区并在一处操作LCD.关中断就没必要了~~~ 答 6: 用显示缓冲区并在一处操作LCD.怎么理解?(小弟...愚..)
对LCD 显示操作,我只是在相对数据应发生变化时,才调用显示函数.
如:秒加1了,就把秒显示刷新一次,没有对其它数据进行显示刷新(个人认为没必要)
if(time1.sec != sec_buf)
{
sec_buf = time1.sec;
bcd(time1.sec,6);
dis(45, * ( BCD ) );//秒
dis(53, * ( BCD + 1 ) );
}
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
“我踩过的那些坑”主题活动——第002期 | |
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |