1602液晶显示计算器电路图及程序

1602液晶显示计算器电路图及程序
1602液晶显示计算器电路图及程序

#include

#include

#include

#include

unsigned char code Error[]={"error"};

unsigned char code Systemerror[]={"system error"};

unsigned char code Lcd[]={"lcd calculate"};

char str[16];

sbit RS=P2^0;

sbit RW=P2^1;

sbit E=P2^2;

sbit BF=P0^7;

/***********************

函数功能:延时1ms

***********************/

void delay1ms()

{

unsigned char i,j;

for (i=0;i<10;i++)

for (j=0;j<33;j++)

;

}

/************************

函数功能:延时n毫秒

入口参数:n

************************/

void delaynms(unsigned char n)

{

unsigned char i;

for (i=0;i

delay1ms();

}

/************************************

函数功能:判断液晶模块的忙碌状态

返回值:result。result=1,忙碌;result=0,不忙。

************************************/

bit BusyTest(void)

{

bit result;

RS=0; //根据规定,RS为低电平、RW为高电平时,可以读状态

RW=1;

E=1; //E=1,才允许读/写

_nop_();

_nop_();

_nop_();

_nop_();

result=BF; //将忙碌标志电平赋给result

E=0;

return result;

}

/*************************************

函数功能:将模式设置指令或显示地址写入液晶模块

入口参数:dictate

**************************************/

void WriteInstruction(unsigned char dictate)

{

while(BusyTest()==1); //如果忙就等待

RS=0; //根据规定,RS和R/W同为低电平时,可以写入指令

RW=0;

E=0;

_nop_();

_nop_();

P0=dictate; //将数据送入P0口,即写入指令或地址

_nop_();

_nop_();

_nop_();

_nop_();

E=1; //E置高电平

_nop_();

_nop_();

_nop_();

_nop_();

E=0;

}

/*****************************************

函数功能:指定字符显示的实际地址

入口参数:x,y

*****************************************/

void WriteAddress(unsigned char x,unsigned char y)

{

unsigned char temp;

if(x==0)

{

switch(y)

{

case 0:temp=0x00; break;

case 1:temp=0x01; break;

case 2:temp=0x02;break;

case 3:temp=0x03;break;

case 4:temp=0x04;break;

case 5:temp=0x05;break;

case 6:temp=0x06;break;

case 7:temp=0x07;break;

case 8:temp=0x08;break;

case 9:temp=0x09;break;

case 10:temp=0x0a;break;

case 11:temp=0x0b;break;

case 12:temp=0x0c;break;

case 13:temp=0x0d;break;

case 14:temp=0x0e;break;

case 15:temp=0x0f;break;

}

}

if(x==1)

{

switch(y)

{

case 0:temp=0x40;break;

case 1:temp=0x41;break;

case 2:temp=0x42;break;

case 3:temp=0x43;break;

case 4:temp=0x44;break;

case 5:temp=0x45;break;

case 6:temp=0x46;break;

case 7:temp=0x47;break;

case 8:temp=0x48;break;

case 9:temp=0x49;break;

case 10:temp=0x4a;break;

case 11:temp=0x4b;break;

case 12:temp=0x4c;break;

case 13:temp=0x4d;break;

case 14:temp=0x4e;break;

case 15:temp=0x4f;break;

}

}

WriteInstruction(temp|0x80); //显示位置的确定方法规定为“80H+地址码x”}

/*****************************************

函数功能:将数据(字符的标准ASCII码)写入液晶模块

入口参数:y

基于51单片机1602液晶显示简易计算器设计

#include #include #define uint unsigned int #define uchar unsigned char #define PI 3.141592 sbit RS = P2^0; sbit RW = P2^1; sbit EN = P2^2; sbit led=P2^4; sbit speek=P3^7; uchar table0[]={"Welcome to use"}; uchar table1[]={"made by Ms. Li"}; uchar table2[]={"error"}; uchar count; void main(void) { uchar error=0,i,first=0,dot1,dot2,dot1_num,dot2_num,minus1,minus2;//错误标志、第一次清屏标志、小数点标志以及小数点个数负号标志、负号个数 uchar Sin,Cos,Tan,ln; uchar Key_num,last_key_num; //键号 uchar flag=0,equal_flag; //运算符、等于符 double num1=0,num2=0,num=0,result=0,save_result; //第一个数、第二个数、计算结果

uchar first_num=0,Ans=0,second_num=0; InitLcd(); EA=1; ET0=1; TMOD=0X01; TH0=(65536-500)/256; TL0=(65536-500)%256; write_com(0x80+0x40+15); write_Dat('0'); write_com(0x80); while(1) { while(key_scan()==0xff); TR0=1; if(first==0) { first=1; write_com(0x01); } Key_num=key_scan(); switch(key_scan()) { case 1: if(last_key_num!=Key_num) { write_Dat('l'); write_Dat('n'); ln=1; }break; case 2: if(last_key_num!=Key_num) { write_Dat('s'); write_Dat('i'); write_Dat('n'); Sin=1; }break; case 3: if(last_key_num!=Key_num) { write_Dat('c'); write_Dat('o'); write_Dat('s'); Cos=1;

LCD1602液晶显示器

实验11:1602液晶显示屏显示(字符型液晶显示器) 字符型液晶显示器用于数字、字母、符号并可显示少量自定义符号。这类液晶显示器通常 有16根接口线,下表是这16根线的定义。 字符型液晶接口说明 编号符号引脚说明编号符号引脚说明 1 Vss 电源地 9 D 2 数据线2 2 Vdd 电源正 10 D 3 数据线3 3 VL 液晶显示偏压信号 11 D 4 数据线4 4 RS 数据/命令选择端 12 D 5 数据线5 5 R/W 读/ 写选择端 13 D 6 数据线6 6 E 使能信号 14 D 7 数据线7 7 D0 数据线0 15 BLA 背光源正极 8 D1 数据线1 16 BLK 背光源负极(本学习板配的 内部已经接地) 下图是字符型液晶显示器与单片机的接线图。这用了P0口的8根线作为液晶显示器的数据 线,用P20、P21、P22做为3根控制线。

字符型液晶显示器与单片机的接线图 字符型液晶显示器的使用,字符型液晶显示器一般采用HD44780芯片做为控制器的。 1.字符型液晶显示器的驱动程序 这个驱动程序适用于1602型字符液晶显示器, 1) 初始化液晶显示器命令(RSTLCD) 设置控制器的工作模式,在程序开始时调用。 参数:无。 2) 清屏命令(CLRLCD) 清除屏幕显示的所有内容 参数:无 3) 光标控制命令(SETCUR) 用来控制光标是否显示及是否闪烁 参数:1个,用于设定显示器的开关、光标的开关及是否闪烁。 4) 写字符命令(WRITECHAR) 在指定位置(行和列)显示指定的字符。

参数:共有3个,即行值、列值及待显示字符,分别存放在XPOS、YPOS和A中。其中行值与列值均从0开始计数,A中可直接写入字符的符号,编译程序自动转化为该字符的ASCII 值。 5) 字符串命令(WRITESTRING) 在指定位置显示指定的一串字符。 参数:共有3个,即行值、列值和R0指向待显示字符串的内存首地址,字符串须以0结尾。如果字符串的长度超过了从该列开始可显示的最多字符数,则其后字符被截断,并不在下 行显示出来。 以下是驱动源程序 ;************************************************** ;连线图: ; DB0---DPROT.0 DB4---DPROT.4 RS-------------P2.0 ; DB1---DPROT.1 DB5---DPROT.5 RW-------------P2.1 ; DB2---DPROT.2 DB6---DPROT.6 E--------------P2.2 ; DB3---DPROT.3 DB7---DPROT.7 VLCD接1K电阻到GND* ;系统晶振为11.0592 ;************************************************** RS BIT P2.0 RW BIT P2.1 E BIT P2.2 DPORT EQU P0 XPOS EQU R1 ;列方向地址指针 YPOS EQU R2 ;行方向地址指针 CUR EQU R3 ;设定光标参数 NoDisp EQU 0 ;无显示 NoCur EQU 1 ;有显示无光标 CurNoFlash EQU 2 ;有光标但不闪烁 CurFlash EQU 3 ;有光标且闪烁

1602字符型液晶显示器

1602字符型液晶显示器 在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。 1602字符型LCD简介: 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图10-53: 图10-53 1602字符型液晶显示器实物图 1602LCD的基本参数及引脚功能: 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:

图10-55 读操作时序 图10-56 写操作时序 1602LCD的RAM地址映射及标准字库表: 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。

图10-57 1602LCD内部显示地址 例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” 图10-58 字符代码与图形对应图

基于单片机的lcd1602的多功能计算器

单片机原理与应用技术 课程设计 基于51单片机的多功能计算器 院系:机电工程学院 专业(班级):电子信息工程1班 姓名: 学号: 20134081006 指导教师:邵海龙 职称:讲师 完成日期:2015 年9月22日

评定成绩: 关键词:单片机;液晶显示;计算器; 目录 引言 (3) 1 单片机及其应用……………………………………………………………………...3. 1.1单片机介绍 (3) 1.2单片机的应用 (4) 1.3 STC89C52单片机 (4) 2 液晶屏LCD1602原理及应用 (5) 2.1液晶屏LCD1602介绍及工作原理 (5) 2.2 液晶屏LCD1602的功能及应用 (5) 3 设计思路、仿真及调试 (7) 3.1设计方法 (7) 3.2硬件设计............................................................................... . (7) 3.2.1复位电路 (7) 3.2.2 液晶屏LCD1602显示电路 (8) 3.2.3 4*4键盘的设计 (9) 3.2.5 多功能计算器的总电路 (10) 3.3软件设计 (10) 3.4软件仿真 (17) 3.5硬件调试 (18) 4 结束语.............................................................. .. (18) 谢辞 (18) 参考文献 (19) 1 单片机及其应用 1.1单片机介绍

单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能 1.2单片机的应用 STC89C52 是STC公司推出的一款超强抗干扰,加密性强,在线可编程,高速,低功耗CMOS 8位单片机。片内含 8k bytes 的可反复擦写Flash只读程序存储器和256 bytes 的随机数据存储器(RAM),器件采用STC公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash 存储单元,功能强大的STC89C52单片机适合于许多较为复杂控制应用场合。 1.3 STC89C52单片机 3.2 STC89C52外部结构及特性 其外形封装有两种方式:双列直插式40脚封装(DIP)和方形44脚封装(PLCC),直插式40 脚封装(DIP)和外部总线结构如图2和图3所示:

lcd1602按键显示程序

#include<> #include<> //包含_nop_()函数定义的头文件 typedef unsigned int uint ; typedef unsigned char uchar ; sbit RS=P2^0; //寄存器选择位,将RS位定义为引脚 sbit RW=P2^1; //读写选择位,将RW位定义为引脚 sbit E=P2^2; //使能信号位,将E位定义为引脚 sbit BF=P0^7; //忙碌标志位,,将BF位定义为引脚 " uchar keyscan(); void delay1ms(); void delay(unsigned char n); unsigned char BusyTest(void); void WriteInstruction (unsigned char dictate); void WriteAddress(unsigned char x); … void WriteData(unsigned char y); void LcdInitiate(void); void delay1ms() { unsigned char i,j; for(i=0;i<10;i++) for(j=0;j<33;j++); } ! void delay(unsigned char n) { unsigned char i; for(i=0;i

简易计算器

单片机课程设计题目:简易计算器的设计 专业:06电子信息科学与技术 姓名:倪耀兴 学号:060303008 指导老师:蔡植善 理工学院电信系 设计日期:2009年5月 12日

简易计算器的设计 1.引言------------------------------------------------2 2. 设计任务和要求-------------------------------------2 2.1设计要求-------------------------------------------0 2.2设计方案的确定-------------------------------------2 2.3主要元器件介绍--------------------------------------------------------3 3.简易计算器的硬件设计--------------------------------4 3.1键盘电路的设计----------------------------------4 3.2显示电路的设计---------------------------------4 4.简易计算器的软件设计-------------------------------6 4.1简易计算器的软件规则--------------------------------6 4.2中断查键的按键程序设计-------------------------------7 4.3显示模块程序的设计----------------------------7 4.4主程序的设计---------------------------------------7 5.调试及性能分析--------------------------------------7 5.1硬件调试--------------------------------------------7 5.2软件调试--------------------------------------------7 5.3相关可靠性软件设计----------------------------------7 5.4完整的源程序---------------------------------------------------------8- 6.关键程序的流程图-------------------------------------17 7.设计心得------------------------------------------19 8. 参考文献-----------------------------------------19

LCD1602液晶显示器设计

LCD1602液晶显示课程设计 第一章绪论 1.1课题背景 当今时候是一个信息化的时代,信息的重要性不言而喻的,获取手段显得尤其重要。人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最终需要有某种显示方式来表示。在当代显示技术中,主流的有LED显示屏和LCD液晶显示,而在这些显示技术中,尤其以液晶显示器LCD(Liquid crystal display)为代表的平板显示器发展最快,应用最广。LCD是典型的发光器件,它一材料科学为基础,综合利用了精密机械,光电及计算机技术,并正在微机械,微光学,纤维光学等前沿领域研究基础上,向高集成化,智能化方向发展。 液晶显示技术发展迅猛,市场预测表明,液晶显示平均年销售呈增长10%~13%,不久的将来有可能取代CRT,成为电子信息产品的主要显示器件,另外,液晶显示器对空间电磁辐射的干扰不敏感,且在紧凑的仪器空间不需要专门的屏蔽保护,因而课大大简化仪器的结构和制造成本,在各种便携式仪器,仪表将会越来越广泛的应用。特别是在电池供电的单片机产品中,液晶显示更是必选的显示器件。 1.2课题设计目标 本设计是基于AT89C51芯片单片机为主控芯片,结合1602液晶显示模板等外围电路,通过软件程序,来实现液晶显示英文字母。本次设计的目的在于利用单片机和IIC技术来显示英文字母。 1.3课程设计的主要工作 (1)对系统的各个模块的各个功能进行深入分析和研究,在对课题所采用的方案进行可行详细的研究后设计具体功能电路。 (2)熟悉所选芯片的功能并完成具体电路设计。

(3)对系统的最终指标进行测试,针对系统的不足,进行分析并提出一些改正方法。 1.4 设计要求 (1)运行IIC总线技术。 (2)循环显示字母。 第二章硬件设计 2.1 LCD1602简介 2.1.1 LCD1602引脚功能 LCD1602引脚如图2.1所示 图2.1 LCD1602引脚图 引脚图的功能如表2—1所示

1602液晶显示计算器电路图及程序

#include #include #include #include unsigned char code Error[]={"error"}; unsigned char code Systemerror[]={"system error"}; unsigned char code Lcd[]={"lcd calculate"}; char str[16]; sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit BF=P0^7; /*********************** 函数功能:延时1ms ***********************/ void delay1ms() { unsigned char i,j; for (i=0;i<10;i++) for (j=0;j<33;j++) ; } /************************ 函数功能:延时n毫秒 入口参数:n ************************/ void delaynms(unsigned char n) { unsigned char i; for (i=0;i

基于LCD1602液晶显示系统课程设计

课程设计(论文) 题目名称基于89C51的液晶显示系统设计 课程名称单片机原理及应在电气测控学科中的应用学生姓名刘晨 学号1141201014 系、专业电气工程系电气工程及其自动化专业 指导教师朱群峰 2013年6月14日

邵阳学院课程设计(论文)任务书 年级专业11级电气工程及 其自动化专业 学生姓名刘晨学号1141201014 题目名称基于89C51的液晶显示系统设计设计时间2013年6月3日—2013年6月14日 课程名称单片机原理及应 在电气测控学科 中的应用 课程编号121200105设计地点 数字控制与PLC实 验室(305) 一、课程设计(论文)目的 课程设计是在校学生素质教育的重要环节,是理论与实践相结合的桥梁和纽带。单片机课程设计,要求学生更多的完成软硬结合的动手实践方案,解决目前学生课程设计过程中普遍存在的缺乏动手能力的现象. 《单片机课程设计》是继《电子技术》、和《单片机原理与应用》课程之后开出的实践环节课程,其目的和任务是训练学生综合运用已学课程“电子技术基础”、“单片机原理及应用”的基本知识,独立进行单片机应用技术和开发工作,掌握单片机程序设计、调试和应用电路设计、分析及调试检测。 二、已知技术参数和条件 1、液晶显示功能见第三项“任务和要求”具体参数 1、89C51系列单片机; 2、KEIL 软件;Wave软件、protuse软件 3、THKSCM-1型单片机实验系统。 三、任务和要求 利用89C51驱动液晶显示器工作,液晶显示器的型号自己确定(可以用1602或者12864)要求显示出自己的基本信息(英文或者中文,内容自定)。 1、要求设计出硬件系统的电气原理图; 2、要求设计出程序流程图和程序; 3、要求设计出实物或者仿真调试。 注:1.此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效; 2.此表1式3份,学生、指导教师、教研室各1份。

Lcd1602简易计算器

Lcd1602显示实现千位数加减乘除用4*4矩阵按键输入0~9 +,-,*,/,=,和清除建 #include #define temp P3 sbit RS=P0^0; sbit RW=P0^1; sbit E =P0^2; unsigned char key_num; unsigned char lcd_tab3[16]=" "; unsigned char code lcd_tab4[]="0123456789+-*/="; unsigned char lcd_tab5[16]=" "; unsigned char lcd_tab6[]=" "; unsigned char lcd_tab7[]="."; int a,b,c,d,m,i; void decide(); long int key_cnt=0,key_number,key_number1; unsigned char flag1=0,flag2=0,flag3=0,flag4=0,flag5=0; long int result, result1, result2, result3, result4,result5, result6, result7, result8; int decimal0,decimal1; delay_nms(unsigned int i) { unsigned int j; for(;i!=0;i--) { for(j=0;j<61;j++); }

} key_scan(void) { unsigned char a; temp=0xf0; if(temp!=0xf0) { delay_nms(10); { if(temp!=0xf0) switch(temp) { case 0xe0 :key_num= 0; break; case 0xd0 :key_num= 1; break; case 0xb0 :key_num= 2; break; case 0x70 :key_num= 3; break; } temp=0x0f; switch(temp) { case 0x0e :key_num=key_num; break; case 0x0d :key_num= key_num+4; break; case 0x0b :key_num= key_num+8; break; case 0x07 : key_num=key_num+12; break; default :break; } while((a<50)&&( temp!=0x0f)) { delay_nms(1); a++; } temp=0xf0; } } return (key_num); } void write_com(char cod) { E=0; RS=0; RW=0; E=1; delay_nms(1); P2=cod;

手机拨号矩阵键盘控制lcd1602

手机拨号矩阵键盘控制lcd1602 #include #include #define uint unsigned int #define uchar unsigned char sbit RS=P2^0; sbit RW=P2^1; sbit EP=P2^2; uchar num[12]={"0123456789*#"}; void delay(uint ms) { uint i,j; for(i=ms;i>0;i--) for(j=115;j>0;j--); } uchar busy_check()//忙碌 { uchar result; RS=0; RW=1; EP=1; _nop_(); _nop_(); _nop_(); result=P0&0x80;

EP=0; return result; } void cmd(uchar x)//指令{ while(busy_check()); RS=0; RW=0; EP=0; _nop_(); _nop_(); _nop_(); P0=x; _nop_(); _nop_(); _nop_(); EP=1; _nop_(); _nop_(); _nop_(); EP=0; } void date(uchar y)//数据{ while(busy_check()); RS=1; RW=0; EP=0; _nop_(); _nop_(); _nop_(); P0=y; _nop_(); _nop_(); _nop_(); EP=1; _nop_(); _nop_(); _nop_(); EP=0; } void init()//初始化 {

单片机计算器

#include "reg52.h" #include "math.h" //#include "lcd1602_8.h" #define uint unsigned int #define uchar unsigned char uint temp , num; //键盘扫描数值 uchar keynum1=0,keynum2=0,sign=0,i=0,j=0; //按键计数,符号标示uchar num1[8]={0},num2[8]={0}; //按键存储数组 float ans1=0,ans2=0,ans=0,point=0; //运算数据 bit conflag=0; //继续运算标志位 bit newcalc=0; //新运算标志位 bit ac=0; //清零标志,1为清零 bit beepflag=0; //蜂鸣器标志位 bit sqrtflag1=0; //开方1标志位 bit sqrtflag2=0; //开方2标志位 sbit keybeep=P3^3; //蜂鸣器开关按键 sbit beep=P2^7; //蜂鸣器控制口 sbit keysqrt=P3^4; //开方按键 sbit keypow=P3^5; //任意次方按键 sbit LCDRS=P2^0; sbit LCDRW=P2^1; sbit LCDEN=P2^2; uchar keyscan(); void maininit(void); //附4:LCD1602显示程序 //#include //#include"lcd1602_8.h" //#include //延时1ms程序 void delayms(uint x) //12M延时1ms { unsigned int TempMS=x*110; while(TempMS--); } //写命令 void lcdwrite_com(uchar i) { P0=i; LCDRS=0; LCDRW=0; LCDEN=0;

LCD1602按键盘输入显示

名称:LCD1602 论坛:https://www.360docs.net/doc/2616293848.html, 编写:shifang 日期:2009.5 修改:无 内容:通过矩阵键盘输入,依次显示0-F16中字符 引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include sbit RS = P2^4; //定义端口 sbit RW = P2^5; sbit EN = P2^6; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0 #define EN_SET EN=1 #define DataPort P0 #define KeyPort P1 unsigned char code dofly_code[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//转换成液晶显示的字符 /*------------------------------------------------ uS延时函数,含有输入参数unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延时函数,含有输入参数unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编

单片机课程设计--1602LCD显示电话拨号键盘按键

单片机课程设计--1602LCD显示电话拨号键盘按键琼州学院电子信息工程学院 课程设计报告 课程名称: 单片机课程设计 设计题目:1602LCD显示电话拨号键盘按键 专业: 通信工程 班级: 2010级1班 学生姓名: *** 学号: 起止日期: 2013年4月,2013年6月 指导教师: 指导教师评语: 最终成绩: 指导教师签名: 年月日成项目权重成绩 绩1、设计过程中的学习态度 0.2 评2、课程设计的质量及答辩 0.5 定 3、设计报告书规范程度 0.3 4、总成绩 目录 1.设计目的 ..................................................... 2 2.设计要求 ..................................................... 2 3.设计方案 .. (2) 3.1单片机最小系统 (2) 3.2输入按键系统 (3) 3.3 1602LCD显示系统 (3)

3.4设计原理图 ............................................... 6 4. 分析与编程 (7) 4.1系统流程图 (7) 4.2 LCD显示程序流程图 (7) 4.3 设计程序 ................................................ 8 5.仿真 ........................................................ 14 6.在实现过程中遇到的问题及排除措施 ............................ 15 7.设计心得体会 ................................................ 16 参考文 献 (16) 1602LCD显示电话拨号键盘按键 摘要:本设计以89C51单片机为核心,设计1602LCD显示电话拨号键盘按键, 对按键输入系统,LCD1602的引脚功能、控制命令、读写时序进行了分析。在keil 中进行编程,在proteus软件中进行了仿真。 关键字:单片机;1602LCD显示屏;键盘系统 1 1.设计目的 单片机原理与应用课程设计是单片机原理与应用专业课程的实践性教学环节,通过该教学环节,要求达到以下目的: (1)培养学生工程设计能力和综合分析问题、解决问题的能力,能根据工程需求,利用Proteus环境等构建原理图,利用Keil等环境编写调试单片机功能程序,最终构建工程的硬件平台和软件平台,达到预定功能,实现单片机具体应用; (2)熟悉在Proteus环境中的ISIS模块原理图绘制,掌握仿真的基本方法; (3)掌握Keil C编程及C51编程语言和汇编语言开发; (4)掌握单片机片内资源编程,能熟练应用相关片内资源合理配置相关寄存器;

LCD1602显示屏地驱动设置及例程

LCD1602显示屏的驱动设置及例程 一般来说,LCD1602有16条引脚,据说还有14条引脚的,与16脚的相比缺少了背光电源A(15脚)和地线K(16脚)。我手里这块LCD1602的型号是HJ1602A,是绘晶科技公司的产品,它有16条引脚。如图1所示: 图1 再来一它的背面的,如图2所示:

图2它的16条引脚定义如下: 对这个表的说明: 1. VSS接电源地。 2. VDD接+5V。 3. VO是液晶显示的偏压信号,可接10K的3296精密电位器。或同样阻值的RM065/R M063蓝白可调电阻。见图3。 图3 4. RS是命令/数据选择引脚,接单片机的一个I/O,当RS为低电平时,选择命令;当R S为高电平时,选择数据。 5. RW是读/写选择引脚,接单片机的一个I/O,当RW为低电平时,向LCD1602写入命令或数据;当RW为高电平时,从LCD1602读取状态或数据。如果不需要进行读取操作,可以直接将其接VSS。 6. E ,执行命令的使能引脚,接单片机的一个I/O。 7. D0—D7,并行数据输入/输出引脚,可接单片机的P0—P3任意的8个I/O口。如果接P0口,P0口应该接4.7K—10K的上拉电阻。如果是4线并行驱动,只须接4个I/O口。 8. A背光正极,可接一个10—47欧的限流电阻到VDD。 9. K背光负极,接VSS。见图4所示。

图4 二.基本操作 LCD1602的基本操作分为四种: 1. 读状态:输入RS=0,RW=1,E=高脉冲。输出:D0—D7为状态字。 2. 读数据:输入RS=1,RW=1,E=高脉冲。输出:D0—D7为数据。 3. 写命令:输入RS=0,RW=0,E=高脉冲。输出:无。 4. 写数据:输入RS=1,RW=0,E=高脉冲。输出:无。 读操作时序图(如图5): 图5 写操作时序图(如图6):

单片机设计 按键顺序控制加减计数(1602 液晶显示) 程序

#include #include #define uchar unsigned char #define uint unsigned int #define LCD_IO P2 sbit KK1 = P3^2; //按键输入; sbit KK2 = P3^3; //按键输入; sbit LCD_RS = P3^5; sbit LCD_RW = P3^6; sbit LCD_EN = P3^7; uchar code LCD_line1[] = " The Counter"; int idata mydata=0; /************************************************************** * 名称: Delay_1ms() * 功能: 延时子程序,延时时间为1ms * x * 输入: x (延时一毫秒的个数) * 输出: 无 ***************************************************************/ void Delay_1ms(uint x) { uchar i, j; for(i = 0; i < x; i++) for(j = 0; j <= 148; j++); } /************************************************************** * 名称: lcd_bz( ) * 功能: 测试忙碌子程序 * 输入: 无 * 输出: result ***************************************************************/ bit lcd_bz() { bit result; LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); _nop_(); _nop_(); result=(bit)(P3&0x80); LCD_EN = 0; return result; }

1602液晶显示设计

摘要 本次课程设计是以AT89C52为核心控制器,1602液晶为显示器设计的液晶显示电路。该电路可在1602液晶上显示ASCII码表里的各种字符,通过编程设定的显示方式。设计中采用了二种动态显示方式,第一种是整屏左移操作,先将待显示的内容写入1602RAM 的后面几个存储单元,当内容写入完成后,写入指令,实现指针不动而屏幕动的效果。第二种是将内容一个个写到1602显示,这主要通过延时函数控制写入的两个字符间的时间间隔。1602液晶一次可以显示32个字符,通过编程可以实现不同的动态显示方式。 关键词:AT89C52;1602;动态显示

1 Proteus仿真流程与Keil编译器简介 1.1 Proteus仿真流程 (1)工作界面 Proteus ISIS的工作界面是一种标准的Windows界面,如图1-2所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。 图1.1 proteus操作界面 (2)基本操作 ①图形编辑窗口 在图形编辑窗口内完成电路原理图的编辑和绘制。为了方便作图 坐标系统(CO-ORDINATE SYSTEM)。ISIS中坐标系统的基本单位是10nm,主要是为了和Proteus ARES保持一致。但坐标系统的识别(read-out)单位被限制在1th。坐标原点默认在图形编辑区的中间,图形的坐标值能够显示在屏幕的右下角的状态栏中。

点状栅格(The Dot Grid)与捕捉到栅格(Snapping to a Grid)编辑窗口内有点状的栅格,可以通过View菜单的Grid命令在打开和关闭间切换。点与点之间的间距由当前捕捉的设置决定。捕捉的尺度可以由View菜单的Snap命令设置,或者直接使用快捷键F4、F3、F2和CTRL+F1。 ②预览窗口 该窗口通常显示整个电路图的缩略图。在预览窗口上点击鼠标左键,将会有一个矩形蓝绿框标示出在编辑窗口的中显示的区域。其他情况下,预览窗口显示将要放置的对象的预览。这种Place Preview特性在下列情况下被激活:当一个对象在选择器中被选中、 当使用旋转或镜像按钮时、当为一个可以设定朝向的对象选择类型图标时(例如:Component icon, Device Pin icon等等)、当放置对象或者执行其他非以上操作时,place preview会自动消除、对象选择器(Object Selector)根据由图标决定的当前状态显示不同的内容。显示对象的类型包括:设备,终端,管脚,图形符号,标注和图形。在某些状态下,对象选择器有一个Pick切换按钮,点击该按钮可以弹出库元件选取窗体。通过该窗体可以选择元件并置入对象选择器,在今后绘图时使用。 ③对象选择与放置 通过对象选择按钮,从元件库中选择对象,并置入对象选择器窗口,供今后绘图时使用。显示对象的类型包括:设备,终端,管脚,图形符号,标注和图形。放置对象的步骤如下(To place an object:)根据对象的类别在工具箱选择相应模式的图标(mode icon)。根据对象的具体类型选择子模式图标(sub-mode icon)。如果对象类型是元件、端点、管脚、图形、符号或标记,从选择器里(selector)选择你想要的对象的名字。对于元件、端点、管脚和符号,可能首先需要从库中调出。如果对象是有方向的,将会在预览窗口显示出来,你可以通过预览对象方位按钮对对象进行调整。最后,指向编辑窗口并点击鼠标左键放置对象。 1.2 Keil软件简介 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil 软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么

STC 51单片机 开发板 计算器 LCD1602显示 浮点计算 设计 报告

嵌入式系统原理及应用课程设计报告 姓名: 学号: 指导老师:

目录 引言 (3) 第一章硬件介绍 (4) 1.1单片机介绍 (4) 1.2 设计所用开发板的介绍 (5) 1.3 LCD1602的原理及其应用 (7) 1.3.1开发板硬件连接关系 (7) 1.3.2液晶屏LCD1602的功能及应用 (8) 1.3.31602LCD的指令说明及时序 (9) 1.3.4 1602LCD的RAM地址映射及标准字库表 (11) 1.4开发板矩阵键盘原理及应用 (12) 第二章设计思路、仿真及调试 (15) 2.1 设计方法 (15) 2.2 硬件简介 (15) 2.3 软件设计 (15) 2.3.1 矩阵键盘 (15) 2.3.2 LCD1602 (22) 第三章设计结果 (24) 第四章设计总结 (27) 附录 (28)

引言 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: (1)在智能仪器仪表上的应用 (2)在工业控制中的应用 (3)在家用电器中的应用 (4)在计算机网络和通信领域中的应用 (5)单片机在医用设备领域中的应用 (6)在各种大型电器中的模块化应用 (7)单片机在汽车设备领域中的应用 此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。 随着智能化的逐步提高,单片机在我们生活中得到了越来越广泛的应用,其是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。本设计要制作的就是单片机于生活中最为常见的异种应用——简易计算器。本简易计算器是在普中HC6800 V3.0开发板的基础上,利用开发板上已有的资源设计开发的,本开发板上有着相对丰富的硬件资源,可以较好的完成一些设计。 本设计所用的单片机为STC90C516RD+,具体的设计要求如下:通过矩阵键盘检测按下的数字和运算符号,在LCD1602液晶显示屏上面显示运算的结果,在第一行上显示输入的计算式,为左对齐;在第二行显示等于号以及最后的运算结果,为了较好的显示效果和使用的效果,第二行的计算结果显示设计为右对齐。这样在LCD1602的显示屏上可以有较好的显示效果,计算效果比较分明。 总体上来说,作为本嵌入式原理课程的设计作业,本设计的实现难度不大。

相关文档
最新文档