资源简介
LCD1602时钟可翻页代码,不错,有proteus仿真,程序完整,大家可下载。
代码片段和文件信息
//单行或双行显示
//显示的起始位置设定
//屏幕左右移动,动画效果
//给定一个字符数组,如何通过strlen()来判断字符串的长度?这样在for初始化时,也许可以简化程序
//最后的一行,会再次显一遍,又返回到了第一行
//遇到\n 自动换行
//两个外部中断调节,自动翻页的速度。
//暂停键,再次按,开始
//设置一个手动翻页,上下键
//如果全用中断那么中断太多,如何扩展中断?
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit lcd_RS=P2^5; //定义寄存器
sbit lcd_RW=P2^6; //定义是否读写
sbit lcd_E=P2^7; //定义使能端
sbit lcd_flag=P0^7; //定义是否Busy标志
sbit pd=P1^0;
sbit pu=P1^1;
sbit spdd=P1^2;
sbit spdu=P1^3;
uint spd=600;
uchar *app;
//uchar dis1[]=“0123456789012345“;
//uchar dis2[]=“abcdefghijklmnop“;
uchar code dis[]=“you bought all the books you need thiss emester yet?“;
//uchar dis1[]=“012345“;
bit lcd_busy() //判断是否忙碌 RS=Low,RW=High,E=High:读状态
{
bit flag;
lcd_RS=0; //寄存器为Low
lcd_RW=1; //是否读写为High
lcd_E=1; //使能端为High
if (lcd_flag==1) flag=1;
else flag=0;
lcd_E=0;
return flag; //返回标志,判断是否LCD忙碌
}
void lcd_putcommand(uchar command) //写指令 RS=LowRW=LowE=High:写指令
{
while (lcd_busy()); //判断是否忙碌
lcd_RS=0;
lcd_RW=0;
lcd_E=0;
P0=command;
lcd_E=1;
lcd_E=0;
}
void lcd_putchar(uchar putchar) //写数据 RS=HighRW=LowE=High:写数据
{
while(lcd_busy()); //判断是否忙碌
lcd_RS=1;
lcd_RW=0;
lcd_E=0;
P0=putchar;
lcd_E=1;
lcd_E=0;
}
void lcd_moveto(uchar xuchar y) //显示字符的位置:第x行y列(X=1或2Y=1~16)
{
if (x==0) lcd_putcommand(0x80|y-1); //第一行,并初始化从第y-1个字符开始显示
if (x==1) lcd_putcommand(0xc0|y-1); //第二行,并............
}
void lcd_delay(uint ms) //延时函数
{
uchar i;
while(ms--)
{
for(i=0;i<250;i++)
{
_nop_();_nop_();_nop_();_nop_();
}
}
}
void lcd_init(void)
{
lcd_putcommand(0x38); lcd_delay(1); //LCD为2行,5×7字
lcd_putcommand(0x0e); //打开显示,显示光标,光标不闪
// lcd_putcommand(0x0f); //....................光标闪烁
lcd_delay(1);
lcd_putcommand(0x06); lcd_delay(1);//每次右移一字符
}
void main(void)
{
// IT0=1; //设置中断触发方式,下降沿
// IE=0X81;
//uchar flagmi;
uchar *p;
app=dis;
//m=strlen(dis);
lcd_init(); //初始化
// lcd_delay(10);
IT0=1; //设置中断触发方式,下降沿
IE=0X81; //中断放在前面,会引起指针变量声明错误
while
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8313 2008-03-30 11:45 1602L13\1602
文件 4589 2008-03-30 11:45 1602L13\1602.c
文件 2102 2008-03-30 11:45 1602L13\1602.hex
文件 41 2008-03-30 11:45 1602L13\1602.lnp
文件 25604 2008-03-30 11:45 1602L13\1602.LST
文件 11012 2008-03-30 11:45 1602L13\1602.M51
文件 9084 2008-03-30 11:45 1602L13\1602.OBJ
文件 1237 2008-03-30 11:45 1602L13\1602.Opt
文件 552 2008-03-30 11:45 1602L13\1602.plg
文件 2160 2008-03-30 11:18 1602L13\1602.Uv2
....... 1239 2008-03-30 11:43 1602L13\1602_Opt.Bak
....... 2160 2008-03-30 11:18 1602L13\1602_Uv2.Bak
文件 88263 2008-12-25 11:05 1602L13\Last Loaded test.DBK
文件 6376 2005-03-22 15:22 1602L13\STARTUP.A51
文件 14048 2008-03-30 11:45 1602L13\STARTUP.LST
文件 749 2008-03-30 11:45 1602L13\STARTUP.OBJ
文件 88263 2008-12-25 11:05 1602L13\test.DSN
文件 768 2008-12-25 11:07 1602L13\test.PWI
目录 0 2009-05-31 18:47 1602L13
文件 8313 2008-03-30 11:45 1602L13\1602L13\1602
文件 4589 2008-03-30 11:45 1602L13\1602L13\1602.c
文件 2102 2008-03-30 11:45 1602L13\1602L13\1602.hex
文件 41 2008-03-30 11:45 1602L13\1602L13\1602.lnp
文件 25604 2008-03-30 11:45 1602L13\1602L13\1602.LST
文件 11012 2008-03-30 11:45 1602L13\1602L13\1602.M51
文件 9084 2008-03-30 11:45 1602L13\1602L13\1602.OBJ
文件 1237 2008-03-30 11:45 1602L13\1602L13\1602.Opt
文件 552 2008-03-30 11:45 1602L13\1602L13\1602.plg
文件 2160 2008-03-30 11:18 1602L13\1602L13\1602.Uv2
....... 1239 2008-03-30 11:43 1602L13\1602L13\1602_Opt.Bak
............此处省略11个文件信息
- 上一篇:用DSP控制nrf24L01
- 下一篇:生物多样性计算软件
评论
共有 条评论