点阵显示王例程
#include "reg51.h"
#include "intrins.h" //移位必須用的語句
typedef unsigned char u8; //變量命名
//typedef unsigned int u16;
sbit srclk=P3^6; //11號引腳,移位寄存器時鐘輸入
sbit rclk=P3^5; //12號引腳,儲存寄存器時鐘輸入
sbit ser=P3^4; //14號引腳,串行數據輸入
u8 code hanga[]={0x00,0x49,0x49,0x7f,0x49,0x49,0x00,0x00}; //D7-D0,D7最高位
//u8 code hangb[]={0x08,0x10,0x3f,0x49,0x2d,0x7f,0x2d,0x09}; //D7-D0
u8 code lie[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //P0^7-P0^0,P0^7是最高位void dbyte(u8 dat) //輸入dat到595芯片
{u8 i; //變量定義srclk=0; //初始化rclk=0; for(i=0;i<8;i++) //循環移位8次,因為有八次數據{ser=dat>>7; //把數據最高位右移到最低位dat<<=1; //然后把后面的數據左移一位srclk=1; //上升沿,將數據串行輸入_nop_(); //一個機器周期 延時_nop_();srclk=0; //再拉低
}
rclk=1; //上升沿,將數據送入儲存存器
_nop_();//一個機器周期 延時
_nop_();
rclk=0; //再拉低儲存起來
}void delay(int i)
{while(i--); //延時函數}void main(void)
{u8 i; //變量定義while(1){for(i=0;i<8;i++) //循環8次{P0=lie[i]; //選通列dbyte(hanga[i]); //送入行delay(100); //延時dbyte(0x00);//消影}}
}
總結
- 上一篇: python少儿趣味编程多少钱一节_学费
- 下一篇: 浏览器访问Linux的Tomcat