历史上的今天
今天是:2025年02月07日(星期五)
2020年02月07日 | 单片机8*8LED点阵—显示汉字实验
2020-02-07 来源:51hei
一、读懂代码
因为自身C语言基础比较差,所以决定先把代码看懂然后再在源代码的基础上修改写成自己的点阵显示。
自己对代码的简短理解都写成注释附在下面的源代码中了,有不对的地方请指正
实现现象:下载程序后点阵上显示数字0
注意事项:一定要将JOE短接片短接到GND端,如果不需要595后面的小灯点亮可以拔掉JP595短接片。
***************************************************************************************/
#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
#include typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit SRCLK=P3^6;//用SRCLK来表示P3口的第六位 sbit RCLK=P3^5;//用RCLK来表示P3口的第五位 sbit SER=P3^4;//用SER来表示P3口的第四位 //SRCLK、RCLK、SER都是下面程序用到的的芯片74hc595中的引脚的名称,想对芯片进一步了解的同学可以看一下代码后面附的链接 u8 ledduan[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}; u8 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //二极管点亮的的条件是对应行列分别为高低电平使得电流产生。 //对应本实验实验板即为列线为高电平,行线为低电平时二极管被点亮 //第一行代码控制哪列为高电平即为需要此列是否点亮,第二行控制哪一行为低电平,即某一行被点亮,行列共同点亮时交叉处LED亮灯 //实验板的原理图因为自己看不懂所以这里的行列可能混了【手动狗头】对这个比较清楚的同学可以帮给我指正一下,谢谢。 /******************************************************************************* * 函 数 名 : delay * 函数功能 : 延时函数,i=1时,大约延时10us 死循环实现延时功能 *******************************************************************************/ void delay(u16 i) { while(i--); } /******************************************************************************* * 函数名 : Hc595SendByte(u8 dat) * 函数功能 : 向74HC595发送一个字节的数据 * 输入 : 无 * 输出 : 无 将一个字节的信息串行输入给74HC595以后由芯片并行输出 *******************************************************************************/ void Hc595SendByte(u8 dat) { u8 a; SRCLK=0; RCLK=0; for(a=0;a<8;a++) { SER=dat>>7; dat<<=1; SRCLK=1; _nop_(); _nop_(); SRCLK=0; } RCLK=1; _nop_(); _nop_(); RCLK=0; } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { u8 i; while(1)//轮回点亮循环体 { P0=0x7f; for(i=0;i<8;i++) { P0=ledwei[i]; //位选 Hc595SendByte(ledduan[i]); //发送段选数据 delay(100); //延时 Hc595SendByte(0x00); //消隐,如果的话点阵显示时会出现重影现象 } } } 74HC595芯片资料:http://www.51hei.com/chip/3978.html 二、修改代码 理解代码以后我们对代码进行修改来实现自己的点阵显示。 因为对亮度和别的指标没有要求,所以只需要修改和字符显示的这一段就可以啦 u8 ledduan[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}; 我要显示的是佐字,对应的代码经过推断 所以代码修改为 u8 ledduan[]={0x20,0x7f,0xd0,0x71,0x51,0xdf,0x51,0x51}; 三、烧录 将代码编译形成新的hex文件后下载到实验板上就OK啦,当然前提是你没有像我一样忘记JOE短接片短接到GND端
下一篇:基于单片机的数字电压表毕业设计
史海拾趣
|
如今,无线技术在日益增长的无线应用中扮演着越发重要的角色。 如今,无线技术在日益增长的无线应用中扮演着越发重要的角色。无论是有着美好远景却迟迟难产的3G无线网络,还是让人们开始质疑是否需要3G的无线技术WiMAX,无线技术的应用确然使人 ...… 查看全部问答> |
|
A R M 系列处理器是R I S C(R e d u c d e d I n s t r u c t i o n S e t Computing)处理器。很多基于ARM的高效代码的程序设计策略都源于RIS C处理器。和很多R I S C处理器一样,A R M系列处理器的内存访问,也要求数据对齐,即存取“字(Wo r ...… 查看全部问答> |
|
公司简介: 北京千家悦网络科技有限公司是一家专门从事嵌入式浏览器开发的高科技企业,公司07年在北京成立,处在中关村繁华的商业地带,已经稳步发展到成长阶段,公司拥有一批技术精湛的研究浏览器精英,造就了“千家悦系列浏览器”各方面的优势, ...… 查看全部问答> |
|
获取机器序列号,非imei码、KernelIoControl返回码 比如我有7台机器码(或者是出厂编号或者是设备码,厂商不同)如下(是商品码,就是一般超市的那种条形码差不多)。 可以在打开电源后,imei码下面找到(我的是联想et690)一行,063056031403 (12位)(显然不是imei的15 ...… 查看全部问答> |
|
严格来讲430的C是ANSI C的一个子集,与汇编的差别主要有: 1、C有if、(do)while、switch等流程控制语句 2、C有有限的数据格式,如char、int、float、dou××e等 3、对430最有特色的R0--R15的使用,C不如汇编 4、430的C不易进行RAM管理 5、43 ...… 查看全部问答> |
|
为什么我的fclose不能关闭文件流呢 大家帮看看呗 我在k40上运行的 void Main_Task(uint_32 data) { uchar data_test[] = \"K40!\"; uchar data_error[] = \"error\"; uchar data_ok[] = \"OK\"; MQX_FILE_PTR dispfd; uint_32 param,s ...… 查看全部问答> |
|
大家好: 我找到一篇用 AD633 乘法器做鑑相器的文章,但是我一直看不懂它的實際電路圖要如何接? 文章請在最下面下載。 據我所知,自由軸法的基本原理是這樣子: 對照圖1的伏安法測量原理,Ux為電壓向量,Us為電流向量。 對照圖2,分別測出 ...… 查看全部问答> |
|
说来惭愧啊,莎莎姐催了我好几次了,到现在才开始进度 进入正题 首先得把CN6、7、8、11跳到1-2上如图 然后装好suitcube+,点击tool如图开启codegenerator plug-in 然后 在主函数上写P7.7=1; 修改 点击下载就ok了 [ 本帖最后由 辉Se天 ...… 查看全部问答> |




