久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1971|回復(fù): 0
收起左側(cè)

74HC595+單片機(jī)3個(gè)IO口驅(qū)動(dòng)LCD1602 利用位尋址變量 Proteus仿真程序

[復(fù)制鏈接]
ID:137736 發(fā)表于 2022-11-27 16:33 | 顯示全部樓層 |閱讀模式
完全使用3個(gè)IO口驅(qū)動(dòng)LCD1602
8051三線傳送數(shù)據(jù)到74HC595,驅(qū)動(dòng)LCD1602.利用位變量可位操作,程序更加簡(jiǎn)單。根據(jù)網(wǎng)上別人的程序改編而來(lái)。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif

/*hc595->1602管腳連接bin(D7,D6,D5,D4,0,E,RW,RS)*/
#include <reg52.h>
//8051->hc595引腳定義
sbit LCD1602_SHCP=P3^6;        //in clock
sbit LCD1602_DS=P3^4;         //in data
sbit LCD1602_STCP=P3^5;          //out clock

//兩種數(shù)據(jù)類(lèi)型
typedef unsigned char uchar;
typedef unsigned int uint;

//定義數(shù)據(jù)槽
//uchar RS,RW,E,D4,D5,D6,D7;
bdata uchar sendData;
sbit RS = sendData^0;
sbit RW = sendData^1;
sbit E = sendData^2;

單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include "lcd595.h"

  3. const uchar type_t[]={
  4.   0x1f,0x02,0x02,0x02,
  5.         0x02,0x02,0x02,0x00
  6. };

  7. const uchar line1[]="Have a nice day!";
  8. const uchar line2[]="HE Wcommands";

  9. void main()
  10. {
  11.         uchar i;
  12.         LcdInit();
  13.         LcdWriteCGRAM(0x00,type_t);
  14.         LcdWriteData(0x00);
  15.         LcdWriteCom(0x81);
  16.         LcdPrintf("HE With");
  17.         LcdWriteCom(0xc0);
  18.         LcdPrintf("Commands");
  19.         Lcd1602_Delay1ms(1000);
  20.         LcdWriteCom(0x01);
  21.         while(1){
  22.                 for(i=0;i<16;i++){
  23.                         LcdWriteCom(0x80+i);
  24.                         LcdWriteData(line1[i]);
  25.                         Lcd1602_Delay1ms(100);
  26.                 }
  27.                 Lcd1602_Delay1ms(500);
  28.                 LcdWriteCom(0xc1);
  29.                 LcdWriteData(0x00);
  30.                 Lcd1602_Delay1ms(100);
  31.                 for(i=0;i<12;i++){
  32.                         LcdWriteCom(0xc2+i);
  33.                         LcdWriteData(line2[i]);
  34.                         Lcd1602_Delay1ms(100);
  35.                 }
  36.                 LcdWriteCom(0x01);
  37.                 Lcd1602_Delay1ms(100);
  38.         }
  39. }
