基于STC12C5A60S2单片机的点阵屏完工

发布者:闪耀星空最新更新时间:2015-05-18 来源: 51hei关键字:STC12C5A60S2  单片机  点阵屏 手机看文章 扫描二维码
随时随地手机看文章







通过几天的工作点阵屏终于完工,不过因为缺少元件只能算完成了一半。。。。。。
不想多说直接上C51程序代码
//行扫1#74hc154芯片对应数据输入口:P0^0->P0^3数据输入控制口:P0^4低电平有效;行扫输出为互斥低电平输出;
//列扫1#74hc595芯片对应数据输入口:P0^5移位寄存器时钟信号;P0^6存储寄存器数据更新时钟;P0^7数据输出使能,低电平时输出有效;[page]
//P2^0串行数据输入
#include//包函头文件
#include//包函_nop_延时函数的头文件
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
////////////////////////////////////////////////////////////////////////////////
uchar code ZM000[]=
{
  //源文件 / 文字: 祝
  0x00,0x00,0x20,0x00,0x11,0xF8,0x01,0x08,
  0x79,0x08,0x09,0x08,0x11,0x08,0x11,0xF8,
  0x38,0x90,0x54,0x90,0x10,0x90,0x10,0x90,
  0x11,0x14,0x11,0x14,0x12,0x0C,0x00,0x00,
};
uchar code ZM001[]=
{
  //源文件 / 文字: 荣
  0x00,0x00,0x08,0x20,0x7F,0xFC,0x08,0x20,
  0x00,0x00,0x7F,0xFC,0x40,0x04,0x01,0x00,
  0x01,0x00,0x7F,0xFC,0x03,0x80,0x05,0x40,
  0x19,0x30,0x61,0x0C,0x01,0x00,0x00,0x00,
};
////////////////////////////////////////////////////////////////////////////////
sbit HC154_A=P0^0;//HC154数据输入口
sbit HC154_B=P0^1;//HC154数据输入口
sbit HC154_C=P0^2;//HC154数据输入口
sbit HC154_D=P0^3;//HC154数据输入口
sbit G1=P0^4;//HC154使能端控制
sbit SH=P0^5;//HC595移位控制
sbit ST=P0^6;//HC595锁存更新显示
sbit OE=P0^7;//HC595使能端控制
sbit DS=P2^0;//HC595串行数据输入
////////////////////////////////////////////////////////////////////////////////
void chushihua()       //硬件初始化
{
     OE=1;   //关闭HC595输出
     G1=1;   //关闭HC154输出
 }
////////////////////////////////////////////////////////////////////////////////
void delay(uint ms)//延时子程序
{
 uint x,y;
 for(x=ms;x>0;x--)
  for(y=0;y<240;y++);
}
////////////////////////////////////////////////////////////////////////////////
//低位先入
void sendbyte(uchar Rdate)//HC595串口输入一个字节
{
 uchar a;
    uchar date=Rdate;
 for(a=0;a<8;a++)
 {
  SH=0;
  if(date&0x01)//先将最低位移入
  {
  DS=1;
        SH=1;
  }
  else
  {
  DS=0;
  SH=1;
  }
  date=date>>1;//输入的字节位右移
 }
}
////////////////////////////////////////////////////////////////////////////////
void HC595_GX()     //HC595锁存数据更新并输出
{
    ST=0;
 _nop_();
 _nop_();
 ST=1;    //HC595锁存数据更新
 _nop_();
 _nop_();
 OE=0;    //HC595输出   
 }
