请问,在LCD1602中要显示一个不断闪烁的字符应该怎么写程序啊?
我是利用键盘向单片机中输入数字,先是按动一个键来选择更改数据的第几位,但为了方便,我希望将正在修改的那位数闪烁起来,然后在那位数上按动另一个键来使得那位数在0~9之间变化。现在我不清楚该怎么写这种程序,来使得字符闪烁。(本来想在所修改的那位数下面闪烁光标,但貌似不行)。 你这个貌似不行是指闪光标不行还是效果不理想?闪字就用0X20和字符(最好用读回的方式保存显示的字)交替显示。 定义一个显示缓冲区。。定时刷新显示。。
要闪烁的用软件做下处理。。不显示是用空格填充, 谢谢楼上两位的解答,我现在试试看! 谢谢楼上两位,我刚刚试了,可以闪烁显示某个字符主题程序如下,不过写得比较笨拙,见笑了!!
int time_counter; // 中断次数计数单元
bit time_1s_ok,once,temp;
// Timer 0 比较匹配中断服务
interrupt void timer0_comp_isr(void)
{
if (++time_counter>=500)
{
time_counter = 0;
time_1s_ok = ~time_1s_ok;
}
}
void main(void)
{
// T/C0 初始化
TCCR0=0x0B; // 内部时钟,64分频(4M/64=62.5KHz),CTC模式
TCNT0=0x00;
OCR0=0x7C; // OCR0 = 0x7C(124),(124+1)/62.5=2ms
TIMSK=0x02; // 允许T/C0比较匹配中断
lcd_init(16); // initialize the LCD for 2 lines & 16 columns
time_1s_ok=1;
once=1;
temp=1;
#asm("sei")
while(1)
{
if(once==1)
{
lcd_clear(); // clere the LCD
lcd_putsf("It's demo_6_8.c"); // display the message
once=0; // display the message only once
}
if(temp!=time_1s_ok) // the message blinks every 1s
{
lcd_gotoxy(5,0);
if(time_1s_ok)lcd_putchar('d');
else lcd_putchar(0x20);
temp=time_1s_ok;
}
}
}
页:
[1]