目录 0
一、题目简介 1
二、实现方案 1
三、电路功能 1
3.1各模块的功能 1
3.2 usb转串口模块 1
3.3 1602液晶显示模块 2
四、软件流程图 4
五、软件设计源程序 7
六、总结 10
七、参考文献 10
1602液晶也叫符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,1602lcd是指显示的内容为16x2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于hd44780液晶芯片的,控制原理是完全相同的,因此基于hd44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
1. 通过pc机上串口助手等相关软件,将ascii码发送至单片机;
2. 单片机将接收到的ascii码显示到lcd1602液晶上。
1. usb转串口模块:将usb接口转化为串口后与单片机相连,用来**程序和实现单片机pc串口通讯。
2. 1602液晶显示模块:lcd1602具有微功耗、体积小、显示内容丰富、超薄轻巧等优点,能够同时显示16×2个字,用来显示单片机接收到的ascii码。
1.单片机串口和电脑串口的通信。
由于单片机串口是ttl电平,要和电脑串口通信就需要使得两者的电平逻辑一样才可以通信。这时,就需要用到usb电平转ttl电平的芯片,本次实验所用转换芯片为ch340。
单片机与电脑的连接方式为:单片机串口—usb转ttl芯片(ch340)—usb口。
2.串口通信工作原理。
pc机先发送从键盘输入的数据,单片机接收后回发给pc机。单片机和pc机进行通信时,要求使用的波特率、传送的位数等相同。要能够进行数据传送也必须首先测试双方是否可以可靠通信。
可在pc机和单片机上各编制非常短小的程序,具体可分成pc机串行口发送接收程序、单片机串行口发送程序和单片机串行口发送接收程序。这三个程序能运行通过,即可证明串行口工作正常。
pc机串行口发送接收程序设置串行口为波特率位数据、1位停止位、无奇偶校验的简单设置。从键盘接收的字符可从串行口发送出去,从串行口接收的字符在屏幕上显示。
图1 usb转串口**电路。
1. 1602外形与引脚。
图2 lcd1602模块外形。
图3 1602英文数字显示屏。
1602采用标准的16脚接口:
第1脚:vss为地电源。
第2脚:vdd接5v正电源。
第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度(建议接地,弄不好有的模块会不显示)
第4脚:rs为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:rw为读写信号线,高电平时进行读操作,低电平时进行写操作。
第6脚:e端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:d0~d7为8位双向数据线。
第15~16脚:空脚(有的用来接背光)
2. 1602主要命令。
指令1:清显示,指令码01h,光标复位到地址00h位置。
指令2:光标复位,光标返回到地址00h。
指令3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。
指令4:显示开关控制。 d:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示 c:控制光标的开与关,高电平表示有光标,低电平表示无光标 b:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 s/c:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令 dl:高电平时为4位总线,低电平时为8位总线 n:
低电平时为单行显示,高电平时双行显示 f: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器ram地址设置。
指令8:ddram地址设置。
指令9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
本设计由主控芯片51单片机,usb转串口模块、1602液晶显示模块组成。单片机负责控制整个系统的执行过程。
图4 软件流程图。
图5 实验结果图。
主程序:#include<>
#include<>
#define uchar unsigned char
#define uint unsigned int
uchar code table1=
uchar table[17];
uchar n,num;
void send();
void write_hexnum(uchar n)
if(n>=10)
else write_data('0'+n);
void display_num(uchar num)
write_com(0xc0);
write_hexnum(num>>4);/高四位。
write_hexnum(num&0x0f);/低四位。
void display(uchar *p)
while(*p!='0')
void main()/上位机发送数据,单片机控制1602液晶显示。
uint i,j;
i=0;j=0;
tmod=0x20; /打开定时器1选择工作模式2
scon=0x50;
th1=0xfd确定波特率9600
tl1=0xfd;
tr1=1启动定时器1
es=1打开串口中断。
ea=1打开总中断。
write_com(0x80);
init();1602初始化。
for(num=0;num<16;num++)
while(1)
void send(uchar dat)
sbuf = dat发送。
while(!ti);
ti = 0;
*void ser() interrupt 4 //串行口中断程序。
while(!ri);
send(shuju);
table[n]=sbuf;
n++;if(n==17)
1602液晶显示程序:
#include<>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=p2^0;//使能信号。
sbit lcdrs=p2^2;//数据/命令(h/l)选择端。
sbit lcdrw=p2^1;
uchar shuju;
void delay(uint z)//z=1延时1ms
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)
void write_com(uchar com)//写指令。
lcdrs=0;
lcdrw=0;
p0=com;//输入数据指令码。
lcden=1;
delay(5);
lcden=0;
void write_data(uchar date)//写数据。
lcdrs=1;
lcdrw=0;
p0=date;//输入数据。
delay(5);
lcden=1;
delay(5);
lcden=0;
void init() 初始化。
//uchar num;
/ p0=0;
/ lcden=0;//使能端初始化。
write_com(0x38); 显示模式设置,设置16x2显示,5x7点阵,8位数据接口。
write_com(0x0c);/显示开及光标移动设置。
write_com(0x06); 写一个字符后地址加一,且光标加一。
write_com(0x01); 所有显示清零
本次课程设计;让我了解学习了pc与单片机串口通信的相关知识,加深了对其的了解认识,为以后的工作和学习积累了经验。今后的工作学习会更加便利。
1]《单片机课程设计指导》 北京航天航空大学出版社 2002
2] 伍时和等.数字电子技术基础.北京:清华大学出版社,2009.4.
3] 张天凡等.51单片机c语言开发详解.北京:电子工业出版社,2008.6.
4] 马忠梅等.单片机的c语言应用程序设计.北京:北京航空航天大学出版社,2007.1.
单片机课程设计
可变程序控制器是集微机技术 自动化技术 通讯技术于一体的通用工业控制装置。它可靠性强 性能 比高 使用方便,已在工业控制的各个领域里得到了极为广泛的应用,成为实现工业自动化的一种强有力的工具 1 plc的定义有许多种。国际电工委员会 iec 对plc的定义是 可编程控制器是一种数字运算操作的电子系统...
单片机课程设计
目录。内容提要2 关键词2引言3 一 硬件电路设计3 一 电路板原理3 二 电路元器件3 二 软件设计3 一 秒钟设计方案3 二 时钟设计方案4 结语7单片机时钟设计。内容摘要 一 在实验板上用动态扫描显示00 59秒钟,具体要求如下 一 6m晶振 二 l9 l10显示00 59十进制数并循环,间隔...
单片机课程设计
1 选题背景。1.1 家庭智能防盗报警系统设计的背景及目的。随着经济的发展,人们对防盗 防劫 防火保安设备的需求量大大增加。针对偷盗 抢劫 火灾 煤气泄漏等事故进行检测和报警的系统,其需求也越来越高。家居智能是以家为平台,兼备建筑 自动化,智能化于一体的高效 舒适 安全 便利的家居环境。自动化的家居...