復(fù)制代碼
  1. /*hc595->1602管腳連接bin(D7,D6,D5,D4,0,E,RW,RS)*/
  2. #include <reg52.h>
  3. //8051->hc595引腳定義
  4. sbit LCD1602_SHCP=P3^6;        //in clock
  5. sbit LCD1602_DS=P3^4;         //in data
  6. sbit LCD1602_STCP=P3^5;          //out clock

  7. //兩種數(shù)據(jù)類(lèi)型
  8. typedef unsigned char uchar;
  9. typedef unsigned int uint;

  10. //定義數(shù)據(jù)槽
  11. //uchar RS,RW,E,D4,D5,D6,D7;
  12. bdata uchar sendData;
  13. sbit RS = sendData^0;
  14. sbit RW = sendData^1;
  15. sbit E = sendData^2;
  16. sbit D4 = sendData^3;
  17. sbit D5 = sendData^4;
  18. sbit D6 = sendData^5;
  19. sbit D7 = sendData^6;

  20. void Lcd1602_Delay1ms(uint c); //延時(shí)函數(shù),延時(shí)1ms
  21. void LCD1602_DATAPINS(uchar value); //更改74HC595連接LCD1602的數(shù)據(jù)
  22. void LcdCalc(uchar i); //確定4位總線
  23. void LcdWriteCom(uchar com); //向LCD寫(xiě)入一個(gè)字節(jié)的命令
  24. void LcdWriteData(uchar dat); //向LCD寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù)
  25. void LcdInit(); //初始化LCD屏
  26. void LcdPrintf(uchar *s); //向屏幕輸出字符
  27. void LcdWriteCGRAM(uchar index,uchar *p); //建立一個(gè)自定義字符
  28. void LCDPrintNum(uint num,uchar wei); //顯示數(shù)字

  29. /*******************************************************************************
  30. * 函 數(shù) 名         : Lcd1602_Delay1ms
  31. * 函數(shù)功能                   : 延時(shí)函數(shù),延時(shí)1ms
  32. * 輸    入         : c
  33. * 輸    出         : 無(wú)
  34. * 說(shuō)    名         : 該函數(shù)是在12MHZ晶振下,12分頻單片機(jī)的延時(shí)。
  35. *******************************************************************************/
  36. void Lcd1602_Delay1ms(uint c)   //誤差 0us
  37. {
  38.         uchar a,b;
  39.         for(;c>0;c--){
  40.                 for(b=199;b>0;b--){
  41.                         for(a=1;a>0;a--);
  42.                 }
  43.         }
  44. }
  45. /*******************************************************************************
  46. * 函 數(shù) 名         : LCD1602_DATAPINS
  47. * 函數(shù)功能                   : 更改74HC595連接LCD1602的數(shù)據(jù)
  48. * 輸    入         : value
  49. * 輸    出         : 無(wú)
  50. 74HC595傳送數(shù)據(jù)的常用寫(xiě)法
  51. *******************************************************************************/   
  52. void LCD1602_DATAPINS(uchar value)
  53. {
  54.     uchar i;
  55.     for(i=0;i<8;i++)
  56.     {
  57.         LCD1602_DS=value&0x80;//取數(shù)據(jù)高位
  58.         if(LCD1602_DS==0x80){ //判斷數(shù)據(jù)高位是否為1
  59.             LCD1602_DS=1;//如果高位為1,DS置1
  60.         }
  61.         else{
  62.             LCD1602_DS=0;//否則DS置0
  63.         }
  64.         LCD1602_SHCP=0;
  65.         LCD1602_SHCP=1;//上升沿使這一位寫(xiě)入移位寄存器
  66.         value<<=1;//數(shù)據(jù)左移1位,數(shù)據(jù)的第7位變?yōu)樽罡呶唬h(huán)第8次時(shí)數(shù)據(jù)的最低位也變成最高位
  67.     }
  68.     LCD1602_STCP=0;
  69.     LCD1602_STCP=1;//給STCP一個(gè)上升沿,將for循環(huán)中輸入的數(shù)據(jù)移入輸出鎖存寄存器,刷新輸出數(shù)據(jù)
  70. }

  71. void LcdWriteCom(uchar com)          //寫(xiě)入命令
  72. {
  73.         //LcdCalc(com>>4);        //發(fā)送高四位
  74. ……………………

  75. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
51hei.png
Keil代碼與Proteus仿真下載: 利用可位尋址變量-hc595-1602.zip (102.37 KB, 下載次數(shù): 30)

評(píng)分

參與人數(shù) 1黑幣 +90 收起 理由
admin + 90 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频二区 | 黄色大片视频 | 免费成人在线网站 | av小说在线 | 久久久久99 | 在线免费观看成年人视频 | 欧美一区二区免费视频 | 亚洲欧美日韩精品久久亚洲区 | 国产精品视频网 | 日日躁狠狠躁aaaaxxxx | 日日夜夜天天综合 | 成人在线中文字幕 | 婷婷成人在线 | 久久香蕉网 | 7799精品视频天天看 | 午夜网站视频 | 九九99靖品| 亚洲一区av在线 | 在线观看的av | 欧美激情视频一区二区三区在线播放 | a视频在线| 一区二区中文字幕 | 欧美激情视频一区二区三区免费 | 国产成人亚洲精品 | 超碰人人做 | 精品日韩在线 | 91九色网站| 亚洲精品乱 | 婷婷久久综合 | 日韩视频区 | 超碰成人免费观看 | 91视频正在播放 | 青青久久 | 国产一区二区在线免费观看 | 色在线免费视频 | 一区二区国产精品 | 日日干夜夜操天天操 | 欧美久久天堂 | 亚洲一区电影 | 天天综合永久 | 成人国产精品久久久 |