单片机数码管.LCD显示
- 格式:pptx
- 大小:169.45 KB
- 文档页数:19
单片机数码管显示实验总结单片机数码管显示实验总结一、实验目的本次实验旨在通过单片机控制数码管显示,掌握数码管的工作原理、编程控制方法以及单片机与数码管的接口技术。
通过实验,提高自己的动手能力和编程技能,为今后的学习和实际工作打下坚实的基础。
二、实验原理数码管是一种常用的电子显示器件,它由多个LED组成,通过控制各个LED的亮灭来显示不同的数字或字符。
本次实验采用的是共阴极数码管,它由8个LED组成,通过单片机控制每个LED的亮灭状态来显示不同的数字或字符。
三、实验步骤1.硬件准备(1)选择合适的单片机开发板,如Arduino、STM32等。
(2)购买数码管及相应的驱动电路。
(3)准备杜邦线、电阻、电容等电子元件。
2.硬件连接(1)将数码管与单片机开发板连接起来。
(2)根据数码管驱动电路的要求,连接电源、地线和控制信号线。
(3)连接电源后,打开开发板电源,观察数码管的显示效果。
3.编程控制(1)在开发板上编写程序,控制数码管显示不同的数字或字符。
(2)使用相应的编译器将程序编译成可执行文件,上传到开发板上。
(3)观察数码管的显示效果,调试程序,使其达到预期效果。
4.测试与评估(1)在不同情况下测试数码管的显示效果,如按键输入、传感器数据等。
(2)对程序进行优化和改进,提高程序的效率和稳定性。
(3)总结实验过程中的问题和解决方法,为今后的学习和实际工作提供参考。
四、实验结果及分析1.实验结果在实验过程中,我们成功地实现了对数码管的编程控制,使其能够根据不同的输入显示不同的数字或字符。
同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。
经过调试和改进,我们解决了这些问题,使数码管的显示效果更加理想。
2.结果分析通过本次实验,我们深入了解了数码管的工作原理和编程控制方法,掌握了单片机与数码管的接口技术。
同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。
这些问题的出现可能与硬件连接、编程控制等方面有关。
动态显示1.掌握LED数码管显示及其一般电路结构;2.掌握LED动态显示程序的一般设计方法。
一、实验内容动态显示,也称为扫描显示。
显示器由6个共阴极LED数码管构成。
单片机的P0口输出显示段码,由一片74LS245输出给LED管;由P1口输出位码,经74LS04输出给LED显示。
二、实验步骤1、打开Proteus ISIS编辑环境,按下表所列的元件清单添加元件。
图1 动态显示实验电路原理图2、按实验要求在KeilC中创建项目,编辑、编译程序。
3、将编译生成的目标码文件(后缀为.Hex)传入Proteus的实验电路中。
4、在Proteus ISIS仿真环境中运行程序,观察实验运行结果并记录。
三、实验要求1.编写一显示程序显示201071;2.显示特殊字符good;3.调整软件延时子程序的循环初值,逐渐加大每一位LED点亮的时间,观察程序运行结果。
四、参考程序dbuf equ 30h ;置存储区首址temp equ 40h ;置缓冲区首址org 00hmov 30h,#2 ;存入数据mov 31h,#0mov 32h,#1mov 33h,#0mov 34h,#7mov 35h,#1mov r0,#dbufmov r1,#tempmov r2,#6 ;六位显示器mov dptr,#segtab ;段码表首地址dp00: mov a,@r0 ;取要显示的数据movc a,@a+dptr ;查表取段码mov @r1,a ;段码暂存inc r1inc r0djnz r2,dp00disp0: mov r0,#temp ;显示子程序mov r1,#6 ;扫描6次mov r2,#01h ;从第一位开始dp01: mov a,@r0mov p0,a ;段码输出mov a,r2 ;取位码mov p1,a ;位码输出acall delay ;调用延时mov a,r2rl amov r2,ainc r0djnz r1,dp01sjmp disp0segtab: db 3fh,06h,5bh,4fh,66hdb 6dh,7dh,07h,7fh,6fhdelay: mov r4,#03h ;延时子程序aa1: mov r5,0ffhaa: djnz r5,aadjnz r4,aa1retend实验原理MCS-51单片机内设置了两个可编程的16位定时器T0和T1,通过编程,可以设定为定时器和外部计数方式。
第1篇一、实验目的1. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。
二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。
51单片机通过控制数码显示模块的段选和位选,实现数字的显示。
移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。
在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。
三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。
四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。
2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。
3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。
4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。
五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。
一、实验目的1. 了解数字显示器的基本原理和分类。
2. 掌握数字显示器的设计方法和应用。
3. 学会使用数码管和LCD显示器进行数字显示。
4. 提高动手实践能力和问题解决能力。
二、实验内容1. 数码管显示实验2. LCD显示器显示实验三、实验原理1. 数码管显示原理:数码管是一种半导体发光器件,由若干个发光二极管(LED)组成,每个LED代表一个数码管的笔画。
通过控制LED的亮灭,可以显示不同的数字和字符。
2. LCD显示器显示原理:LCD显示器是一种液晶显示器,通过液晶分子的旋转控制光的透过与阻挡,实现图像的显示。
LCD显示器主要由液晶面板、背光源、偏振片、驱动电路等组成。
四、实验步骤1. 数码管显示实验(1)搭建电路:将数码管与AT89C51单片机连接,连接方式包括共阴极和共阳极两种。
(2)编写程序:使用C语言编写程序,实现数码管显示数字和字符。
(3)调试程序:使用Keil软件对程序进行编译和调试,观察数码管显示效果。
2. LCD显示器显示实验(1)搭建电路:将LCD显示器与AT89C51单片机连接,连接方式包括并行和串行两种。
(2)编写程序:使用C语言编写程序,实现LCD显示器显示数字和字符。
(3)调试程序:使用Keil软件对程序进行编译和调试,观察LCD显示器显示效果。
五、实验结果与分析1. 数码管显示实验结果:通过编写程序,数码管能够显示数字和字符,实现了实验目的。
2. LCD显示器显示实验结果:通过编写程序,LCD显示器能够显示数字和字符,实现了实验目的。
3. 分析:(1)数码管显示实验:在实验过程中,发现数码管的共阴极和共阳极连接方式不同,需要根据实际连接方式编写程序。
此外,为了提高显示效果,需要对数码管进行动态扫描显示。
(2)LCD显示器显示实验:在实验过程中,发现LCD显示器的并行和串行连接方式不同,需要根据实际连接方式编写程序。
此外,为了提高显示效果,需要对LCD显示器进行初始化和设置显示模式。
单⽚机实验报告——LED数码管显⽰实验(此⽂档为word格式,下载后您可任意编辑修改!)《微机实验》报告LED数码管显⽰实验指导教师:专业班级:姓名:学号:联系⽅式:⼀、任务要求实验⽬的:理解LED七段数码管的显⽰控制原理,掌握数码管与MCU的接⼝技术,能够编写数码管显⽰驱动程序;熟悉接⼝程序调试⽅法。
实验内容:利⽤C8051F310单⽚机控制数码管显⽰器基本要求:利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
提⾼要求:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:yyyy (年份)mm.dd(⽉份.⽇).asm;Description: 利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
;Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000H ;复位⼊⼝AJMP MAINORG 000BH ;定时器0中断⼊⼝AJMP TIME0MAIN: ACALL Init_Device ;初始化配置MOV P0,#00H ;位选中第⼀个数码管MOV R0,#00H ;偏移指针初值CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#06HMOV TL0,#0C6H ;赋初值,定时1sLOOP: MOV A,R0ADD A,#0BH ;加偏移量MOVC +PC ;查表取,段码MOV P1,A ;段码给P1显⽰SETB TR0 ;开定时LOOP1: JNB PSW.1,LOOP1 ;等待中断CLR PSW.1INC R0 ;偏移指针加⼀CJNE R0,#0AH,LOOP3MOV R0,#00H ;偏移指针满10清零AJMP LOOP ;返回DB 0FCH,60H,0DAH,0F2H,66H ;段码数据表:0、1、2、3、4 DB 0B6H,0BEH,0E0H,0FEH,0F6H; 5、6、7、8、9 ;***************************************************************** ; 定时器0中断;***************************************************************** TIME0: SETB PSW.1 ;标志位置⼀MOV TH0,#06H ;定时器重新赋值MOV TL0,#0C6HLOOP3: CLR TR0 ;关定时RETI;***************************************************************** ;初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 -Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Unassigned, Open-Drain, Digital ; P1.2 - Unassigned, Open-Drain, Digital ; P1.3 - Unassigned, Open-Drain, Digital ; P1.4 - Unassigned, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Digital ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 -Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digital mov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend提⾼部分:;*********************************************************;Filename: shumaguan2.asm;Description:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:; 2012 (年份); 12.07(⽉份.⽇); 12.34(⼩时.分钟);Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000HAJMP MAINORG 000BHAJMP TIME0MAIN: ACALL Init_DeviceMOV R0,#00H ;⽤于位选MOV R1,#00H ;⽤于段选MOV R2,#22H ;置偏移量,⽤于控制模式MOV R4,#8MOV R5,#250CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#0FFHMOV TL0,#0C0H ;定时器赋初值1msBACK: MOV P0,R0 ;位选MOV A,R0ADD A,#40H ;选下⼀位MOV R0,AMOV A,R1ADD A,R2 ;加偏移量MOVC +PC ;查表取段码MOV P1,A ;段码给P1显⽰LOOP: SETB TR0 ;开定时HERE: JNB PSW.1,HERE ;等待中断CLR PSW.1DJNZ R5,BACKMOV R5,#250DJNZ R4,BACKMOV R4,#8 ;循环2000次(2s)MOV A,R2ADD A,#04H ;偏移量加04H,到下⼀模式段码初值地址 MOV R2,ACJNE R2,#2EH,LOOP2MOV R2,#22H ;加三次后偏移量回到初值LOOP2: AJMP BACK ;返回进⼊下⼀模式;段码数据表:DB 0DAH,60H,0FCH,0DAH ; 2102DB 0E0H,0FCH,61H,60H ; 701. 1DB 66H,0F2H,0DBH,60H ; 432. 1;*****************************************************************; 定时器0中断;***************************************************************** TIME0: MOV TH0,#0FFH MOV TL0,#0C0HCLR TR0SETB PSW.1INC R1 ;偏移指针加⼀CJNE R1,#04H,LOOPMOV R1,#00H ;偏移指针满04H清零RETI;***************************************************************** ; 初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital; P0.1 - Unassigned, Open-Drain, Digital; P0.2 - Unassigned, Open-Drain, Digital; P0.3 - Unassigned, Open-Drain, Digital; P0.4 - Unassigned, Open-Drain, Digital; P0.5 - Unassigned, Open-Drain, Digital; P0.6 - Unassigned, Open-Drain, Digital; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Open-Drain, Digital; P1.1 - Unassigned, Open-Drain, Digital; P1.2 - Unassigned, Open-Drain, Digital; P1.3 - Unassigned, Open-Drain, Digital; P1.4 - Unassigned, Open-Drain, Digital; P1.5 - Unassigned, Open-Drain, Digital; P1.6 - Unassigned, Open-Drain, Digital; P1.7 - Unassigned, Open-Drain, Digital; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital; P2.2 - Unassigned, Open-Drain, Digital; P2.3 - Unassigned, Open-Drain, Digitalmov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend六、程序测试⽅法与结果、软件性能分析软件调试总体截图:基础部分:软件运⾏时,我们发现P0端⼝为00H,P1端⼝以依次为FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H。
51单片机矩阵键盘控制数码管显示过程中出现的问题及解决方法在使用51单片机控制矩阵键盘同时驱动数码管显示的过程中,可能会遇到一些常见的问题。
以下是一些可能的问题及相应的解决方法:按键无法正常响应:* 问题可能原因:接线错误、按键损坏、软件扫描不到按键信号。
* 解决方法:检查按键连接是否正确,确保按键没有损坏。
在软件中进行适当的按键扫描,确保能够正确检测到按键的状态。
数码管显示异常或不亮:* 问题可能原因:数码管接线问题、数码管损坏、数码管驱动程序错误。
* 解决方法:仔细检查数码管的接线是否正确,确保数码管没有损坏。
检查数码管的驱动程序,确保它按照正确的顺序和时序进行驱动。
按键重复响应或漏按现象:* 问题可能原因:按键抖动、软件扫描速度过快。
* 解决方法:在软件中增加适当的按键抖动延时,确保在按键按下或抬起时只响应一次。
调整软件扫描速度,避免扫描间隔过短导致的重复响应。
矩阵键盘的多个按键同时按下导致混乱:* 问题可能原因:矩阵键盘硬件连接错误、软件扫描算法问题。
* 解决方法:检查矩阵键盘的硬件连接,确保矩阵行和列没有短路或断路。
调整软件扫描算法,确保同时按下多个按键时能够正确识别。
数码管显示不正常的数字或乱码:* 问题可能原因:程序错误、数码管接线错误。
* 解决方法:仔细检查程序,确保数码管段选和位选的控制逻辑正确。
检查数码管的接线,确保每个数码管的连接都正确。
在解决问题时,建议逐步排除可能的原因,通过调试工具、逻辑分析仪或输出调试信息的方式来定位问题。
另外,仔细查阅51单片机的数据手册和相关文档,以确保硬件连接和软件设计都符合标准。
XXXX学院实验报告Experimentation Report of Taiyuan Normal University系部计算机年级大三课程单片机原理与接口技术姓名同组者日期学号项目数码管显示温度一、实验目的1、了解单片机顺序执行的特点;2、掌握C语言的编写和keilc51的使用;3、熟悉DS18B20温度传感器的使用。
二、实验仪器硬件资源:单片机开发板笔记本电脑;软件资源:软件 Keil uVision5;三、实验原理1、流程图2、连接图四、实验结果数码管显示当前温度,用手握住温度传感器,数码管显示的温度值变大。
四、实验代码及分析//主函数void main(){while(1){LcdDisplay(Ds18b20ReadTemp()); //显示读取到的温度值}}void LcdDisplay(int temp) //lcd显示{float tp;if(temp< 0) //当温度值为负数{DisplayData[0] = 0x40; //因为读取的温度是实际温度的补码,所以减1,再取反求出原码temp=temp-1;temp=~temp;tp=temp;temp=tp*0.0625*100+0.5; //留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点后面的数自动去掉,//不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5 //的就算加上0.5,还是在小数点后面。
}else{DisplayData[0] = 0x00;tp=temp; //因为数据处理有小数点所以将温度赋给一个浮点型变量//如果温度是正的那么,那么正数的原码就是补码它本身temp=tp*0.0625*100+0.5;//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换//为整型的时候把小数点后面的数自动去掉,不管是否大于0.5,而+0.5之//后大于0.5的就是进1了,小于0.5的就算加上0.5,还是在小数点后面。
51单片机液晶显示原理单片机液晶显示原理是指通过单片机控制液晶屏显示图像、文字等信息的工作原理。
液晶(Liquid Crystal,简称LC)是一种特殊的材料,具有介于液体与晶体之间的特性,在电场的作用下可以改变其透光性。
单片机液晶显示原理主要包括液晶材料、液晶显示模式、液晶驱动电路以及单片机控制等几个方面。
下面将详细介绍单片机液晶显示原理。
首先,液晶材料是实现液晶显示的重要组成部分。
液晶分为有机液晶和无机液晶两种类型,其中有机液晶是最常用的液晶材料。
有机液晶分为向列型(TN)液晶和垂直向列型(VA)液晶两种。
TN液晶是最简单、最常用的液晶材料,它的分子在没有外部电场作用时呈现任意方向排列,外加电场后液晶分子会发生旋转,从而改变其透光性。
VA液晶则是在TN液晶基础上改进而来,其液晶分子在没有外部电场作用时呈现垂直排列,外加电场后液晶分子不再旋转,而是倾斜,从而改变其透光性。
液晶材料的选择与所需显示的效果密切相关,不同的液晶材料具有不同的特性,可用于不同的显示需求。
其次,液晶显示模式是单片机液晶显示原理的重要组成部分。
常见的液晶显示模式有七段数码管、十六段数码管、点阵图形LCD等。
七段数码管是指由七个线条组成的数字显示器件,可显示0-9十个数字以及一些字母、符号等。
十六段数码管在七段数码管的基础上增加了一些额外的线条,可以显示更多的字母、符号以及中文汉字等。
点阵图形LCD是指由多个像素点组成的液晶屏,通过点亮或熄灭不同的像素点来显示各种图像、文字等信息。
液晶显示模式的选择与具体应用场景以及用户需求相关,不同的液晶显示模式具有不同的显示效果和功能。
第三,液晶驱动电路是实现液晶显示的关键。
液晶驱动电路主要包括行扫描驱动电路和列驱动电路。
行扫描驱动电路根据液晶显示屏所需的行数量,将每一行按照一定的电压顺序依次选通,行扫描驱动电路的输出信号和行扫描信号交替变化,使得液晶屏上的像素点一行一行地被选中。
列驱动电路负责控制每一行中的像素点的状态,通过给每一行驱动电路一个适当的电压,使得像素点出现白色或黑色的状态。
一、实验目的1.掌握Keil软件的基本使用2.学习和掌握C语言编写程序的一般格式3.了解数码管与单片机的接口方法;4.了解数码管性能及动态显示编程方法;5.了解并掌握单片机系统中定时器中断控制的基本方法;二、实验内容用定时器中断实现四位数码管动态显示从1234-9999。
三、实验原理3.1基础知识介绍A.数码管是LED的升级,每位数码管里面继承了8个LED,点亮数码管就是点亮数码管里面的LED。
要在数码管上面显示相应的值,就是点亮不同位置的LED。
数码管有共阴和共阳两种,共阴数码管公共端是所有LED的负极连接在一起,相反共阳数码管公共端是所有LED的正极连接在一起。
一般公共端称作“位选”,控制每一个LED的称为“段选”。
数码管主要是利用视觉暂留的效果,通过快速循环点亮数码管方式,将数据呈现出来。
数码管如图1.2所示1.2数码管1.3数码管实物图/B.定时器定时器也可看作是对计算机机器周期的计数器。
因为每个机器周期包含12个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号。
故其频率为晶振频率的1/12。
如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间刚好为1μs。
定时器有两种工作模式,分别为计数模式和定时模式。
对Px,y 的输入脉冲进行计数为计数模式。
定时模式,则是对MCU的主时钟经过12分频后计数。
因为主时钟是相对稳定的,所以可以通过计数值推算出计数所经过的时间。
计数器的计数值存放于特殊功能寄存器中。
T0(TL0-0x8A, TH0-0x8C), T1(TL1-0x8B, TH1-0x8D)定时器工作原理如下图由上图可见与定时器相关的寄存器主要有下面这几个:TMOD、TCON、TL0、TH0、TL1、TH1。
下面介绍一下这几个寄存器16位加法计数器:是定时计数器的核心,其中TL0、TH0、是定时计数器0的底八位和高八位;TL1、TH1是定时计数器1的底八位和高八位;并且高八位和底八位可单独使用。
数码管静态显示实验,单片机实验报告数码管静态显示实验一.实验目的 1.熟悉数码管的功能和使用。
2.熟悉延时子程序的编写和使用。
3.初步熟悉单片机软硬件设计方法。
二.实验仪器计算机、Keil 编程环境、普中下载软件、单片机开发实验仪。
三.实验原理与内容P0 口做输出口,接一个共阳极数码管,要求循环显示。
共阳极数码管字形表(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,-共17 个字形码)0C0H,0FCH,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0 A1H,86H,8EH,0BFH。
四 . 实验线路及原理五 . 注意事项1.安装实验仪时,先接通讯串口线,再开电源开关。
2.实验过程中,在进行接插线操作时,必须先关闭电源。
六 . 实验步骤1、主机连线说明:JP10 单片机0 P0 口(8 8 位)JP3 共阳极数码管七 . 实验步骤2.打开 Keil 编程软件编写程序,并进行汇编产生HEX 文件。
(1)流程图(2)汇编源程序ORG 00H LJMP MAIN ;初始位置直接跳转MAIN 主程序START; MOV R2,#0 ;赋值R2=0 MOV R5,#17;赋值 R5=17 MAIN: MOV DPTR,#TAB;将 TAB 地址传送给数据指针MOV A,R2 ;赋值累加器 A=0 MOVC A,@A+DPTR;将数组第 A+1 的数据赋值 A MOV P0,A ;赋值 P0 数据的数据INC R2 ;R2 加一LCALL DELAY ;调用延时子程序DJNZ R5,MAIN ;R5 减一不为0 跳转主程序MAIN JMP START ;跳转 START RET DELAY: MOV R0,#5 ;延时子程序DL2: MOV R7,#200 DL1: MOV R6,#250DJNZ R6,$ DJNZ R7,DL1 DJNZ R0,DL2 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0 A1H,86H,8EH, END (1) C 语言源程序#include #define uint unsigned int Uint table [ ]= (0xC0,0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E, 0xBF )Void delay (int z) { int x,y; for (x=z;x>0;x--) for (y=100;y>0;i++) } Void main ( ) {int i ;While (1) {for (i=0;i<17;i++) { P0=table [i]; delay (1000) // 延时 } } } 3.点击普中下载软件,检查设置是否正确,然后下载到实验仪的单片机中。
用单片机IO口直接驱动段式LCD的方法用IO口驱动段式LED(数码管)的方法相信大家比较清楚,但用IO口直接驱动段式LCD的方法相对复杂一些。
在网上搜了一下单片机IO口驱动段式LCD的方法,大部分资料讲得不够清晰、具体,而且简单问题复杂化。
后来查了LCD的显示原理,结合网上的相关介绍,发现IO口直接驱动段式LCD原理比较简单,用几句话就可以描述清楚:和LED的显示原理不一样:LED是加正向电压发光,而LCD必须交替加正、反向电压才会持续显示(可以做个实验,如果把恒定电压加到LCD的一段上,该段会显示一下,但马上不能显示,而且长时间加恒定电压,会加速LCD的老化和损坏)2.常听说1/2bias,1/3bias LCD,是什么意思呢对于1/2bias LCD,假如LCD的显示电压是3V,则1/2bias是,也就是说在±3V电压作用时,LCD有显示;±及以下的电压作用时没有显示3.普通单片机IO口不能直接输出半高电平(),但可以用相等的上下拉电阻实现,当IO口设置为输入(高阻)时,由于上下拉电阻的分压作用,则产生一个半高电平()知道了以上3点后,动态驱动LCD就不是难事了,对于4*8段的LCD(4个COM,8个SEG,显示电压为3V,1/2bias),驱动方法如下:1、四个COM采用交替扫描的方式,每个COM在相邻两次扫描时又进行电压交变的方式。
2、若扫描到某一个COM时,该COM输出3V(0V):与该COM相连的SEG输出与COM相反,ΔV=±3V,则该相连点亮;与该COM相连的SEG输出与COM相同,ΔV=0,则该相连点不亮。
3、其他没有扫描到的COM,单片机IO口为输入,从而产生1/2 bias(),不管SEG为何值,ΔV<±,故该点不亮。
本人用4*8段的LCD自制了一个数字钟表,验证了以上方法的可行性,现把制作过程罗列如下1.原理图说明:由于管脚不够用,所以时钟芯片DS1302的RST和LCD的一个SEG是复用的,只要在这个SEG无效的时候去读取时间就可以了,另外,3PIN串口是ISP 下载程序用的。
8051单片机——数码显示器的动态显示方法
为了节省单片机的I/O口线,常采用动态扫描方式来作为LED数码管的接口电路。
在实际的工程应用中,它是使用最为广泛的一种显示方式,其接口电路是把所有显示器的8个笔划段h-a同名端连在一起,而每一个显示器的公共极COM端与各自独立的I/O口连接。
当CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O口控制的,所以我们就可以自行决定何时显示哪一位了。
而所谓动态扫描就是指我们采用分时的方法,一位一位地轮流控制各个显示器的COM 端,使各个显示器每隔一段时间点亮一次。
在轮流点亮的扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms 左右),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感
电路原理
显示‘8051’的源程序ORG00H
START:
SETB P0.0
MOV P2,#80H
LCALL DELAY
CLR P0.0
SETB P0.1
MOV P2,#0C0H
LCALL DELAY
CLR P0.1
SETB P0.2
MOV P2,#92H
LCALL DELAY
CLR P0.2
SETB P0.3
MOV P2,#0F9H
LCALL DELAY
CLR P0.3
AJMP START DELAY:
MOV R1,#5
D2:MOV R2,#100
DJNZ R2,$
DJNZ R1,D2
RET
end。