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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3200|回復: 1
打印 上一主題 下一主題
收起左側

74hc595+數碼管 單片機源程序Proteus仿真(剩用端口)

[復制鏈接]
跳轉到指定樓層
樓主
代碼+仿真


單片機源程序如下:
  1. #include <REGX51.H>
  2. sbit SH_CP = P0^0;// 移位寄存器的時鐘控制
  3. sbit DS = P0^1; // 數據傳輸線
  4. sbit ST_CP = P0^2;//數據輸出寄存器的時鐘控制
  5. unsigned int a[]={
  6.         0x3F,/*0*/
  7.         0x06,/*1*/
  8.         0x5B,/*2*/
  9.         0x4F,/*3*/
  10.         0x66,/*4*/
  11.         0x6D,/*5*/
  12.         0x7D,/*6*/
  13.         0x07,/*7*/
  14.         0x7F,/*8*/
  15.         0x6F,/*9*/

  16. };
  17. //延時函數
  18. void delayms(unsigned int m)
  19. {
  20.         unsigned int i, j;
  21.         for(i=0; i<m; i++)
  22.                 for(j=0; j<100; j++);
  23. }


  24. /****************************************************************
  25. 第一步:取出最高位   temp = value & 0x80;  //取最高位的值
  26. 第二步:判斷最高位是0還是1 if(temp)
  27. 第三步:向595發送最高位的值          DS = 1或0; 向595的移位寄存器發送一個1或0
  28. 第四步:向移位寄存器中發送數據,將數據產生移位
  29.         只需給移位寄存器上升沿工作時鐘 SH_CP = 0; SH_CP = 1;
  30. 第五步:將要傳輸的數據進行移位,目的是將最高位去掉,
  31.         將次高位變為最高位 value = value <<1;/
  32. 第六步:一個字節有8位數據,每次只能發送一位數據,
  33.         所以我們發送8次,用for循環
  34. 第七步:八個數據全部發送到移位寄存器之后,就要將移位寄存器的數據發送到數據輸出寄存器中,
  35.                 只需要給數據輸出寄存器一個上升沿工作時鐘即可ST_CP = 0; ST_CP = 1;
  36. ***************************************************************/
  37. void hc595(unsigned int value)
  38. {
  39.         bit temp;//位變量,temp的值為0或者1
  40.         unsigned char i;
  41.         for(i=0; i<8; i++)
  42.         {
  43.                 temp = value &0x80; // 取value的最高位  0000 0001  &1000 0000
  44.                 if(temp == 1) DS = 1;//如果最高位為1,那么就向595發送一個1
  45.                 else  DS =0; //否則就向595發送一個0
  46.                 SH_CP = 0;
  47.                 SH_CP = 1;//移位寄存器產生一個上升沿,將數據發送到移位寄存器中,使移位寄存器的數據產生移位
  48.                 value = value <<1;//將最高位去掉,將此高位變成最高位,為下一次發送最高位做準備               
  49.         }
  50.         ST_CP = 0;
  51.         ST_CP = 1;//產生一個上升沿,將移位寄存器的數據發送給數據輸出寄存器
  52. }
  53. /*************************
  54. 顯示函數
  55. 動態掃描:先寫位碼,再寫段碼,最后補一個延時
  56. */         
  57. void display(void)
  58. {
  59.         unsigned char n,x;
  60.         for(n=0; n<100; n++)
  61.         {
  62.                 for(x=0; x<50; x++)// 當前數字刷新的次數,起到延時的作用 每一消耗的時間20ms x  50 =1s
  63.                 {
  64.                  P3 = 0x01;//0000 0001   個位工作 位碼
  65.                   hc595(a[n%10]);//顯示0
  66.                   delayms(10);

  67.                   P3 = 0x02;//0000 0010  十位工作,位碼
  68.                   hc595(a[n/10]);//顯示1
  69.                   delayms(10);
  70.                 }        
  71.         }
  72.    
  73. }

  74. void  main(void)
  75. {
  76.         while(1)
  77.         {
  78.                 display();        
  79.         }
  80. }
復制代碼

下載: 595-雙數碼--0~99.rar (41 KB, 下載次數: 62)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:284050 發表于 2020-9-5 13:55 | 只看該作者
void hc595(unsigned int value)

這個函數給了我另外一種發送數據給595的思路,謝謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品日韩欧美一区二区三区 | 黄色网络在线观看 | 国产乱码高清区二区三区在线 | 黄色精品视频网站 | 中文字幕亚洲国产 | 久久综合久久久 | 国产精品久久久久久久一区二区 | 午夜日韩视频 | 国产亚洲欧美在线视频 | 亚洲视频在线看 | a级黄色网 | 日日夜夜狠狠操 | 一区二区福利视频 | 国产亚洲高清视频 | 中文二区 | 情侣黄网站免费看 | 国产精品欧美一区喷水 | 久久国产精品久久久久久久久久 | av免费在线播放 | 久久在看| 毛片一级片 | 日韩免费视频一区二区 | 久久出精品 | 人干人人 | 久久视频精品在线 | 久草在线中文888 | 一区二区三区在线免费观看视频 | 精品乱码一区二区三四区 | 99精品国产一区二区青青牛奶 | 日本一区二区三区在线观看 | 免费一区二区三区 | 亚洲字幕在线观看 | 午夜影院污 | 久久久久久综合 | 精品久久久一区二区 | 国内自拍视频在线观看 | 天天射网站 | 欧美视频二区 | 国产精品网址 | 91亚洲一区 | 欧美一二区|