单片机应用技术课程报告
实验名称 |
1602LCD液晶显示屏的显示 |
实验时间 | |
学生姓名 |
实验地点 |
钉钉群线上 | |
同组人员 |
专业班级 | ||
1、实验目的 1、会使用单片机4个并行I/O端口连接外部设备并构建单片机最小应用系统。 2、能使用工具软件绘制单片机硬件原理图、能编写简LCD控制程序。 3、会使用LCD1602显示指定的内容。 | |||
2、任务设计要求 采用STC89C52单片机构建最小系统,在I/O口外接1602,编程实现在1602字符型 LCD显示:实现字符的静态和动态显示。显示字符为第一行:“I am xx”,第二行:“Hou are you”。 | |||
3、总体设计方案 根据实验任务要求,通过功能分析,设计的系统总体方案如图所示。 并行接口 AT89C51单片机 电源 时钟电路 复位电路 实现led显示屏显示 | |||
4、硬件电路设计
| |||
5、软件程序设计 (1)、程序设计思路(流程图绘制)
结束
结束
结束 (2)程序清单 #include<reg51.h> #include<intrins.h>//包含_nop_()空函数指令的头文件 #define uchar unsigned char #define uint unsigned int #define out P0 sbit RS=P2^0;//位变量 sbit RW=P2^1;//位变量 sbit E=P2^2;//位变量 void lcd_ini();//LCD初始化函数 void check_busy();//检查忙标志函数 void w_command(uchar com);//写命令函数 void w_data(uchar dat);//写数据函数 void string(uchar ad,uchar*s); void lcd_busy(void); void delay(uint); void lcd_ini(); void main(void)//主函数 { lcd_ini();//调用对LCD初始化函数 while(1) { string(0x80,"I am dujingjing");//显示的第1行字符串 string(0xC2,"HOW are you");//显示的第2行字符串 delay(100);//延时 w_command(0x01);//写入清屏命令 delay(100);//延时 } } void delay(uint j)//1ms延时子程序 { uchar i=250; for(;j>0;j--) { while(--i); i=249; while(--i); i=250; } } void check_busy(void)//检查忙标志函数函数检测P0.7脚电平,即检测忙 { uchar dt; do { dt=0xff; E=0; RS=0; RW=1; E=1; dt=out; } while(dt&0x80); E=0; } void w_command(uchar com)//写命令函数 { check_busy(); E=0; RS=0; RW=0; out=com; E=1; _nop_(); E=0; delay(1); } void w_data(uchar dat)//写数据函数 { check_busy(); E=0; RS=1; RW=0; out=dat; E=1; _nop_(); E=0; delay(1); } void lcd_ini()//液晶显示器初始化函数 { w_command(0x38);//写入命令0x38:8位两行显示,5×7点阵字符 w_command(0x0C);//写入命令0x0C:开整体显示,光标关,无黑块 w_command(0x06);//写入命令0x06:光标右移 w_command(0x01);//写入命令0x01:清屏 delay(1); } void string(uchar ad,uchar*s)//输出显示字符串的函数 { w_command(ad); while(*s>0) { w_data(*s );//输出字符串,且指针增1 delay(100); } } | |||
| |||
7、项目总结 本次实验了解到1206液晶的储存器结构以及其基本的操作时序。了解到在指令设置中如何显示开、关及光标设置。地址设置:第一行地址从0x80开始,第二行地址从0xC0开始。知识要慢慢积累,实践更为重要。在做实验的过程中会慢慢发现不足之处,强化练习,以减少错误的出现,使实验顺利完成。 | |||
8、项目设计报告成绩 指导教师签字: 年 月 日 |