8*8点阵实现心性图案

编程入门 行业动态 更新时间:2024-10-27 12:27:00

8*8点阵原理图:

上方的8个位置是由P0口控制,左侧的ROW是由75HC95芯片控制;

14口是数据输入端,每次只能输入一位,当11引脚为上升沿时将SER中的数据送入内部移位寄存器,当把八位数据送入内部移位寄存器中,可以令RCLK为上升沿,将八位数据从移位寄存器送入锁存器中。由这个芯片和P0口来进行动态扫描显示图形;

#include "reg51.h"			 //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>
typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;char code led_mod[]={0x0C,0x12,0x22,0x44,0x22,0x12,0x0C,0x00};	  //P0口段选值;
u8 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};		//从文字取模软件中取出的,每一列锁存器的值;
void delay(u16 i)
{while(i--);	
}
void Hc595SendByte(char dat)//发送八位数据;  只能是char类型具体见博客下面
{int a;SRCLK=0;RCLK=0;for(a=0;a<8;a++)  //取出数据的八位,高位先传送,低位后传送{SER=dat<<7;				   //取最高位dat/=2;							//舍去最高位,此高位变为最高位SRCLK=1;					//当SRCLK为上升沿时,移位寄存器向下移动一位,并存入一位新数据_nop_();					  //延时两个机器周期,保证数据移位成功_nop_();SRCLK=0;		 //为下一次的上升沿做准备;}RCLK=1;				//上升沿启动,移位寄存器的值将会被锁存到锁存器里,_nop_();		   //延时两个机器周期,保证数据传送成功_nop_();RCLK=0;				 //为下一次上升沿做准备
}
void main()
{
while(1)
{
int i;
for(i=0;i<8;i++)   //实现八列动态扫描的过程
{
P0=ledwei[i];	   //每次只实现一列的灯显示,只有一个引脚为0,其余的引脚都为1,
Hc595SendByte(led_mod[i]);					//
delay(100);					//延时,便于肉眼观察到现象;
Hc595SendByte(0x00);		 //	要进行消隐,因为距离下一个循环时间很短,如果不改变锁存器的话,这一次的锁存器的值会体现在下一个循环中,造成视觉影响;
_nop_();						//或者将发送数据写道PO取值之前,这样就不会造成视觉误差;
_nop_();
}
}
}

关于int类型和char类型的说明:
int类型是一个字节的存储单元,为十六数据,占二个字节,赋值0xff后,里面存储的就是0x00ff;


char类型占一个字节,赋值过0xff后里面存储的便是0xff,和int不同,int如果只赋值八个位,则前八位为零

更多推荐

点阵,心性,图案

本文发布于:2023-05-26 07:08:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/355165.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:点阵   心性   图案

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!