单片机C语言课件.ppt_第1页
单片机C语言课件.ppt_第2页
单片机C语言课件.ppt_第3页
单片机C语言课件.ppt_第4页
单片机C语言课件.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、徐州建筑职业技术学院,知识目标: 1.理解点阵的工作原理 2.理解点阵的扫描法显示原理 3.掌握点阵的编程方法 技能目标: 1.区分点阵的共阴、共阳 2.正确理解点阵的行、列 3.掌握单片机与点阵的连接,徐州建筑职业技术学院,几点说明: 1.数码管的动态显示(书上147页) (1)若干个数码管的段端接一起,通过单片机的I/O口控制数码管的位选端,实现若干个数码管轮流显示 (2)单片机的1个I/O口带着若干个数码管,电流小,所以数码管亮度低。所以要加驱动(加三极管、驱动器),增加亮度。 共阳数码管:需要高电平,加PNP三极管 共阴数码管:需要低电平,加NPN三极管 (3)延时时间合理设置;过长或

2、过慢都不行。 2.LCD编程步骤 (1)LCD初始化 (MOV P1,#01H LCALL ENABLE) (2)设定第一行地址 (MOV P1,#80H LCALL ENABLE) (3)写入(显示)第一行字符 (写字符串方法:MOV DPTR,#TAB LCALL WRITE1) (4)设定第二行地址 (MOV P1,#0C0H LCALL ENABLE) (5)写入(显示)第二行字符 (同第一行显示方法)或(写单个字符:ASCII码送入A,LCALL WRITE2) LCD的子程序记住,使用时只需调用即可 3.计算器程序,徐州建筑职业技术学院,徐州建筑职业技术学院,LED点阵,徐州建筑职

3、业技术学院,1.点阵结构(以8*8为例),8X8点阵共由64个发光二极管按照8行8列排列成矩阵形式,且每个发光二极管是放置在行线和列线的交叉点上(类似矩阵式按键),引脚:16根(8行8列),字母为行引脚,数字为列引脚。一般需要自己用万用表检测(如何测?) 双色点阵;24根(16行8列),徐州建筑职业技术学院,(1).共阴(对行而言),例如型号为JM-M1088A,2.点阵分类,徐州建筑职业技术学院,(2).共阳(对行而言),例如型号为JM-M1088B,有时也不做区分,旋转即可,徐州建筑职业技术学院,3 点阵原理 以共阳为例,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;如要将第

4、一个点点亮,则9脚接高电平13脚接低电平,则第一个点就亮了;如果要将第一行点亮,则第9脚要接高电平,而(13、3、4、10、6、11、15、16)这些引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第13脚接低电平,而(9、14、8、12、1、7、2、5)接高电平,那么第一列就会点亮。 共阴呢?,徐州建筑职业技术学院,4.显示方式,点阵LED一般采用扫描式显示,实际运用分为三种方式: (1)点扫描(逐点显示); (2)行扫描(逐行显示) ; (3)列扫描(逐列显示); 若使用第一种方式,其扫描频率必须大于1664=1024Hz,周期小于1ms即可。 若使用第二和第三种方式,则频率必须大于

5、168=128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。,徐州建筑职业技术学院,5.举例 例:使用一块8X8的LED点阵来显示一个心型 1.那么如何点亮一个点? 首先调出一个88点阵,在点阵的管脚上接上 VCC,另一端的管脚就接GND,运行仿真,看看 点阵是不是能亮,亮了哪几个点,如果不亮就调换 VCC和GND,这样测出点阵的行和列,共阴或共阳 等引脚信息。,从图3判别出上面为行,下面为列,为共阴点阵。 要想显示如图所示的亮点:则上面对应的行为低电平,对应的列为高电平(此时8个列值 00100000,和第二

6、行8个点亮灭情况一致)。,所以我们可以通过某一行8个等的亮灭状态从而得到显示时所需的列值,徐州建筑职业技术学院,2.采用动态显示(行扫描法,逐行显示) 以共阴点阵为例 先显示第一行,8个灯亮灭情况为00100100,则此时需送进去的列值也为00100100(即24H),延时; 再第二行, 8个灯亮灭情况为01011010,则此时需送进去的列值为01011010 (5AH),再延时; 依次类推,第三行:42H; 第四行:42H; 第五行:42H; 第六行:24H; 第七行:18H; 第八行:00H,总结:采用共阴点阵,行扫描法显示,8行对应的列值分别为:24H,5AH,42H,42H,42H,2

7、4H,18H,00H(该值也叫做编码) 3.如何得到其他字符的编码? ( 1).自己在纸上画 (2).利用软件生成(PCtoLCD2002,字模生成软件),徐州建筑职业技术学院,4.设计电路: (1).如何给行扫信号。 (共阴点阵,行扫法,需要显示哪一行,哪一行的行线为低电平有效信号) 8行,为了节省单片机的I/O口,用3-8译码器,逐个选择每一行,徐州建筑职业技术学院,(2).如何给不同的列线值(编码)? 通过单片机的I/O口传送。把8个列值存入表格,利用查表指令,逐个查出列值送给单片机的I/O口。 为了增加单片机I/O口的驱动能力,可以使用三极管4148、4007、3904、3906、80

8、50、8550、9012、9013或驱动芯片74HC245,74HC574。,74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器或驱动器,可双向传输数据 当片选端/CE为低电平有效时, AB/BA=“0”,信号由 B 向 A 传输; AB/BA=“1”,信号由 A 向 B 传输;,徐州建筑职业技术学院,(或者加三极管)共阴数码管 共阳数码管 8050 8550,(3).延时 看电路图,徐州建筑职业技术学院,徐州建筑职业技术学院,编程: org 0000h ljmp st org 0030h st:mov 20h,#00h mov dptr,#tab l

9、n3:mov r6,#08h mov r4,#00h mov r0,20h ln4:mov a,r4 mov p1,a inc r4 mov a,r0 movc a,a+dptr mov p2,a inc r0 lcall delay djnz r6,ln4 ljmp st,徐州建筑职业技术学院,delay:mov r3,#02h ln5:mov r5,#0f8h djnz r5,$ djnz r3,ln5 ret tab:db 24H,5AH,42H,42H,42H,24H,18H,00H end 仿真 只需更改tab表格中的列值,就可以显示其他图形或字符。,徐州建筑职业技术学院,6.显示汉

10、字原理( 16*16点阵) 我们把显示器的每一个点理解为一个像素,那么8*8点阵只能显示64像素范围以内的任何图形和字符。如果想显示更大像素的图形,怎么办? 组合 一般我们使用点阵显示汉字是用的16*16的点阵宋体字库,所谓16*16,是每一个汉字在行、列各16点的区域内显示的。也就是说得用四个8*8点阵组合成一个16*16的点阵。 组合后仍然采用逐行或逐列显示(16行16列),即动态显示。逐行(或逐列)显示第一行(第一列),延时;第二行(第二列)显示,延时;,以此类推。只要每行(每列)数据显示时间间隔够短,利用人眼的视觉暂停作用,你就能看到稳定的汉字显示。 如何得到汉字的编码呢?,徐州建筑职

11、业技术学院,如上图所示,用16*16要显示“你”则相应的点就要点亮 逐行显示:(行扫描线,列数据线) 要显示“你”字的话,要把它的位代码信息作为对应列的值。 第一行显示:16列依次送0000100010000000,即08H,80H ; 第二行显示:16列依次送0000100010000000,即08H,80H ; 利用人眼的视觉暂停作用,这样送16次数据扫描完16行后就会看到一个“你”字;,徐州建筑职业技术学院,7. 16*16的点阵的构成,(1)16*16点阵,由4个8*8点阵组成,如何连接? 两两行行相连,两两列列相连。 注意新的16*16点阵的行列高低顺序 16行:ROW0-ROW15

12、 16列:HIG0-HIG7(高8位列) LOW0-LOW7(低8位列),徐州建筑职业技术学院,(2)单片机的I/O口作为行列线够用吗? 以逐行显示为例:(行为扫描线,列线输入数据),需要引脚众多,共32根线,单片机为了节省线,所以采用译码器或移位寄存器等(例如74LS154,74HC595,74LS164等)来扩展I/O线。 4-16线译码器 E1=E2=0,时,可译码低电平输出,徐州建筑职业技术学院,例: 用4个8*8点阵组合成16*16点阵循环显示“信息”两个字。,显示”信”,再显示”息”,然后循环,徐州建筑职业技术学院,显示”信”:逐行显示 第一个点阵: 第二个点阵: 第一行输入列值0

13、0001000(08H) 第一行输入列值100000000(80H) 第二行输入列值00001100(0CH) 第二行输入列值01100000(60H) 第三行:18H 第三行:40H 第四行:17H 第四行:FEH 第五行:30H 第五行:00H 第六行:33H 第六行:F8H 第七行:50H 第七行:00H 第八行:93H 第八行:F8H 第三个点阵: 八行列值为:10H,13H,12H,12H, (第九到十六行) 12H,13H,12H,00H 第四个点阵: 八行列值为:00H,F8H,08H,08H, (第九到十六行)08H,F8H,08H,00H 显示”息“ 同理可得”息“的编码,徐

14、州建筑职业技术学院,如何把编码送给对应的点阵的列? 通过查表指令,查得编码。然后再分别送给对应点阵的列 建立表格如下: tab:db 08h,80h,0ch,60h,18h,40h,17h,feh,30h,00h,33h,f8h,50h,00h,93h,f8h db 10h,00h,13h,0f8h,12h,08h,12h,08h,12h,08h,13h,0f8h,12h,08h,00h,00h ;”信“的编码 db 01h,00h,02h,00h,1fh,0f0h,10h,10h,1fh,0f0h,10h,10h,1fh,0f0h,10h,10h db1fh,0f0h,00h,00h,09h

15、,00h,28h,84h,28h,92h,68h,12h,07h,0f0h,00h,00h ;”息“的编码,徐州建筑职业技术学院,徐州建筑职业技术学院,编程: org 0000h ljmp st org 0030h st:mov 20h,#00h mov dptr,#tab ln2:mov r1,#0ffh ln3:mov r6,#10h mov r4,#00h mov r0,20h ln4:mov a,r4 mov p1,a inc r4 mov a,r0 movc a,a+dptr mov p3,a inc r0 mov a,r0 movc a,a+dptr mov p2,a inc r0 lcall delay mov p3,#0 mov p2,#0,徐州建筑职业技术学院,djnz r6,ln4 djnz r1,ln3 mov 20h,r0 cjne r0,#64,ln2 ljmp st Delay: mov r3,#01h ln5:mov r5,#0f8h djnz r5,$ djnz r3,ln5 ret tab:db08h,80h,0ch,60h,18h,40h,17h,feh,30h,00h,33h,f8h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论