




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机实验报告 实验九 七段数码管显示实验1、 实验目的1 学习七段数码管的工作原理;2 学习数码管与8051单片机的接口方法;3 掌握动态扫描显示技术。2、 实验原理图4.9-1共阴极接法共阳极接法如图4.9-1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。LED数码管中的发光二极管共有两种连接方法:1) 共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。实验中使用的LED显示器为共阴极接法2) 共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。因此提供给LED显示器的字形代码正好一个字节。若a、b、c、d、e、f、g、dp 8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则用共阴极LED数码管显示十六进制数时所需的字形代码如表4.9-1所示。表4.9-1 共阴极LED数码管字形代码字型共阴极字形代码字型共阴极字形代码字型共阴极字形代码03FH67DHC39H106H707Hd5EH25BH87FHE79H34FH96FHF71H466HA77H灭00H56DHb7CH*实际上试验中使用的是共阳极数码管,这里就不一一列出。2、动态显示按图4.9-2(b)连接线路,通过交替选中LED1和LED0循环显示两位十进制数。七段数码管段码连接不变,位码驱动输入端S1、S0接8255A C口的PC1、PC0,通过C口的这两位交替输出1和0,以便交替选中LED1和LED0,从而实现两位十进制数的交替显示。请编程实现在两个LED数码管上循环显示0099,程序流程图如图4.9-3(b)所示。(a) 静态显示程序流程图(b) 动态显示程序流程图图4.9-3十位数的段码至A口个位数的段码至A口开始开始返回DOS返回DOS延时并修改要显示的数字3、 实验电路图第一部分电路图:第二部分电路图:4、 实验设备微型计算机、单片机仿真器、实验仪、示波器(各一台);实验连线(若干)。5、 实验内容*由于汇编语言程序中已经做了相应的注释,C语言的编程原理与之相同处不再做重复注释,仅作个别注释,请见谅。1 编程在8位数码管上面显示“12345678”8个数字,每经过1秒8个数字循环左移一位显示。依次为:1234578、23456781、34567812.汇编语言程序代码:ORG0000HSTART:MOVR4,#00HFLASH:MOVR2,#01HMOVR0,#30HMOVDPTR,#TABFLA;把字形表首地址给外部寻址寄存器LOPFLA:MOVA,R2;输出位型MOVP2,AMOVA,R0MOVCA,A+DPTR ;在程序段中查表得到字形MOVP1,A;输出字形MOVR3,#0DJNZR3,$ ;循环等待延时MOVP1,#0FFH;关显示MOVA,R2;位型左移一位RLAMOVR2,AINCR0;下一个字形CJNER0,#38H,GOONMOVR0,#30HGOON:CJNEA,#01H,LOPFLA;若已经显示一遍则初始化INCR4CJNER4,#7FH,GOON1MOVA,30H;显示表左移更新MOV30H,31HMOV31H,32HMOV32H,33HMOV33H,34HMOV34H,35HMOV35H,36HMOV36H,37HMOV37H,AMOVR4,#00HGOON1:AJMPFLASHTABFLA:;字形表DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90H,88HDB 83H,0C6H,0A1H,86H,8EHENDC语言程序代码:#includedata unsigned char disadd _at_ 0x30;const unsigned char LED_TAB=0xC0,0xF9,0xA4,0xB0,0x99,0x92, 0x82,0xF8,0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x8E;data unsigned char j;void delay()unsigned char i=0xFF;while(i-);void change_s()unsigned char *k;unsigned char m;k=&disadd;m=*k;/显示表移位*k=*(k+1);*(k+1)=*(k+2);*(k+2)=*(k+3);*(k+3)=*(k+4);*(k+4)=*(k+5);*(k+5)=*(k+6);*(k+6)=*(k+7);*(k+7)=m;j=0x00;/计数值初始化main()unsigned char i;unsigned char disbit;unsigned char *disnum,*n;SP=0x40;j=0x00;n=&disadd;*(n)=0x01;/显示设置初值为18*(n+1)=0x02;*(n+2)=0x03;*(n+3)=0x04;*(n+4)=0x05;*(n+5)=0x06;*(n+6)=0x07;*(n+7)=0x08;while(1)disbit=0x01;disnum=&disadd;for(i=0;i8;i+)P2=0x00;P1=LED_TAB*disnum;P2=disbit;delay();disbit=disbit1;disnum+;j+;if(j=0x3f)change_s();/调用显示表移位子程序2 用8255的PA口作为段码输出口,编写程序,利用定时器T0作为时间基准控制电子钟走时,电子钟的格式为:XXXXXX分钟秒钟百分秒汇编语言程序代码:COM_ADDXDATA0F003HPA_ADDXDATA0F000HPB_ADDXDATA0F001HPC_ADDXDATA0F002HORG0000HAJMPSTARTORG000BHAJMPT0INTORG0030HSTART:MOV SP,#60H;设置堆栈MOVTMOD,#01H;设置定时器T0的控制字MOVTH0,#0F0H;设置定时器计数初值MOVTL0,#07FHMOVR7,#00H;显示寄存器置初值MOVR6,#00HMOVR5,#00HMOVR4,#00HMOVR3,#00HMOVR2,#00HMOV32H,#16;设置显示分隔符MOV35H,#16SETBET0;允许中断(T0内部中断)SETBEASETBTR0;开始计数CONTINUE:MOV37H,R7;进位判断,R7表示百分之一秒(之后的以此类推)MOV36H,R6CJNER6,#0AH,NOREACHMOVR6,#00HMOV36H,R6INCR5MOV34H,R5CJNER5,#0AH,NOREACHMOVR5,#00HMOV34H,R5INCR4MOV33H,R4CJNER4,#06H,NOREACHMOVR4,#00HMOV33H,R4INCR3MOV31H,R3CJNER3,#0AH,NOREACHMOVR3,#00HMOV31H,R3INCR2MOV30H,R2CJNER2,#06H,NOREACHMOVR2,#00HMOV30H,R2NOREACH:ACALLDISPLAY;调用显示子程序AJMPCONTINUE;中断子程序T0INT:INCR7;R7表示百分之一秒(之后的以此类推)CJNER7,#0AH,NOREACH_SMOVR7,#00HINCR6NOREACH_S:MOVTH0,#0F0H;计数完一次后再次置计数初值MOVTL0,#07FHRETI;数码管显示子程序DISPLAY:MOVR1,#01H;位型输出指针MOVR0,#30HMOVDPTR,#COM_ADDMOVA,#80HMOVXDPTR,ALOPFLA:MOVDPTR,#PB_ADDMOVA,R1MOVXDPTR,AMOVDPTR,#TABFLAMOVA,R0MOVCA,A+DPTR;在程序段中查表得到字形MOVDPTR,#PA_ADDMOVXDPTR,AMOVA,#00HWAIT:DECACJNEA,#00H,WAIT ;等待延时MOVDPTR,#PA_ADDMOVA,#0FFHMOVXDPTR,A;关显示MOVA,R1;位型左移一位RLAMOVR1,AINCR0;下一个字形CJNEA,#01H,LOPFLA;若已经显示一遍则初始化RETTABFLA:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90H,88HDB 83H,0C6H,0A1H,86H,8EHDB 0BFHENDC语言程序代码:#include#defineTIMEINT0x01#defineTIMEH0xf0#defineTIMEL0x7fxdata unsigned char con_address _at_ 0xf003;xdata unsigned char pa _at_ 0xf000;xdata unsigned char pb _at_ 0xf001;xdata unsigned char pc _at_ 0xf002;data unsigned char disadd _at_ 0x30;const unsigned char LED_TAB=0xC0,0xF9,0xA4,0xB0,0x99,0x92, 0x82,0xF8,0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x8E,0xBF;data unsigned char r2,r3,r4,r5,r6,r7;/显示变量设置为全局变量void delay()unsigned char i=0xFF;while(i-);void timer0(void) interrupt 1 using 1/中断子程序r7+;if(r7=0x0A)r7=0x00;r6+;TH0=TIMEH;TL0=TIMEL;void display()/显示子程序unsigned char i;unsigned char disbit;unsigned char *disnum;disbit=0x01;disnum=&disadd;for(i=0;i8;i+)pb=0x00;pa=LED_TAB*disnum;pb=disbit;delay();disbit=disbit1;disnum+;main()unsigned char *n;SP=0x40;con_address=0x80;TMOD=TIMEINT;TH0=TIMEH;TL0=TIMEL;n=&disadd;r7=0x00;r6=0x00;r5=0x00;r4=0x00;r3=0x00;r2=0x00;*(n+2)=16;*(n+5)=16;ET0=1;EA=1;TR0=1;while(1)*(n+7)=r7;/显示进位判断*(n+6)=r6;if(r6=0x0A)r6=0x00;*(n+6)=r6;r5+;*(n+4)=r5;if(r5=0x0A)r5=0x00;*(n+4)=r5;r4+;*(n+3)=r4;if(r4=0x06)r4=0x00;*(n+3)=r4;r3+;*(n+1)=r3;if(r3=0x0A)r3=0x00;*(n+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年应急物流行业当前市场规模及未来五到十年发展趋势报告
- 收入费用与利润的课件
- 2025年注册安全工程师考试金属冶炼(中级)安全生产专业实务试卷及答案指导
- 2025年全国大学生525心理知识竞赛题库及答案
- 2024年特岗教师招聘考试题库(含答案)
- 2025商用厨具厨房设备模拟试题考题及答案
- 撞车后安全知识培训课件
- 2024年高级汽车美容保养及装潢工技术知识考试题库与答案
- 2025年《组织胚胎学》理论知识试题与答案
- 2025年事业单位教师考试公共基础知识试题(附答案)
- 子宫内膜类器官构建与临床转化专家共识解读 2
- 2025年甘肃省高考历史试卷真题(含答案解析)
- ESD手术常见并发症
- 普通话驾驶员培训课件
- 涂装(电泳)废水操作说明书
- 2025年黑龙江省高考地理试卷(含答案)
- 项目完工协议书
- 股东退股结算协议书
- 门安装合同协议书
- 《绿色建筑与可持续发展》课件
- 麻醉专业知识理论培训试题题库及答案
评论
0/150
提交评论