第二部分 与外围设备的接口实例
//第4位显示1
ch451_write(CH451_DIG4|1);
//第6位显示1
ch451_write(CH451_DIG6|1);
}
例程2 数码管位0位和1同时显示0、1、2、3、4,且循环显示这些数值。
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define CH451_DIG0 0x0800 /*数码管位0显示*/
#define CH451_DIG1 0x0900 /*数码管位1显示*/
#define CH451_DIG2 0x0a00 /*数码管位2显示*/
#define CH451_DIG3 0x0b00 /*数码管位3显示*/
#define CH451_DIG4 0x0c00 /*数码管位4显示*/
#define CH451_DIG5 0x0d00 /*数码管位5显示*/
#define CH451_DIG6 0x0e00 /*数码管位6显示*/
#define CH451_DIG7 0x0f00 /*数码管位7显示*/
uint table[5][2]={{CH451_DIG0|0,CH451_DIG1|0},{CH451_DIG0|1,CH451_DIG1|1},
{CH451_DIG0|2,CH451_DIG1|2},{CH451_DIG0|3,CH451_DIG1|3},{CH451_DIG0|4,CH451_DIG1|4}};
//定义二维数组
sbit ch451_din=P1^0;
sbit ch451_clk=P1^1;
sbit ch451_load=P1^2;
/********************************************************************
函 数 名:ch451_init()
功 能:对ch451芯片进行初始化
***********************************************************************/
void ch451_init(void)
{
ch451_din = 0; /*先低后高,选择4线输入*/
ch451_din = 1;
ch451_load = 1;
ch451_clk = 1;
}
/********************************************************************
函 数 名:ch451_write()
功 能:把12位的指令或数据写入ch451
说 明:12位数据或指令的写入顺序是低位
入口参数:command
***********************************************************************/
void ch451_write(unsigned int command)
{
unsigned char i;
ch451_load=0; /*命令开始*/
for(i=0;i<12;i++)
{ /*送入12位数据,低位在前*,&表按位与,如5&7=5,即:0101^0111=5*/
ch451_din=command&1;
ch451_clk=0;
ch451_clk=1;
command>>=1; /*上升沿有效*/
}
ch451_load=1; /*加载数据*/
}
void delay() //延时函数
{
uint x,y;
for(x=100;x>0;x--)
for(y=580;y>0;y--);
}
void main()
{
uchar num,tt;
ch451_init();
//系统参数设定,参照说明书
ch451_write(0x401);
//显示参数设定,
ch451_write(0x580);
while(1)
{
for(num=0;num<5;num++)
{for(tt=0;tt<2;tt++)
ch451_write(table[num][tt]);
delay();
}
}
}
外围设备接口实 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)