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