////////////////////////////////////////////////////////////////////////////////
void HC154_HS(uint x)//X行低电平输出
{
    G1=0;
    switch(x)
   {
    case 1:
      HC154_A=0;
      HC154_B=0;
      HC154_C=0;
      HC154_D=0;
      break;
     case 2:
      HC154_A=1;
      HC154_B=0;
      HC154_C=0;
      HC154_D=0;
      break;
     case 3:
      HC154_A=0;
      HC154_B=1;
      HC154_C=0;
      HC154_D=0;
      break;
     case 4:
      HC154_A=1;
      HC154_B=1;
      HC154_C=0;
      HC154_D=0;
      break;
     case 5:
      HC154_A=0;
      HC154_B=0;
      HC154_C=1;
      HC154_D=0;
      break;
     case 6:
      HC154_A=1;
      HC154_B=0;
      HC154_C=1;
      HC154_D=0;
      break;
     case 7:
      HC154_A=0;
      HC154_B=1;
      HC154_C=1;
      HC154_D=0;
      break;
     case 8:
      HC154_A=1;
      HC154_B=1;
      HC154_C=1;
      HC154_D=0;
      break;
     case 9:
      HC154_A=0;
      HC154_B=0;
      HC154_C=0;
      HC154_D=1;
      break;
     case 10:
      HC154_A=1;
      HC154_B=0;
      HC154_C=0;
      HC154_D=1;
      break;
     case 11:
      HC154_A=0;
      HC154_B=1;
      HC154_C=0;
      HC154_D=1;
      break;
     case 12:
      HC154_A=1;
      HC154_B=1;
      HC154_C=0;
      HC154_D=1;
      break;
     case 13:
      HC154_A=0;
      HC154_B=0;
      HC154_C=1;
      HC154_D=1;
      break;
     case 14:
      HC154_A=1;
      HC154_B=0;
      HC154_C=1;
      HC154_D=1;
      break;
     case 15:
      HC154_A=0;
      HC154_B=1;
      HC154_C=1;
      HC154_D=1;
      break;
     case 16:
      HC154_A=1;
      HC154_B=1;
      HC154_C=1;
      HC154_D=1;
      break;
    default:
      break;
  }
 }
////////////////////////////////////////////////////////////////////////////////
void OUT16x16(uchar code ZM[31])//输出一个16x16点阵字模子程序
{
     uint y;//行扫数据控制
     uint x_H;//列高位数据控制
     uint x_L;//列低位数据控制
     for(y=1,x_H=0,x_L=1;y<=16;y++)
     {
       sendbyte(ZM[x_L]);
       sendbyte(ZM[x_H]);
       HC595_GX();
       HC154_HS(y);
       x_H+=2;
       x_L+=2;
       delay(1);  
     } 
}
////////////////////////////////////////////////////////////////////////////////
void main()       //主函数
{
   uint x;
   while(1)
 {
       //输出祝字
       for(x=0;x<5000;x++)
       {
       OUT16x16(ZM000);
       }
       //输出荣字 
        for(x=0;x<5000;x++)
       {
       OUT16x16(ZM001);
       }     
    } 
    
 } 
 
关键字:STC12C5A60S2  单片机  点阵屏 引用地址:基于STC12C5A60S2单片机的点阵屏完工

上一篇:浅谈用单片机模拟PLC(山寨三菱系列)
下一篇:I2C总线协议(AT24c02)程序

推荐阅读最新更新时间:2024-03-16 14:02

