CH451和单片机数码管显示程序(循环右移)

void rightcycle(){ uint k; for(k=0;;k++) { delay(5000); write_ch451(0x303);//循环右移 }}
void main(){
ch451_init(); write_ch451(0x403); //开显示和键盘关看门狗 write_ch451(0x580); //采用默认的显示方式即不是译码显示方式// write_ch451(0x621);//D0和D5闪烁
{ write_ch451(0x0801); write_ch451(0x0902); write_ch451(0x0a03); write_ch451(0x0b04); write_ch451(0x0c05); write_ch451(0x0d06); write_ch451(0x0e07); write_ch451(0x0f08);
rightcycle(); }

数码管循环右移#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1=P2^6;//定义锁存使能端口 段锁存
sbit LATCH2=P2^7;// 位锁存

unsigned char code DuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
// 显示段码值01234567
unsigned char code WeiMa[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
//分别对应相应的数码管点亮,即位码

void Delay(unsigned int t); //函数声明

/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
unsigned char i=0;
while(1)
{
DataPort=WeiMa[i]; //取位码
LATCH2=1; //位锁存
LATCH2=0;

DataPort=DuanMa[i]; //取显示数据,段码
LATCH1=1; //段锁存
LATCH1=0;

Delay(200); //扫描间隙延时,时间太长会闪烁,太短会造成重影
i++;
if(8==i) //检测8位扫描完全结束?如扫描完成则从第一个开始再次扫描8位
i=0;
}
}
/*------------------------------------------------
延时函数,含有输入参数 unsigned int t,无返回值
unsigned int 是定义无符号整形变量,其值的范围是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-17
减,乘,除法,没有小数点
,显示负面特征,这只能帮助它。

#包括

#包括

#包括中

的#pragma NOREGPARMS

#定义克DBYTE [0X30]

#定义s DBYTE [0X31]

#定义了B DBYTE [0X32]

#定义q DBYTE [0X33]

#定义瓦特DBYTE [0X34] #定义SW DBYTE [的0x35]

#定义体重DBYTE [0x36]

#定义QW DBYTE [0x37]

#定义标志DBYTE [0X38]

#定义WW DBYTE [0X39]

#定义变量DBYTE [0X40]

无符号长整型数据A0 _at_的0x42;

无符号长整型数据A1 _at_ 0X46;

无符号长整型数据A2 _at_ 0x50的; 无效数()

{

无符号长温度;

如果(VAR> = 0 &&变种<= 9)

{

如果(WW == 1 )

{

QW = BW = SW = W = Q = B = S = G = 0;

G =变种;

WW = 0;

} 其他

{

QW =体重;

体重= SW;

SW = W;

W = Q;

q = B; B = S;

S =克;

G =变种;

}

}

如果(VAR> = 0X0A &&变种 {

A0 = QW * 10000000 + BW * 1000000 + SW * 100000 + W * 10000 + Q * 1000 + B * 100 + S * 10 + G;

如果(VAR == 0X0A )标志= 1 ;/ /加法器标志

如果(VAR == 0X0B)标志= 2 ;/ /减号

如果(VAR == 0X0C)标志= 3 ;/ /乘号如果(VAR == 0X0D)标志= 4 ;/ /除号

WW = 1;

}

如果(VAR == 0x0E的)

{

A1 = QW * 10000000 + BW * 1000000 + SW * 100000 + W * 10000 + Q * 1000 + B * 100 + S * 10 + G;

如果(旗== 1)A2 = A1 + A0; 如果(旗== 2)A2 = A0-A1;

如果(旗== 3)A2 = A1 * A0;

如果(旗== 4)A2 = A0 / A1; G = A2%10;

温度= a2/10;

S = TEMP%10;

温度= temp/10;

B = TEMP%10; 温度= temp/10;

Q = TEMP%10;

温度= temp/10;

W = TEMP%10;

温度=温度/ 10; SW = TEMP%10;

温度= temp/10;

体重= TEMP%10;

QW = temp/10; <br

如果/>}(变种== 0X0F)

{

QW = BW = SW = W = Q = B = S = G = VAR =标志= 0;

}
} 此外,该集团的IDC有很多产品买口上网,价格便宜字

CH451和单片机数码管显示程序(循环右移)
数码管循环右移#include<reg52.h> \/\/包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 define DataPort P0 \/\/定义数据端口 程序中遇到DataPort 则用P0 替换 sbit LATCH1=P2^6;\/\/定义锁存使能端口 段锁存 sbit LATCH2=P2^7;\/\/ 位锁存 unsigned char code DuanMa[]={0xc0,0x...

求 数码管CH451 初始化程序 51单片机C语言的 THANKU~
define ch451_rmov 0x0302 \/\/设置移动方式-右移 define ch451_rcyc 0x0303 \/\/设置移动方式-右循 define ch451_soff 0x0400 \/\/关显示、键盘、看门狗 define ch451_son 0x0401 \/\/开显示 define ch451_dsp 0x0500 \/\/设置默认显示方式 define ch451_BCD 0x058...

求一个好使的 ch451 控制程序 自己在网上找了几个 都不怎么好用 求高手...
case 5:CH451_Write(CH451_DIG3|BCD[ LED_data ]);break;\/\/第5位显示 case 4:CH451_Write(CH451_DIG4|BCD[ LED_data ]);break;\/\/第4位显示 case 3:CH451_Write(CH451_DIG5|BCD[ LED_data ]);break;\/\/第3位显示 case 2:CH451_Write(CH451_DIG6|BCD[ LED_data ]);break;\/\/第2位显示 ...

CH451中不译码指的是什么?还有数据加协、1线串行接口、4线串行接口。求...
在CH451中,如果连接的是按顺序连接的八个数码管管脚,通过对CH451进行初始化,可以选择使其以译码方式工作。默认情况下,CH451不进行译码。译码后,会有一个表格,发送的数据对应着显露的数字。如果不进行译码,需要在程序中手动编写一个表格来进行手工译码,即数码管的a、b、c...对应的灯亮,整体显...

CH451中 不译码指的是什么?还有数据加协、1线串行接口、4线串行接口...
不译码指的是不转成BCD码,也就是说如果连接是按顺序连接数码管的八个管脚,在对CH451初始化后,可发送设置,让它用译码方式,(默认不译码),译码后,有个表,发送数据是多少显多少。不译码,需要在程序中写个表,手工译码,也就是数码管的a、b、c...对应的灯亮,总体显一个数。4线串行接口...

有没有一种芯片可以占用单片机最少的接口而连接很多按键?
CH451是一个集成的数字显示和键盘扫描驱动器和多功能外围芯片μP监控。 CH451内置RC振荡电路可以动态驱动8个或64个数码管LED发光管,具有BCD译码器,闪烁,移位等功能;而键盘,也可用于扫描64个按键; CH451可以通过串行接口级联到与微控制器交换数据;并提供上电复位和看门狗功能,如监测。(一)内置高...

数码管有几种显示方式?
目前常见的数码管显示芯片有8279、MAX7219、HD7279、CH451等。这些芯片的主要特点是:数码管的显示全都采用动态扫描的方式,都可以连接8个数码管,控制方式都比较简单。现面对这几个芯片进行简单的介绍。8279为Intel公司生产的较早期的产品,是可编程的键盘、显示接口芯片。它既具有按键处理功能,又具有自动...

数码管是如何连接到单片机上的
拿8段1位数码管做例子。8段指有8个LED,如果是共阴极的,那这8个LED的负极连在一起,正极不连。8个LED的8个正极分别连一个限流电阻,再接到单片机一个IO引脚上。负极接一个NPN三极管的集电极,三极管的发射极接地,基极接一个电阻(可用10K)再接到一个IO引脚上。

谁有两位数码管显示“00”到“99”的程序呀?
void led_display();void main(){ P0和P1口都初始化为输出;PORT0 = 0x0;PORT1 = 0xff;while(1){ if(time >= 40){ time = 0;num++;if(num == 100){ num = 0;} } if(position == 2){ time++;position = 0;} led_dis[1] = num % 10;led_dis[0] = num \/ 10;led_...

multisim8位数码管怎么驱动
通过数码管驱动芯片CH451的方式,来做数码管的电路搭建。 该方式,8位数码管,需要6个IO口来驱动。数码管的控制逻辑全部集成在驱动芯片CH451上了,只需要将所需显示的数值,根据CH451芯片手册对应的驱动时序,传输给到CH451芯片,就能实现数码管的显示。共阳数码有8个发光二极管,其余的8个负板引出后称...

相似回答