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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機串口打印調試程序PROTEUS模擬

[復制鏈接]
跳轉到指定樓層
樓主
我用PROTEUS模擬了郭天祥師傅書上的串口打印應用實例,涉及串口通訊,數碼管實時顯示。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<stdio.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. sbit dula=P2^6;
  7. sbit wela=P2^7;
  8. sbit adwr=P3^6;
  9. sbit adrd=P3^7;
  10. sbit CSAD=P2^5;
  11. uchar flag, a;
  12. uchar flag_uart, flag_time, flag_on, a, i, t0_num, ad_val;
  13. float ad_vo;
  14. uchar code table[]={0x3f, 0x06, 0x5b, 0x4f,
  15.                                                                                 0x66, 0x6d, 0x7d, 0x07,
  16.                                                                                 0x7f, 0x6f, 0x77, 0x7c,
  17.                                                                                 0x39, 0x5e, 0x79, 0x71};
  18. void delayms(uint xms)
  19. {
  20.         uint i, j;
  21.         for(i=xms; i>0; i--)
  22.                 for(j=110; j>0; j--);
  23. }

  24. void init()
  25. {
  26.         TMOD=0x21;
  27.         TH0=(65536-50000)/256;
  28.         TL0=(65536-50000)%256;
  29.         TH1=0xfd;
  30.         TL1=0xfd;
  31.         TR1=1;
  32.         ET0=1;
  33.         SM0=0;
  34.         SM1=1;
  35.         REN=1;
  36.         EA=1;
  37.         ES=1;
  38.         CSAD=0;
  39. }

  40. void display(uchar value)
  41. {
  42.         uchar bai, shi, ge;
  43.         bai=value/100;
  44.         shi=value%100/10;
  45.         ge=value%10;
  46.        
  47.         dula=1;
  48.         P0=table[bai];
  49.         dula=0;
  50.         P0=0xff;
  51.         wela=1;
  52.         P0=0x7e;
  53.         wela=0;
  54.         delayms(5);
  55.         P0=0xff;
  56.         wela=1;
  57.         wela=0;
  58.         dula=1;
  59.         P0=table[shi];
  60.         dula=0;
  61.         P0=0xff;
  62.         wela=1;
  63.         P0=0x7d;
  64.         wela=0;
  65.         delayms(5);
  66.         P0=0xff;
  67.         wela=1;
  68.         wela=0;
  69.         dula=1;
  70.         P0=table[ge];
  71.         dula=0;
  72.         P0=0xff;
  73.         wela=1;
  74.         P0=0x7b;
  75.         wela=0;
  76.         delayms(5);
  77.         P0=0xff;
  78.         wela=1;
  79.         wela=0;
  80. }

  81. uchar get_ad()
  82. {
  83.         uchar adval;
  84.         adwr=1;
  85.         _nop_();
  86.         adwr=0;
  87.         _nop_();
  88.         adwr=1;
  89.         P1=0xff;
  90.         adrd=1;
  91.         _nop_();
  92.         adrd=0;
  93.         _nop_();
  94.         adval=P1;
  95.         adrd=1;
  96.         return adval;
  97. }

  98. void main()
  99. {
  100.         init();
  101.         wela=1;
  102.         P0=0x7f;
  103.         wela=0;
  104.         while(1)
  105.         {
  106.                 if(flag_uart==1)
  107.                 {
  108.                         flag_uart=0;
  109.                         ES=0;
  110.                         TI=1;
  111.                         switch(flag_on)
  112.                         {
  113.                                 case 0: puts("Turn on ad!\n");
  114.                                                                 TR0=1;
  115.                                                                 break;
  116.                                 case 1: printf("Turn off ad!\n");
  117.                                                                 TR0=0;
  118.                                                                 break;
  119.                                 case 2: puts("Error!\n");
  120.                                                                 break;
  121.                         }
  122.                         while(!TI);
  123.                         TI=0;
  124.                         ES=1;
  125.                 }
  126.                 if(flag_time==1)
  127.                 {
  128.                         flag_time=0;
  129.                         ad_val=get_ad();
  130.                         ad_vo=(float)ad_val*5.0/256.0;
  131.                         ES=0;
  132.                         TI=1;
  133.                         printf("The voltage is %fv\n", ad_vo);
  134.                         while(!TI);
  135.                         TI=0;
  136.                         ES=1;
  137.                 }
  138.                 display(ad_val);
  139.         }
  140. }

  141. void timer0() interrupt 1
  142. {
  143.         TH0=(65536-50000)/256;
  144.         TL0=(65536-50000)%256;
  145. ……………………

  146. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
新建文件夾.rar (204.63 KB, 下載次數: 35)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 女同久久另类99精品国产 | 日韩二区 | 亚洲福利一区二区 | av中文天堂| av片在线观看| 久久精品综合 | 国产精品久久久久久吹潮 | 日本在线免费视频 | 久久综合影院 | 国产精品久久久久久久久久免费 | 午夜av毛片 | 蜜桃臀av一区二区三区 | 操操日 | 欧美一区二区三区电影 | 成人伊人网 | 国产丝袜一区二区三区免费视频 | 中文字幕日韩欧美一区二区三区 | 精品国产一级片 | 在线免费毛片 | 一区二区视频在线 | 超碰97人人人人人蜜桃 | 欧美日韩国产在线观看 | 国产精品爱久久久久久久 | 国产精品国产精品国产专区不片 | 久久综合爱| 美女啪啪国产 | 日本免费视频在线观看 | 龙珠z在线观看 | 日韩在线精品视频 | 欧美在线日韩 | 欧美在线一区二区三区 | 亚洲成人三区 | 理论片免费在线观看 | 午夜精品久久久久久久久久久久久 | 国产精品美女久久久久aⅴ国产馆 | 欧美精品欧美精品系列 | 精品亚洲一区二区三区 | 99热精品久久 | 91偷拍精品一区二区三区 | 久久午夜视频 | 四虎影视一区二区 |