一、电路设计此电路由AT89C51最小系统、LCD1602显示模块和独立按键组成。
可实现文字的上下左右滚动
二、运行效果
仿真原理图如下(proteus仿真工程文件和完整单片机C语言源码可到本帖附件中下载)
三、部分单片机代码
- /*************** ******************/
- #include <reg52.h>
- #include <string.h>
- #define uchar unsigned char
- #define uint unsigned int
- void Initialize_LCD();
- void ShowString(uchar,uchar,uchar *);
- sbit K1 = P3^0;
- sbit K2 = P3^1;
- sbit K3 = P3^2;
- uchar code Prompt[]="PRESS K1--K4 TO START DEMO PROG";
- uchar const Line_Count = 6;
- uchar code Msg[][80]=
- {
- "Many CAD users dismiss",
- "process of creating PCB",
- "of view.with PCB layout",
- "placement and track routing,",
- "can often be the most time",
- "And if you use circuit simulation",
- "you are going to spend even more"
- };
- uchar Disp_Buffer[32];
- void Delayxms(uint ms)
- {
- uchar i;
- while(ms--)
- {
- for(i=0;i<120;i++);
- }
- }
- void V_Scroll_Display()
- {
- uchar i,j,k = 0;
- uchar *p = Msg[0];
- uchar *q = Msg[Line_Count] + strlen(Msg[Line_Count]);
- while(p<q)
- {
- for(i=0;(i<16)&&(p<q);i++)
- {
- if(((i==0)||(i==15))&& *p == ' ')
- p++;
- if(*p != '\0')
- {
- Disp_Buffer[i] = *p++;
- }
- else
- {
- if(++k>Line_Count)
- break;
- p = Msg[k];
- Disp_Buffer[i] = *p++;
- }
- }
- for(j=i;j<16;j++)
- Disp_Buffer[j]=' ';
- while(F0)
- Delayxms(5);
- ShowString(0,0," ");
- Delayxms(150);
- while(F0)
- Delayxms(5);
- ShowString(0,1,Disp_Buffer);
- Delayxms(150);
- while(F0)
- Delayxms(5);
- ShowString(0,0,Disp_Buffer);
- ShowString(0,1," ");
- Delayxms(150);
- }
- ShowString(0,0," ");
- ShowString(0,1," ");
- }
- void H_Scroll_Display()
- {
- uchar m,n,t = 0,L=0;
- uchar *p = Msg[0];
- uchar *q = Msg[Line_Count] + strlen(Msg[Line_Count]);
- for(m=0;m<16;m++)
- Disp_Buffer[m]=' ';
- while(p<q)
- {
- if((m=16||m==31)&& *p == ' ')
- p++;
- for(m=16;m<32&&p<q;m++)
- {
- if(*p != '\0')
- {
- Disp_Buffer[m] = *p++;
- }
- else
- {
- if(++t>Line_Count)
- break;
- p = Msg[t];
- Disp_Buffer[m] = *p++;
- }
- }
- for(n=m;n<32;n++)
- Disp_Buffer[n]=' ';
- for(m=0;m<=16;m++)
- {
- while(F0)
- Delayxms(5);
- ShowString(0,L,Disp_Buffer+1);
- while(F0)
- Delayxms(5);
- Delayxms(20);
- }
- L = (L==0)? 1:0;
- Delayxms(200);
- }
- if(L==1)
- ShowString(0,1," ");
- }
- void EX_INT0() interrupt 0
- {
- F0 = !F0;
- }
- void main()
- {
- uint Count = 0;
- IE = 0x81;
- IT0 = 1;
- ……………………
- …………限于本文篇幅 余下代码请下载附件…………
复制代码
1602字符液晶滚动C源程序和仿真文件.zip
(88.69 KB, 售价: 10 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|
|