湖北大学 单片机实验7 汉字显示系统设计

实验目的:

学会使用LED点阵,通过编程显示不同内容

实验器材:

Keil、protues

实验原理(给出硬件电路图):

实验步骤:

  1. 实验原理

1.1 8*8点阵

8*8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;如要将第一个点点亮,则1脚接高电平a脚接低电平,则第一个点就亮了;

 

1.2 取模软件

1.2.1新建图像

1.2.2 画汉字

1.2.3生成字模 

1.3 74LS245芯片

74LS245常用来驱动LED或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。

1.4 关于8*8点阵需要注意的问题

判断按键按下操作。有时按下按键,点阵就显示一下,又灭了,这可能就是没有对按键按下进行判断。在使用按键时,只有当我们按下按键时才会把键值返回,在没按的期间,返回的值是初始化的值。也就是说,返回的键值没有保存下来,只会在你按下的时候显示一次键值,没按的时候显示的是初始的值。

程序代码及实验结果(含汇编语言代码和C语言代码):

#include <regx51.h>

unsigned int wei[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 		//扫描8位,八个数字分别对应着第一行、第二行....
unsigned int duan[2][8]={{0x00,0x00,0x3E,0x08,0x7F,0x14,0x22,0x41},//“天”的字模
                        {0x7E,0x08,0x08,0x5D,0x22,0x41,0x7F,0x08}};//“空”的字模


void delayms(unsigned int m)   // 延时子程序
{
 	int i,j;
	for(i=0;i<m; i++)
		for(j=0; j<120; j++);
}
  
void main(void)
{	
	int i,j,k;																		
	while(1)//死循环,让两个汉字循环出现
 { for(i=0;i<2;i++) //第一个循环是选择不同的汉字
	{for(k=0;k<100;k++)//第二个循环是让汉字停留时间长一点
		{
		for(j=0; j<8; j++)	   //第三个循环是显示汉字
		 {
			P0 = wei[j];		 //先发送位码
			P3 = duan[i][j];	  //再发送断码
			delayms(2);
			P3=0x00;//给P3低电平,关闭LED灯
		 }
	   }
	  }
  }
}
ORG 0000H
SJMP START
ORG 0030H
START:
MOV DPTR,#TAB ;给DPTR赋值汉字编码的表的首地址
MOV R2,#7FH               ;R2=0111 1111,第一行给低电平,选择了第一行
;R3是显示不同的汉字
L0:MOV R3,#0 
;R5是让汉字停留的时间长一点
L1:MOV R5,#100
;R4是让单个汉字显示
L2:MOV R4,#0

L3:MOV A,R3
ADD A,R4  ;A赋值为R3+R4
LCALL DIS                  ;调用LED对应的第N行编码,CALL跳转了之后可以返回到这个地方
L4:INC R4    ;R4+1                 
CJNE R4,#8,L3   ;若第一个汉字已经循环完,则可以顺序显示第二个汉字
                ;若第一个汉字还没显示完,则跳转到L3,继续显示第一个汉字
DJNZ R5,L2                ;重复询问第一个数组,使显示汉字能停一会
;R3加1次8即访问第二行数
MOV A,R3
ADD A,#8                  ;从下一行第一个开始
MOV R3,A

CJNE R3,#16,L2          ;若R3不等于16,则表示第二个汉字没有访问完,跳转到L1
SJMP START
DIS:
MOVC A,@A+DPTR ;此时A表示表的地址,A=R3+R4
MOV P3,A ;将表的地址赋值给P3
MOV P0,R2 ;R2=7FH
MOV A,R2
RR A;右移7FH,依次得到0xbe,0xdf,0xef,0xf7,0xfb,0xfd,0xfe
MOV R2,A ;将右移得到的值赋值给R2

Delay:
MOV R7,#0FFH
D1:DJNZ R7,D1
MOV P3,#0
RET
TAB:
    DB 00H,00H,3EH,08H,7FH,14H,22H,41H              ;"天"的汉字编码
    DB 08H,7FH,41H,22H,5DH,08H,08H,7EH ;“空”的汉字编码
    	
END

 

 

 

 

 

 

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值