#include "reg52.h" typedef unsigned char uchar; sbit DIN_7219=P0^0;/*定义管脚*/ sbit LOAD_7219=P0^1; sbit CLK_7219=P0^2; #define addr_0 0x1 /*显示数据1的寄存器地址*/ #define addr_trans 0x9 /*译码方式寄存器地址*/ #define addr_light 0xA /*亮度寄存器地址*/ #define addr_scan 0xB /*扫描界线寄存器*/ #define addr_close 0xC /*掉电寄存器*/ #define addr_showtest 0xF /*显示测试寄存器*/ void send_7219(uchar da) { uchar i; for(i=0;i<8;i++) { CLK_7219=0; DIN_7219=(bit)(da&0x80); da<<=1; CLK_7219=1; } } void write_7219(uchar addr,uchar dat) { LOAD_7219=0; send_7219(addr); send_7219(dat); LOAD_7219=1; }
//----------------------------------------- void ini_7219() { write_7219(addr_trans,0xff);/*译码方式选择,1111 1111 最高位选择小数点,低四位数据选择*/ write_7219(addr_light,0x08);/*亮度方式选择,17/32;*/ write_7219(addr_scan,0x02);/*扫描界限服务器*/ write_7219(addr_close,0x01);/*掉电寄存器*/ write_7219(addr_showtest,0x00);/*测试寄存器,正常模式为0*/ }
main() { ini_7219(); while(1) { write_7219(addr_0,0x1); } } 各位大虾 看看是程序的问题吗?如果我给p00高电平的话(在外部直接给高),显示为8小数点也亮,求教这是为什么,谢谢大家,我在线等,谢谢!! |