找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3474|回复: 0
打印 上一主题 下一主题
收起左侧

IAP15F2K61S2数码管显示

[复制链接]
跳转到指定楼层
楼主
ID:254465 发表于 2018-1-3 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
// By Paprika
// 主要目的是实现对ch452的基本写操作,理解时序过程
sbit   ch451_din = P2^6;                                // 串行数据输出,接CH451的数据输入
sbit   ch451_load=P3^3;                        //串行命令加载,上升延激活
sbit   ch451_dout=P2^7;                        //INT1,键盘中断和键值数据输入,接CH451的数据输出
sbit   ch451_dclk = P2^5;                          //串行数据时钟上升延激活
//数字参数;数码管参数、板子连线、ch452数据手册可得,其他字母需要自己计算
#define number1         0x18
#define number2                                        0xd5
#define number3                                        0xd9
#define number4                                        0x78
#define number5                                        0xe9
#define number6                                        0xed
#define number7                                 0x98
#define number8                                        0xfd
#define number9         0xf9
#define number0                                 0xbd
/* CH451和CH452的常用命令码 */
#define CH452_NOP                    0x0000                                        // 空操作
#define CH452_RESET     0x0201                                        // 复位
#define CH452_LEVEL                  0x0100                                        // 加载光柱值,需另加7位数据
#define CH452_CLR_BIT          0x0180                                        // 段位清0,需另加6位数据
#define CH452_SET_BIT          0x01C0                                        // 段位置1,需另加6位数据
#define CH452_SLEEP                   0x0202                                        // 进入睡眠状态
#define CH452_LEFTMOV   0x0300                      // 设置移动方式-左移
#define CH452_LEFTCYC   0x0301                      // 设置移动方式-左循环
#define CH452_RIGHTMOV  0x0302                      // 设置移动方式-右移
#define CH452_RIGHTCYC  0x0303                      // 设置移动方式-右循环       
#define CH452_SELF_BCD        0x0380                                        // 自定义BCD码,需另加7位数据
#define CH452_SYSOFF    0x0400                                        // 关闭显示、关闭键盘
#define CH452_SYSON1    0x0401                                        // 开启显示
#define CH452_SYSON2    0x0403                                        // 开启显示、键盘
#define CH452_SYSON2W   0x0423                                        // 开启显示、键盘, 真正2线接口
#define CH452_NO_BCD    0x0500                                        // 设置默认显示方式,可另加3位扫描极限
#define CH452_BCD       0x0580                                        // 设置BCD译码方式,可另加3位扫描极限
#define CH452_TWINKLE   0x0600                      // 设置闪烁控制,需另加8位数据
#define CH452_GET_KEY          0x0700                                        // 获取按键,返回按键代码
#define CH452_DIG0      0x0800                                        // 数码管位0显示,需另加8位数据
#define CH452_DIG1      0x0900                      // 数码管位1显示,需另加8位数据
#define CH452_DIG2      0x0a00                      // 数码管位2显示,需另加8位数据
#define CH452_DIG3      0x0b00                      // 数码管位3显示,需另加8位数据
#define CH452_DIG4      0x0c00                      // 数码管位4显示,需另加8位数据
#define CH452_DIG5      0x0d00                                        // 数码管位5显示,需另加8位数据
#define CH452_DIG6      0x0e00                                        // 数码管位6显示,需另加8位数据
#define CH452_DIG7      0x0f00                      // 数码管位7显示,需另加8位数据


//延时程序
void delay(void){                                       
  char i,j,k;
   for(i=0;i<10;i++);
  }
// 写程序
void ch451_write(unsigned int command)
{
  char i;       
  ch451_load=0;   
    for(i=0;i<12;i++){                             //送入12位数据,低位在前
    ch451_din = command&1;                               
   ch451_dclk =0;
    command>>=1;
    ch451_dclk=1;                              //上升沿有效
         delay();
  }
        ch451_load=1;
}
void main(){
        ch451_write(CH452_SYSON1);
        ch451_write(CH452_DIG4 | number5);
        ch451_write(CH452_DIG5 | number5);
        ch451_write(CH452_DIG6 | number5);
        ch451_write(CH452_DIG7 | number5);
//        ch451_write(CH452_DIG3 | 1);
        //ch451_write(CH452_DIG2 | 1);
        //ch451_write(CH452_DIG1 | 7);
//        ch451_write(CH452_DIG0 | 8);  // 显示字符8
       


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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