//
// 基于新唐M0——BSP Lib 的 工程模板
//
// --------Cube 2011.3---------
// 本程序使用了上述工程模板,用起来很方便。
// 硬件连接如下
// NUC120 ZLG7289 蜂鸣器
// GPA5 ------------- CS
// GPA6 ------------- CLK
// GPA4 ------------- DIO
// GPA3 ------------- KEY
// GPB2 --------------------------------FMQ
//
// 我是菜农助学板第一批学习使用者之一,
// 感谢菜农先生的耐心助教。
// 本程序已用KEILvU4 4.20编译通过并成功运行。
// 在此与同好交流并请指正。
#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvUART.h"
#include "DrvSYS.h"
#include "ZLG7289U.h"
void delay_ms(uint32_t k)
{
uint32_t i,j;
for(i=0;i<k;i++){
for(j=0;j<2250;j++)
{;}}
}
int main (void)
{
uint8_t x;
uint8_t mod;
uint8_t dat;
uint8_t k;
uint8_t dp;
uint8_t n;
UNLOCKREG();
SYSCLK->PWRCON.XTL12M_EN = 1;
delay_ms(300);
ZLG7289_Init();
delay_ms(1000);
ZLG7289_Reset();
delay_ms(1000);
//用译码方式0和方式1下载数据并显示。
for(mod=0;mod<2;mod++)
{
for(dat=0;dat<16;dat++)
{
dp=0;
for(x=0;x<8;x++)
{
ZLG7289_Download(mod,x,dp,dat);
}
delay_ms(1000);
dp=1;
for(x=0;x<8;x++)
{
ZLG7289_Download(mod,x,dp,dat);
}
delay_ms(1000);
}
delay_ms(1000);
}
//显示0.123456
ZLG7289_Download(1,0,1,0);
for(x=1;x<8;x++)
{
dat=x;
ZLG7289_Download(1,x,1,dat);
}
delay_ms(1000);
//循环左移
for ( n=0; n<8; n++ )
{
ZLG7289_ROL();
delay_ms(1200);
}
delay_ms(1000);
//循环右移
for ( n=0; n<8; n++ )
{
ZLG7289_ROR();
delay_ms(1200);
}
delay_ms(1200);
//左移2 位
for ( n=0; n<2; n++ )
{
ZLG7289_SHL();
delay_ms(1200);
}
//右移3 位
for ( n=0; n<3; n++ )
{
ZLG7289_SHR();
delay_ms(1200);
}
//显示01234567
for ( x=0; x<8; x++ )
{
dat = x;
ZLG7289_Download(1,x,0,dat);
}
delay_ms(1200);
//闪烁控制
dat = 0xFE;
for ( n=0; n<8; n++ ) //逐位闪烁
{
ZLG7289_Flash(dat);
dat <<= 1; dat++; //数据0xFE 循环左移
delay_ms(1600);
}
ZLG7289_Flash(0x5A); //多位可以同时闪烁
delay_ms(2000);
ZLG7289_Flash(0xFF); //停止闪烁
delay_ms(2000);
//消隐控制
dat = 0xFE;
for ( n=0; n<8; n++ )
{
ZLG7289_Hide(dat);
dat <<= 1; dat++; //数据0xFE 循环左移
delay_ms(2000);
}
ZLG7289_Hide(0x5A); //多位可以同时消隐
delay_ms(2000);
ZLG7289_Hide(0xFF); //停止消隐
delay_ms(1000);
//复位
ZLG7289_Reset();
delay_ms(1000);
//段点亮
for ( n=0; n<64; n++ )
{
dat = n;
ZLG7289_SegOn(dat);
delay_ms(500);
}
//段关闭
for ( n=0; n<64; n++ )
{
dat = n;
ZLG7289_SegOff(dat);
delay_ms(500);
}
//键盘测试
ZLG7289_Reset();
delay_ms(500);
for(;;)
{
INPUT_KEY;
if(GETBIT_KEY==0)
{
k=ZLG7289_Key();
dat=k/10;
ZLG7289_Download(1,0,0,dat);
dat=k-dat*10;
ZLG7289_Download(1,1,0,dat);
while(!GETBIT_KEY);
FMQ_CLR;
delay_ms(500);
FMQ_SET;
delay_ms(10);
}
delay_ms(50);
}
} |