最近老乱玩74HC595,发现它只能输出,不能输入。
查找大量资料,从某个网友制作的mylib.c(NES)中获得了一条指令:
#define bin(_a,_b,_c,_d,_e,_f,_g,_h) ((_a)<<7|(_b)<<6|(_c)<<5|(_d)<<4|(_e)<<3|(_f)<<2|(_g)<<1|(_h))
分别是8 7 6 5 4 3 2 1位
能不能完全用74595来控制整个1602呢?于是......
电路图
当时用的STC89C52RC......
当时用的STC89C52RC
效果图:
效果图
效果图
效果图(蓝)
效果图(蓝)
效果图(蓝)
效果图(黄绿)
效果图(黄绿)
单片机源程序如下:
- #include <reg52.h>
- #include "lcd595.ini"
- const uchar type_t[]={
- 0x1f,0x02,0x02,0x02,
- 0x02,0x02,0x02,0x00
- };
- const uchar line1[]="Have a nice day!";
- const uchar line2[]="HE Wcommands";
- void main()
- {
- uchar i;
- LcdInit();
- LcdWriteCGRAM(0x00,type_t);
- LcdWriteData(0x00);
- LcdWriteCom(0x81);
- LcdPrintf("HE With");
- LcdWriteCom(0xc0);
- LcdPrintf("Commands");
- Lcd1602_Delay1ms(1000);
- LcdWriteCom(0x01);
- while(1){
- for(i=0;i<16;i++){
- LcdWriteCom(0x80+i);
- LcdWriteData(line1[i]);
- Lcd1602_Delay1ms(100);
- }
- Lcd1602_Delay1ms(500);
- LcdWriteCom(0xc1);
- LcdWriteData(0x00);
- Lcd1602_Delay1ms(100);
- for(i=0;i<12;i++){
- LcdWriteCom(0xc2+i);
- LcdWriteData(line2[i]);
- Lcd1602_Delay1ms(100);
- }
- LcdWriteCom(0x01);
- Lcd1602_Delay1ms(100);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
5951602.zip
(55.5 KB, 下载次数: 279)
|