关于MCU看门狗最通俗的介绍
看门狗WatchDog 是一个很重要的资源,他能够有效的防止系统进入死循环或者程序跑飞。 工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。 看门狗是类似与硬件保护卡之类.保护硬盘数据的. 是单片机一个复位芯片,在单片机遇到异常情况之下自动复位!~~ 看门狗电路是用来看着你的CPU的,作用是不让你的程序丢失。 看门狗实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个
[单片机]
关于<font color='red'>MCU</font>看门狗最通俗的介绍
用普中开发板做的51单片机的智能时钟具有闹钟功能
本贴针对学完单片机并且有读懂代码的非新手同学。本人目前放寒假,这个是本人在上个学期的单片机课上要求做的综合实验,现在重新修改了下增加了菜单目前测试毫无问题可以完美使用。有志向做闹钟的同学可以参考一下,原码上由本人写的大量注释可以方便看懂。 使用了LCD1602、DS1302、DS18B20用来测试温度、内部含闹钟系统但本人没有做EEPROM有需要的同学可以自行添加。 单片机源程序如下: #include reg52.h #include key.h #include LCD1602.h #include DS1302.h #include music.h #include DS18B20.H #define no
[单片机]
单片机/智能仪表显示与键盘设计
实验内容:键盘采用4X4键盘,每个数码管显示值可为0-F共16个数。通过按键,求取键值0-F在R5寄存器中。通过按键,编写程序扫描键盘输入,并将扫描结果送数码管显示。实现对应不同按键在数码管上显示相应键值0-F的功能。 参考程序: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R1,#7AH MOV R2,#06H MOV A,#00H L01:MOV @R1,A INC R1 DJNZ R2,L01 LCALL DIR6 MA1:LCALL KEY MOV A,R5 MOV R1,#7AH MOV R2,#06H L02:MOV @R1,A INC R1 DJNZ R2,L02 LCA
[单片机]
<font color='red'>单片机</font>/智能仪表显示与键盘设计
PIC单片机的内部RC振荡器的校准
在PIC的单片机中有多种型号有内部RC振荡器的功能,从而省去了晶振,不但节省了成本,并且我们还多了两个IO端口可以使用。 但是,由于RC振荡器中电阻、电容的离散性很大,因此,在有内部RC振荡器的单片机中,它的内部RAM中都会有一个名为OSCCAL的校准寄存器,通过置入不同的数值来微调RC振荡器的振荡频率。并且,单片机的程序存储器中,也会有一个特殊的字来储存工厂生产时测得的校准值。下面我以常用的12C508A和12F629为例加以说明。 12C508A的复位矢量是程序的最高字0x1FF,这个字节生产商已经固定的烧写为MOVLW 0xXX,指令执行后,W寄存器中即为校准值XX,当我们需要校准时,那么,在紧接着的地址0x0应该是一条这
[单片机]
基于AT89S52单片机的多功能音乐播放器
1 引言 目前流行的MP3,MP4播放器的音质相当好。但略感遗憾的是除了选择歌曲和显示歌名外,绝大部分播放器没有诸如随意弹奏乐曲、乐曲节奏跳动显示等功能。正是基于音乐播放器的多功能出发,提出一种多功能音乐播放器的设计方案。 2 硬件电路设计 整个硬件电路是由中心控制、播放、选曲、显示、电子琴和彩灯等模块组成。该硬件系统框图如图1所示。 2.1 中心控制模块 目前应用较为流行的单片机有AVR和51单片机。从系统设计的功能需求及成本考虑,51单片机性价比更高,AT89S52是拥有2个外部中断,2个16位定时器,2个可编程串行UART的单片机。中心控制模块采用AT89S52单片机已完全满足设计需要,实现整个系统控制。
[单片机]
基于AT89S52<font color='red'>单片机</font>的多功能音乐播放器
51单片机学习笔记6 -- 定时器中断
1.引脚复用 通过原理图可以发现定时器0(T0)和定时器1(T1)是P3.4引脚和P3.5引脚的复用功能,当将这两个引脚配置为定时器功能时,引脚外接的传感器(模块)将不能正常使用,即引脚同一时间只能作为一个功能使用(普通I/O或复用功能) T0、T1是两个16位定时器/计数器,每经过1个机器周期内部的16位计数寄存器的值加1,当计数器装满时会溢出,在定时模式时单次最大的定时时间是 65535*1.085us 的时间(单位us) 2.定时器配置 定时器0配置需要用到的寄存器(TCON、TMOD、TL0、TH0) 1.定时器/计数器控制寄存器TCON TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出
[单片机]
51<font color='red'>单片机</font>学习笔记6 -- 定时器中断
MCU,新一轮热潮来袭
“由于消费性市场需求不温不火,库存持续消化中,MCU市况短期能见度较低。”这是券商摩根士丹利对于MCU的最新预测。换句话说,就是MCU仍在去库存进程中,未来市场可能没那么乐观。 但与机构预测不同的是,近几个月,MCU新品频发,而它们的目标则也更加明确——发力AI和汽车。 付斌丨作者 电子工程世界(ID:EEworldbbs)丨出品 国际巨头都在找新市场 此前,半导体下行对MCU影响非常靠前,目前世界整体市场需求依旧受总体经济走势影响,复苏几近取决于经济走势。国际巨头则在近段时间找到更多新的切入点,以跟随市场对于AI和汽车的全新需求。 微芯:开始支持I3C 工程师对于I2C一定非常熟知,它结合了SPI和
[单片机]
<font color='red'>MCU</font>,新一轮热潮来袭
AT89S51单片机是什么?
AT89S51单片机是什么? AT89S51是什么? 书上和网络教程上可都是8051,89C51等 !没听说过有 89S51 ?! 这里,初学者要澄清单片机实际使用方面的一个产品概念,MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有 8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在, MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。 有些文献
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved