找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6091|回复: 1
收起左侧

单片机16*16点阵 源程序 注释详细 原理图与Proteus仿真 字模工具VB6工程源代码

[复制链接]
ID:161768 发表于 2017-5-7 21:20 | 显示全部楼层 |阅读模式
下面是单片机16*16点阵的proteus仿真原理图(工程文件可到本帖附件中下载):
0.png

仿LED点阵字模的VB6工程源代码: 0.png 0.png


单片机16*16点阵源程序如下:
  1. #include <reg51.h>                  // 预处理命令
  2. #include <stdio.h>
  3. #define uint unsigned int
  4. #define u8 unsigned char
  5. //u8                Lsd[16]={0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
  6. u8                j=0;  //行变量
  7. //32字节的字模
  8. u8        code        zmdata[]=
  9.                                         {0x00,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,
  10. 0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x0E,0xC0,0x04};
  11. sbit        sd        =        P1^6;        // 行信号串行输入线
  12. sbit        clk        =        P1^7;  //  串行时钟线
  13. sbit        stbd=        P1^5;        // 锁存输出脉冲线
  14. main() {                              // 主函数
  15.                 u8        i;
  16.         SCON=0x00;        //移位方式
  17.                 TMOD=0x01;        //T0初始化为16位定时
  18.                 TH0=0xf8;        //定时2000us
  19.                 TL0=0x30;  //初值=65536-2000
  20.                 ET0=1;           //开定时器1中断
  21.                 EA=1;          //开总中断

  22.                 //初始化位选,让16个行输出是高电平,
  23.                 sd=1;         //         初始化串行输入数据线为高电平
  24.                 clk=1;        //        初始化时钟线为高电平
  25.                 stbd=0;        //        初始化锁存线为低电平
  26.                 for(i=0;i<16;i++)  //移位16次,使移位寄存器输出全部为高电平
  27.                 {
  28.                         clk=0;
  29.                         clk=1;

  30.                 }
  31.                 clk=0;                //使时钟线为低电平
  32.                 //把移位寄存器的16位进行输出锁存
  33.                 stbd=1;
  34.                 stbd=0;

  35.                 TR0=1; //开启T0定时器
  36.                 while(1);

  37.      }                                            // 主程序结束

  38. void  T0str() interrupt  1
  39.   {
  40.                   TL0=0x30;
  41.                 TH0=0xf8;        //定时器初值2ms
  42.                 j++;                //行加1
  43.                 if(j==16)
  44.                 {
  45.                         j=0;  //行范围是0--15
  46.                         sd=0;
  47.                 }
  48.                 else
  49.                 {
  50.                         sd=1;
  51.                 }
  52.                 TI=0;                   //串行通信发送标志置0
  53.                 SBUF=zmdata[2*j+1];         //移位输出高位
  54.                 while(!TI);
  55.                 //移位输出完成
  56.                 TI=0;
  57.                 SBUF=zmdata[2*j];          //移位输出低位
  58.                 while(!TI);
  59.                 //移位输出完成
  60.                 //sd=Lsd[j];        //
  61.                 clk=1;                //发移位脉冲
  62.                 clk=0;
  63.                 stbd=1;                ////发脉冲点亮当前行
  64.                 stbd=0;


  65.    }                                            // max函数结束
  66.    // 中
  67. //0x01,0x00,0x01,0x00,0x01,0x04,0x7F,0xFE,0x41,0x04,0x41,0x04,0x41,0x04,0

  68. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码



给大家分享一些我们老师给的一些经典的单片机程序源码, 一共有十多个.都有详细的注释,然大家快速的理解每一行代码的意思。而且有proteus仿真原理图。大家可以直接验证程序的对错.


本系列所有源码打包下载地址(含proteus仿真工程文件和源程序):
http://www.51hei.com/bbs/dpj-82474-1.html

本例程下载:
点阵.rar (271.37 KB, 下载次数: 32)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表