单片机液晶显示器实验
- 格式:pdf
- 大小:325.74 KB
- 文档页数:8
单片机实验报告班级:09050541学号:0905054116姓名:王昆鹏实验1 P1口实验一、实验目的:1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验设备:CPU挂箱、8051CPU模块三、实验内容:1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
四、实验原理:P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。
软件延时,如果用c编程时,通过使用keil的软件模拟,调试观察子函数(delay)延时时间。
(具体延时可以自行设定)使用汇编语言的软件延时,可以计算其指令的周期数,大概估算其软件延时。
五、实验原理图:P1口输出、输入实验六、实验步骤:执行程序:P1.0~P1.7接发光二极管L1~L8。
七、程序框图:循环点亮发光二极管(具体延时可以自行设定)八、程序代码NAME T1_1ORG 0000HLJMP STARTORG 0030HSTART: MOV A,#0FEH //将1111 1110赋给A LOOP: RL A //A循环左移MOV P1,A //把A赋给端口P1LCALL DELAY //延时0.16sJMP LOOP //循环;延时函数DELAY: MOV R1,#200DEL1: MOV R2,#200DEL2: DJNZ R2,DEL2DJNZ R1,DEL1RETEND实验2 中断口实验一、实验目的:1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
二、实验设备:CPU挂箱、8051CPU模块三、实验内容:通过设定两个中断使能和触发方式,并编写相应的中断服务子函数,改变led灯的变化情况。
当按下KEYBOARD的按键时8个led都灭,当把k1向上拉再复位后,4个led亮,4个灭。
四、实验原理:参考《单片机原理及接口技术》第三版,北京航空航天大学出版社。
单片机实训心得体会500通用5篇经过了这么多年的工作和学习,我们一定有很多心得体会吧,写心得体会就是很好的记录方式,今天就为您带来了单片机实训心得体会500通用5篇,相信一定会对你有所帮助。
单片机实训心得体会500篇1最近自己对单片机特别的感兴趣,因为看到它能控制电机的转动,自己觉得很神奇。
就想弄清楚它到底是怎么做到的?我看到书上讲:单片机可以用两种语言编写,一种是c语言,另外一种是汇编语言。
汇编语言是一种机器语言,且代码繁琐,不易记忆。
需要掌握单片机的内部结构和逻辑结构,通过看了几本书让我了解认识到汇编确实太繁琐,不过我学习过c语言,也参加了全国计算机二级考试,觉得自己在一方面具有优势,能很快学好它。
不过在学习中,我才发现学习单片机不仅仅需要软件的知识,还需要硬件的知识。
我买了一个单片机在实践中就是一个活生生的例子,没有相应的硬件知识,我连单片机怎么和电脑相连都不知道,我为我当初的想法感到羞愧。
单片机是一门很好的学问,需要我去钻研它。
时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机综合课程设计也在一周内完成了。
俗话说“好的开始是成功的一半”。
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。
其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
虽然这次的课程设计算起来在实验室的时间只有三天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。
硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。
当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。
51单片机控制LCD1602液晶屏本讲任务:了解液晶1602的相关知识,通过一个例程了解液晶1602的使用。
LCD1602简介:1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号的点阵型液晶模块。
它是由若干个5x7或者5x11的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。
例程:/****************LCD驱动基本代码 ******************单片机型号:STC89C52RC*开发环境:KEIL*名称:1602驱动基本代码*************************************************/#include<reg52.h>#include<intrins.h>#define LCD_Data P0#define Busy 0x80sbit LCD_RS=P1^0;sbit LCD_RW=P1^1;sbit LCD_E=P2^5;unsigned char code welcome[]={"YOU ARE WELCOME"};unsigned char code mcu[]={"SL-51A"};void Delay5Ms(void);void WriteDataLCD(unsigned char WDLCD);void WriteCommandLCD(unsigned char WCLCD,BuysC);unsigned char ReadDataLCD(void);unsigned char ReadStatusLCD(void);void LCDInit(void);void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData);void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData); void Info_display(void);void Delay5Ms(void){unsigned int TempCyc=3552;while(TempCyc--);}void WriteDataLCD(unsigned char WDLCD){ReadStatusLCD();LCD_Data=WDLCD;LCD_RS=1;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}void WriteCommandLCD(unsigned char WCLCD,BuysC) {if(BuysC)ReadStatusLCD();LCD_Data=WCLCD;LCD_RS=0;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}unsigned char ReadDataLCD(void){LCD_RS=1;LCD_RW=1;LCD_E=0;LCD_E=0;LCD_E=1;return(LCD_Data);}unsigned char ReadStatusLCD(void) {LCD_Data=0xFF;LCD_RS=0;LCD_RW=1;LCD_E=1;while (LCD_Data & Busy);return(LCD_Data);}void LCDInit(void){LCD_Data=0;Delay5Ms();Delay5Ms();Delay5Ms(); WriteCommandLCD(0x38,0);Delay5Ms(); WriteCommandLCD(0x38,0);Delay5Ms(); WriteCommandLCD(0x38,0);Delay5Ms(); WriteCommandLCD(0x38,1);WriteCommandLCD(0x08,1);WriteCommandLCD(0x01,1);WriteCommandLCD(0x06,1);WriteCommandLCD(0x0C,1);}void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData){Y&=0x1;X&=0xF;if(Y)X|=0x40;X|=0x80;WriteCommandLCD(X,0);WriteDataLCD(DData);}void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData) {unsigned char ListLength;ListLength=0;Y&=0x1;X&=0xF;while(DData[ListLength]>=0x20){if(X<=0xF){DisplayOneChar(X,Y,DData[ListLength]);ListLength++;X++;}}}void main(void){LCDInit();DisplayListChar(5,0,mcu);DisplayListChar(0,1,welcome);while(1){;}}。
功能完整的1602LCD时钟实验摘要本设计基于单⽚机技术原理,以单⽚机芯⽚STC89C52作为核⼼控制器,通过硬件电路的制作以及软件程序的编制,设计制作出⼀个多功能数字时钟系统。
单⽚机扩展的LCD显⽰器⽤来显⽰年、⽉、⽇、时、分、秒计数单元中的值。
整个设计包括两⼤部分: 硬件部分和软件部分,以单⽚机为核⼼, 配以⼀定的外围电路和软件。
硬件是整个系统的基础, 软件部分则要合理、充分地⽀持和使⽤系统的硬件, 从⽽完成系统所要完成的任务。
本设计采⽤LCD液晶显⽰,电路简单使⽤⼴泛。
该时钟系统主要由时钟模块、闹钟模块、液晶显⽰模块、键盘控制模块以及信号提⽰模块组成。
能够准确显⽰时间(显⽰格式为年:⽉:⽇:时时:分分:秒秒,24⼩时制),可随时进⾏时间调整,具有闹钟时间设置、闹钟开/关、⽌闹功能。
设计以硬件软件化为指导思想,充分发挥单⽚机功能,⼤部分功能通过软件编程来实现,电路简单明了,系统稳定性⾼。
单⽚机在这种情况下诞⽣了基于单⽚机电⼦时钟。
关键词:单⽚机 LCD1602 数字钟This design based on the single chip microcomputer principle, taking single-chip chip STC89C52 as core controller, through the hardware circuit and software production procedure formulation, designed and produced a multi-function digital clock system. SCM extended LCD display used to display date and time, minutes and seconds counting unit of values. The whole design includes two parts, hardware and software of, based on singlechip, match with certain peripheral circuit and software. Hardware is based in the whole system, the software part then be reasonable and fully support and use the system hardware, thus completing system to complete the task. This design USES the LCD, simple circuit is widely used. This clock system mainly by the clock module, alarm module, LCD module, keyboard control module and signal hint module. To accurately display the time (display format for years: month: day: always: component: seconds seconds, 24-hour system), available for time to adjust, with alarm time setting, alarm clock on/off, stop joking function. Design with hardware and software into guiding ideology, give full play to the SCM functions, most functions through software programming realize, circuit straightforward, stability of the system is high. SCM in this case was born based on single-chip electronic clock. Keywords: SCM LCD1602 digital clock前⾔数字钟是采⽤数字电路实现对时,分,秒数字显⽰的计时装置,⼴泛⽤于个⼈家庭,车站, 码头办公室等公共场所,成为⼈们⽇常⽣活中不可少的必需品,由于数字集成电路的发展和⽯英晶体振荡器的⼴泛应⽤,使得数字钟的精度,远远超过⽼式钟表, 钟表的数字化给⼈们⽣产⽣活带来了极⼤的⽅便,⽽且⼤⼤地扩展了钟表原先的报时功能。
课程设计报告设计课题:波形发生器波形发生器一、课程设计目的:通过本实验,熟悉单片机89c52、并行液晶显示器、AD7528八位数字—模拟转换器等模块的原理及结构,能熟练地编程并使用这些模块实现波形发生器。
二、课程设计题目(问题)描述和要求:应用AD7528设计实现波形发生器。
能够应用按键控制输出方波、正弦波、三角波,并在液晶显示器上显示当前输出波形种类。
三、系统分析与设计根据课程设计题目问题描述和要求,完成:1: 系统总体设计-确定系统功能模块划分及说明;根据设计题目分析可得,本实验可分为四大模块:(1)主机由89C52单片机及其附属的MAX232,GAL16V8等构成,是本系统的主要部分,主要完成对D/A7528的片选。
(2)按键部分由连接在P1.0—P1.3口的按键组成。
用前三个键来控制所产生的波形种类。
(3)波形发生部分由AD7528和LM324组成。
AD7528由GAL16V8片选,完成由数字转化为模拟的波形信号,再通过LM324放大。
(4)显示部分由并行液晶显示器构成,通过GAL16V8片选,主要进行显示产生波形的种类,sin、tri、sup。
2: 系统详细设计-在总体设计基础上设计系统总体框架、系统流程图;各部分电路如下所示:图1 按键部分电路,图2 89C52单片机,GAL16V8,74LS573锁存器连线图,图3 AD7528引脚连线图,图4 并行液晶显示器引脚连线图,图5 LM324放大器结构图。
图1 按键部分电路图2 89C52单片机,GAL16V8,74LS573锁存器连线图图3 AD7528引脚连线图图4 并行液晶显示器引脚连线图图5 LM324放大器结构图3: 源程序清单(每条指令都要加注释,说明其功能,入口参数,返回参数)#include<reg51.h>#include<intrins.h>#include<absacc.h>#include <math.h>#define uchar unsigned char#define uint unsigned int#define addr_7528_a XBYTE[0x8000] /*AD7528A通道地址*/#define LCDCOM0 XBYTE[0Xe0ff] /*并行业经命令*/#define LCDCOM1 XBYTE[0Xe4ff]#define LCDDATA XBYTE[0Xe8ff] /*并行液晶存储器地址*/#define LCDDATA_READ XBYTE[0Xecff]sbit bflag =ACC^7;uchar idata kk[64];/*定义数组用于正弦波的产生*/uchar str0[3]={'s','i','n'};/*正弦波状态显示字符*/uchar str1[3]={'t','r','i'};/*三角波状态显示字符*/uchar str2[3]={'s','q','u'};/*方波状态显示字符*/uchar str3[3]={'e','r','r'};/*错误状态显示字符*/void delay(uint time_0) /*延时子程序*/ { uchar time_1=0;for(;time_0!=0;time_0--){for(time_1=0;time_1<125;time_1++){;}}}void wait(void) /*液晶显示出始化*/{do(ACC=LCDCOM1);while(bflag==1);}void init_lcd(){wait();LCDCOM0=0x38;/*置功能,2行,5*7字符*/wait();LCDCOM0=0x06;/*置输入模式:地址增量,显示屏不移动*/wait();LCDCOM0=0x0c;wait();LCDCOM0=0x01;/*清显示*/}void init_command(uchar command)/*发送新命令用于给出新显示地址*/ {wait();LCDCOM0=command;}/*首行地址0x80~0xa7*/void d_char(uchar a){LCDDATA=a; /*将字符的asc码送lcddata*/wait();}void display(uchar *m)/*显示子程序*/{uchar l;init_lcd(); /*液晶显示器出始化*/{init_command(0xc0);/*设置行*/for(l=0;l<3;l++) /*输出三个字符*/{d_char(m[l]);}}}uchar getkey()/*按键判断子程序*/{uchar key_code=0;/*初始模式设为0*/if((P1&0x0f)!=0x0f) /*判断有按键否*/{delay(20); /*有按键则延时消除抖动*/if((P1&0x0f)!=0x0f){if((P1&0x0f)==0x0e) key_code=1;/*按下键模式一*/else if((P1&0x0f)==0x0d) key_code=2;else if((P1&0x0f)==0x0b) key_code=3;/*第三个按键按下模式三*/}}return key_code;}makewave(uchar m)/*波形产生子程序*/{uint zzl;if(m==1) /*正弦波*/{for(zzl=0;zzl<128;zzl++){addr_7528_a=kk[zzl];}}else if(m==2) /*三角波*/ {for(zzl=0;zzl<256;zzl++){if(zzl<=128) addr_7528_a=zzl/2;else addr_7528_a=256-zzl/2;}}else if(m==3) /*方波*/{for(zzl=0;zzl<256;zzl++){if (zzl<=128) addr_7528_a=255;else addr_7528_a=0;}}}main(){ uchar keynum; /*用于模式选择的变量*/uchar n=0,m;init_lcd(); /*调用液晶初始化子程序*/for(;;){keynum=getkey();switch(keynum) /*选择模式*/{case 1: display(str0);n=1;/*模式一产生正弦波显示类型*/for(m=0;m<64;m++){kk[m]=128*sin(3.14*m/32)+127;}break;case 2: display(str1);n=2;break; /*模式二三角波显示类型*/case 3: display(str2);n=3;break;/*模式三方波显示类型*/case 0: break;}makewave(n);}}四. 系统调试过程中出现的主要问题:1.程序下载时,端口的选择不同于以前的试验,用此软件时,用rom1或rom2;由于入口地址错误,下载之后仍然没有现象。
单片机与LCD显示屏的驱动原理及接口设计LCD(Liquid Crystal Display)液晶显示屏是一种常见的显示设备,它通过液晶分子的电场控制实现图像的显示。
单片机作为一种微型计算机,具有运算能力和输入输出接口,能够控制和驱动各种外部设备,包括LCD显示屏。
本文将介绍单片机与LCD显示屏的驱动原理以及接口设计。
一、驱动原理1.1 LCD液晶显示原理LCD液晶显示原理是基于液晶分子光学特性的一个原理。
液晶分子在无电场作用下,分子排列有序,光线经过液晶分子会受到旋转和调整,从而产生不同的偏振方向和相移,导致光线透射情况的变化。
当有电场作用于液晶分子时,分子排列发生改变,从而改变了光线的透射情况,进而实现图像的显示。
1.2 驱动方式常见的LCD驱动方式有并行驱动和串行驱动两种。
并行驱动方式是将LCD驱动器的数据线与单片机相连接,通过同时发送多位数据来驱动LCD显示。
具体的驱动方式有8080并行接口、6800并行接口等。
串行驱动方式是将LCD驱动器的数据线与单片机的串行通信链路相连,通过逐位或逐字节串行传输数据来驱动LCD显示。
常用的串行驱动方式有I2C接口和SPI接口等。
1.3 LCD控制器为了简化单片机与LCD显示屏的连接和驱动,常使用LCD控制器。
LCD控制器是一种特殊的芯片,能够直接与单片机通信,并通过内部逻辑电路将数据转换为LCD所需的信号。
常见的LCD控制器有HD44780、SSD1306等。
二、接口设计2.1 并行接口设计并行接口是将LCD的数据线与单片机的数据线相连接,通过同时发送多位数据来驱动LCD显示。
一般包括数据线、读使能信号(RD)、写使能信号(WR)、使能信号(EN)和控制线(RS、R/W)等。
其中,数据线用于传输图像数据和命令数据,一般为8位数据线。
RD信号用于将LCD指令端或数据端的数据读出;WR信号用于将单片机所发出的数据写入到LCD模块中;EN信号用于控制LCD模块的操作;RS线用于指示数据传输的类型,一般为低电平表示指令,高电平表示数据;R/W线用于指示单片机与LCD模块之间的读写操作。
Multisim里仿真8051单片机Multisim 里仿真8051单片机实现的功能:本次实验要求实现基于单片机的LCD显示,LCD分两次显示,第一次显示“0123”第二次显示“456789A”。
LCD采用08x1的液晶显示器,单片机采用8051。
实验内容:1、建立工程存放文件夹:打开“我的文档”,在National Instruments文件夹中打开Circuit Design Suite 10.0,然后在MCU Workspaces文件夹中新建一个文件夹,文件名为project。
2、双击桌面上的Multisim10的图标,软件打开需要等待一定的时间。
3、设置:点击菜单栏中的“Options”,选择“sheet properties”,在Circuit中的“NET names”栏里选中“Hide All”,然后再点击Workspace,在“Sheet size”栏中选择“A4”,点击“OK”。
4、保存工程文件:点击File中的Save,在弹出的对话框中点击MCU Workspaces,然后点击自己新建的project文件夹,然后点击“保存”。
5、选择元器件:在空白纸上点击右键,然后选择“Place Component”,在弹出的对话框中的“Group”中选择“MCU Module”,然后在“family”中选择“805X”中的“8051”,点击“OK”,在图上适合的位置点击左键,在弹出的对话框中点击“Browse”,在“我的文档”中找到刚新建的project文件夹,点击该文件夹,然后点击确定。
在“Please enter the work space name”中输入文件名“project”,点击“Next”,在“Programming language”中选择“Assembly”,然后点击“Finish”。
接着在“Group”中选择“Basic”,在“Family”中选择“RESISTOR”,在Component中点击“10K”电阻,点击“OK”,在适合的位置点击左键即可。