怎样做网站开发,网站优化最为重要的内容是,百度关键词点击价格查询,我想用c 来做网站一、实验目的#xff1a;
#xff08;1#xff09;学习lcd 1602的编程与使用、
#xff08;2#xff09;机械式复位开关button软件消抖的方法。 二、实验内容#xff1a;
1、必做#xff1a;先显示开机画面#xff0c;#xff1a;在1602显示器上#xff0c;分两行…
一、实验目的
1学习lcd 1602的编程与使用、
2机械式复位开关button软件消抖的方法。 二、实验内容
1、必做先显示开机画面在1602显示器上分两行分别居中显示字符“ AHAU CHINA ” 和 I LOVE YOU 。然后从右向左移动直至消失。其中1602的rs、rw、en引脚分别使用单片机的P1.0、P1.1、P1.2引脚数据引脚接单片机的P0口。
要求1将两行字符存储在数组中。
2将lcd1602的基本操作都写到一个头文件中供主函数文件调用。在主函数文件中只处理与显示内容有关的业务。 提高版两行逐个显示两行字符全部出现后整体静态显示1秒左右然后闪烁3次最后从右向左移动直至消失。 2、接上1题必做按键button与lcd1602当两行字符左移消失以后在lcd1602的第一行居中显示“a”其中为a的值随按键变化。
其中无符号字节型变量a初值为0其值实时显示在lcd 1602上。当复位开关S1设置按下时a的值闪烁显示S2增加每按一次a增1直至a增为 9再按一次S2a 归 0S3减少按键每按一次a 自减 1 如此反复并将 a 的值实时送至lcd 1602以闪烁的形式显示出来“a”其中为a的值并闪烁显示。当按下S4确认时a的值确定并不再闪烁。
其中S1、S2、S3、S4均为复位开关button即轻按接通、释放后自动复位断开。S1、S2、S3、S4与单片机的接口请遵照学习板电路的设置见学习板电路原理图。 要求
1使用开关需要进行软件消抖软件消抖方法在教材5.6.1和5.6.2中有介绍
2注意lcd 1602基本操作的时序。 main.c
#include lcd1602.h
#include Delay.hunsigned char code date[] AHAU CHINA ;
unsigned char code time[] I LOVE YOU ;void char_writer() // 写入两行待显示字符数组
{uchar i,j;for(i0;i16;i) // 写入第一行待显示字符数组{write_data(date[i]);}write_command(0x800x40); // 更改地址到第二行for(j0;j16;j) // 写入第二行待显示字符数组{write_data(time[j]);}
}void main()
{lcd_initial(); // 1602初始化char_writer(); // 写入两行待显示字符数组while(1) {write_command(0x18); // 字符左移消失0001 1000Delay(50);}
}Delay.c
#include Delay.hvoid delay(unsigned int j) // 延时函数此处使用晶振为11.0592MHz
{unsigned char i 250;for(;j0;j--){while(--i);i 249;while(--i);i 250;}
}
Delay.h
#ifndef __DELAY_H
#define __DELAY_H#include reg51.h
#include intrins.hvoid Delay(unsigned int j);
#endif
lcd1602.h
#ifndef __LCD1602_H
#define __LCD1602_H#include reg51.h
#include intrins.h#define out P0 //数据到LCDtypedef unsigned int uint;
typedef unsigned char uchar;sbit RSP1^0;
sbit RWP1^1;
sbit EP1^2;void check_busy();
void write_command( uchar com );
void write_data(uchar dat);
void lcd_initial();
void string(uchar ad, uchar *s);#endif
lcd1602.c
#include lcd1602.h
#include Delay.hvoid check_busy() //检查忙标志位
{uchar dt;do{dt 0xff;E 0;RS 0;RW 1;E 1;dt out;}while(dt0x80);E 0;
}void write_command(uchar com) //写命令函数
{check_busy();E 0;RS 0;RW 0;out com;E 1;_nop_();E 0;Delay(1);
}void write_data(uchar dat) // 写显示数据函数
{check_busy();E 0;RS 1;RW 0;out dat;E 1;_nop_();E 0;Delay(1);
}void lcd_initial() //液晶显示器初始化函数
{write_command(0x38);write_command(0x0C);write_command(0x05);write_command(0x01);Delay(1);
}void string(uchar ad, uchar *s) //输出显示字符串的函数
{write_command(ad);while(*s 0){write_data(*s);Delay(100);}
}