立即注册 登录
返回首页

uid:254465的个人空间

日志

iap15fk61s2 数码管显示

已有 279 次阅读2018-1-3 11:05

#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

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

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

Powered by 单片机教程网

返回顶部