摘要: 74HC595 数码管程序 #include //51芯片管脚定义头文件 #include //内部包含延时函数 _nop_(); #de 74HC595 数码管程序 #include //51芯片管脚定义头文件 #include //内部包含延时函数 _nop_(); #define uchar unsigned char #define uint unsigned int uchar code DAT[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴数码管显示码 sbit HC595_SRCLR=P1^0; // 清空移位寄存器 sbit HC595_sRCLK=P1^1; // 寄存器输出时钟 sbit HC595_RCLK =P1^2; // 移位时钟 sbit HC595_OE =P1^3; // 并行输出使能 sbit HC595_sER =P1^4; // 串行数据 uchar temp; /********************************************************/ /* /* 延时子程序 /* /*******************************************************/ void delay(int ms) { int k; while(ms--) { for(k=0; k<250; k++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } /********************************************************/ /* */ /*将显示数据送入74HC595内部移位寄存器 */ /* */ /********************************************************/ void WR_595(void) { uchar j; for (j=0;j<8;j++) { temp=temp<<1 ; HC595_sER=CY; HC595_sRCLK=1; //上升沿发生移位 _nop_(); _nop_(); HC595_sRCLK=0; } } /********************************************************/ /* */ /*将移位寄存器内的数据锁存到输出寄存器并显示 */ /* */ /********************************************************/ void OUT_595(void) { HC595_RCLK=0; _nop_(); _nop_(); HC595_RCLK=1; //上升沿将数据送到输出锁存器 _nop_(); _nop_(); _nop_(); HC595_RCLK=0; } /******************************************************** * * * 主程序 * * * *********************************************************/ main() { // //以下为输出位初始化 HC595_OE=1; //并行输出为高阻状态 _nop_(); _nop_(); HC595_sRCLR=0; //清空移位寄存器 _nop_(); HC595_sER=0; //清零 _nop_(); _nop_(); HC595_RCLK=0; //移位时钟初始为低 _nop_(); HC595_sRCLK=0; //寄存器时钟初始为低 _nop_(); HC595_OE=0; //允许并行输出 _nop_(); HC595_sRCLR=1; //结束复位状态 //循环显示 0--9 while(1) { uchar i; for (i=0; i<10; i++) { temp=DAT[i]; //取显示数据 WR_595(); OUT_595(); delay(200); } } }
收藏0 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
时间类勋章
人才类勋章
发帖类勋章
等级类勋章
72
648
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号