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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3137|回復: 1
收起左側

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

[復制鏈接]
ID:808634 發表于 2020-8-25 15:29 | 顯示全部樓層 |閱讀模式
代碼+仿真
圖片1.png

單片機源程序如下:
  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)
回復

使用道具 舉報

ID:284050 發表于 2020-9-5 13:55 | 顯示全部樓層
void hc595(unsigned int value)

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久草| 国产在线二区 | 美女艹b | 亚洲精品一区二区三区中文字幕 | 欧美在线一区二区视频 | 91在线看| 久久999 | 97免费视频在线观看 | 成人免费淫片aa视频免费 | 中文字幕日韩欧美 | 久久国产精品-久久精品 | www.887色视频免费 | 欧美日韩不卡 | 99热精品在线 | 好姑娘高清在线观看电影 | 国产a区| 免费一区二区三区在线视频 | 亚洲精品国产第一综合99久久 | 国产精品视频观看 | 欧美亚洲国产一区二区三区 | 国内精品视频免费观看 | 亚洲一区二区电影在线观看 | 国产精品美女www | 亚洲天堂久久 | 欧美一区2区三区3区公司 | 羞羞色影院| 久久精品国产一区二区电影 | 欧美最猛性xxxxx亚洲精品 | 国产人成精品一区二区三 | 国产视频1区 | 69视频在线播放 | 91精品国产91久久综合桃花 | 日韩第1页| 成人性视频免费网站 | 亚洲福利网 | 99reav | 岛国午夜 | 性视频网| 精品国产不卡一区二区三区 | 一级黄色日本片 | 一道本视频 |