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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

時鐘,計算器與溫度顯示的綜合實現

[復制鏈接]
跳轉到指定樓層
樓主
這是學校的一次單片機實驗要求,自己修改的程序,可以實現時鐘,計算器與溫度在1602顯示,附件包含原始keil程序及proteus仿真。希望大家能夠采納。
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit DSPORT=P3^7;
  6. void Delay1ms(uint );
  7. uchar Ds18b20Init();
  8. void Ds18b20WriteByte(uchar com);
  9. uchar Ds18b20ReadByte();
  10. void  Ds18b20ChangTemp();
  11. void  Ds18b20ReadTempCom();
  12. int Ds18b20ReadTemp();
  13. #define LCD1602_DATAPINS P2
  14. sbit lcde=P1^4;
  15. sbit w=P1^5;
  16. sbit rs=P1^6;
  17. void Lcd1602_Delay1ms(uint c);   //誤差 0us
  18. void LcdWriteCom(uchar com);         
  19. void LcdWriteData(uchar dat);
  20. void wendu();        
  21. void LcdInit();
  22. void LcdDisplay(int);
  23. void init_jsq();
  24. void init_sz();
  25. void write_data(uchar date);
  26. void delay(uint z);
  27. void write_com(uchar com);
  28. void write_sfm(uchar add,uchar date);


  29. sbit k1=P3^3;
  30. sbit k2=P3^4;
  31. sbit k3=P3^5;
  32. uchar num,count,k1num,miao1,miao2,ki;
  33. char miao,fen,shi;
  34. uchar code table2[]=" 2018-12-10 SAT" ;
  35. uchar code table21[]=" 00:00:00";


  36. char i,j,temp,num_1;
  37. long a,a1,a2,b,b1,b2,c,c1,c2;//a,第一個數 b第二個數  c第三個數
  38. uchar flag1,fuhao; //flag1表示是否有符號按下,fuhao表示按下哪個符號
  39. uchar code table[]={
  40.                                         1,2,3,0,
  41.                                         4,5,6,0,
  42.                                         7,8,9,0,
  43.                                         0,0,0,0,
  44.                                         };
  45. uchar code table1[]={
  46.                                          1,2,3,0x2f-0x30,
  47.                                          4,5,6,0x2a-0x30,
  48.                                          7,8,9,0x2d-0x30,
  49.                                          0x01-0x30,0,0x3d-0x30,0x2b-0x30,                                       
  50.                                         };
  51. void jisuanqi();
  52. void shizhong();
  53. sbit ky1=P3^2;
  54. sbit d1=P0^0;
  55. sbit d2=P0^1;
  56. sbit d3=P0^2;
  57. void main()
  58. {

  59.         
  60.                 i=50;
  61.                 ki=0;
  62.         while(1)
  63.         {
  64.                 if(ky1==0)
  65.                 {
  66.                         while(ky1==0);
  67.                         ki++;
  68.                 }
  69.                                 
  70.                 if(ki>5)
  71.                 {
  72.                         ki=0;
  73.                 }
  74.                
  75. ///////////溫度//////////////////               
  76.                 if(ki==0)
  77.                 {
  78.                         LcdInit();
  79.                         LcdWriteCom(0x88);        //寫地址 80表示初始地址
  80.                         LcdWriteData('C');
  81.                         if(ki==0)
  82.                         {
  83.                                 ki++;
  84.                         }
  85.                 }
  86.                
  87.                 if(ki==1)
  88.                         {
  89.                                 d1=0;
  90.                                 d2=1;
  91.                                 d3=1;
  92.                                 wendu();
  93.                         }
  94.                         
  95.                         
  96. ////////////計算器////////////////
  97.                 if(ki==2)
  98.                 {
  99.                         init_jsq();
  100.                         if(ki==2)
  101.                         {
  102.                                 ki++;
  103.                         }
  104.                 }        
  105.                         if(ki==3)
  106.                         {
  107.                                 d1=1;
  108.                                 d2=0;
  109.                                 d3=1;
  110.                                 jisuanqi();               
  111.                         }
  112.                         
  113. //////////時鐘////////////////
  114.                 if(ki==4)
  115.                 {
  116.                         init_sz(); //初始化
  117.                         for(num=0;num<16;num++)
  118.                         {
  119.                                 write_data(table2[num]);
  120.                                 delay(5);
  121.                         }

  122.                         write_com(0x80+0x40); //開始時第二行顯s
  123.                         for(num=0;num<10;num++)
  124.                         {
  125.                                 write_data(table21[num]);
  126.                                 delay(5);
  127.                         }
  128.                         if(ki==4)
  129.                         {
  130.                                 ki++;
  131.                         }
  132.                         
  133.                         write_sfm(2,shi);
  134.                         write_sfm(5,fen);
  135.                         write_sfm(8,miao);
  136.                 }
  137.                
  138.                         if(ki==5)
  139.                         {
  140.                                 d1=1;
  141.                                 d2=1;
  142.                                 d3=0;
  143.                                 shizhong();
  144.                         }

  145.         }
  146. }

  147. void wendu()
  148. {
  149.                 LcdDisplay(Ds18b20ReadTemp());
  150. }
  151. void LcdDisplay(int temp)          //lcd顯示
  152. {
  153.    
  154.   unsigned char datas[] = {0, 0, 0, 0, 0}; //定義數組
  155.         float tp;  
  156.         if(temp< 0)                                //當溫度值為負數
  157.           {
  158.                   LcdWriteCom(0x80);                //寫地址 80表示初始地址
  159.             LcdWriteData('-');                  //顯示負
  160.                 temp=temp-1;
  161.                 temp=~temp;
  162.                 tp=temp;
  163.                 temp=tp*0.0625*100+0.5;        
  164.           }
  165.          else
  166.           {                        
  167.                   LcdWriteCom(0x80);                //寫地址 80表示初始地址
  168.             LcdWriteData('+');                 //顯示正
  169.                 tp=temp;//因為數據處理有小數點所以將溫度賦給一個浮點型變量
  170.                 temp=tp*0.0625*100+0.5;        
  171.         }
  172.         datas[0] = temp / 10000;
  173.         datas[1] = temp % 10000 / 1000;
  174.         datas[2] = temp % 1000 / 100;
  175.         datas[3] = temp % 100 / 10;
  176.         datas[4] = temp % 10;

  177.         LcdWriteCom(0x82);                  //寫地址 80表示初始地址
  178.         LcdWriteData('0'+datas[0]); //百位
  179.         
  180.         LcdWriteCom(0x83);                 //寫地址 80表示初始地址
  181.         LcdWriteData('0'+datas[1]); //十位

  182.         LcdWriteCom(0x84);                //寫地址 80表示初始地址
  183.         LcdWriteData('0'+datas[2]); //個位

  184.         LcdWriteCom(0x85);                //寫地址 80表示初始地址
  185.         LcdWriteData('.');                 //顯示 ‘.’

  186.         LcdWriteCom(0x86);                 //寫地址 80表示初始地址
  187.         LcdWriteData('0'+datas[3]); //顯示小數點  

  188.         LcdWriteCom(0x87);                 //寫地址 80表示初始地址
  189.         LcdWriteData('0'+datas[4]); //顯示小數點  
  190. }
  191.         
  192. void Delay1ms(uint y)
  193. {
  194.         uint x;
  195.         for( ; y>0; y--)
  196.         {
  197.                 for(x=110; x>0; x--);
  198.         }
  199. }
  200. uchar Ds18b20Init()
復制代碼

原理圖: 無
仿真: 無
代碼: 時鐘·溫度顯示及計算器.7z (267.79 KB, 下載次數: 44)

IMG_20181228_125845.jpg (2.93 MB, 下載次數: 71)

IMG_20181228_125845.jpg

IMG_20181228_125803.jpg (2.5 MB, 下載次數: 69)

IMG_20181228_125803.jpg

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:375715 發表于 2019-4-28 11:55 來自手機 | 只看該作者
謝謝分享
回復

使用道具 舉報

板凳
ID:663849 發表于 2019-12-20 16:48 | 只看該作者
Thanks♪(・ω・)ノ
回復

使用道具 舉報

地板
ID:670923 發表于 2019-12-23 09:16 | 只看該作者
謝謝大佬
回復

使用道具 舉報

5#
ID:752144 發表于 2020-6-26 16:06 | 只看該作者
非常好!很實用!
回復

使用道具 舉報

6#
ID:787742 發表于 2020-6-27 11:44 | 只看該作者
感謝樓主
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久一区二区三区 | 中文av网站 | 影音先锋中文字幕在线观看 | 在线免费国产视频 | 精品国产伦一区二区三区观看体验 | 日韩精品一区二区三区中文在线 | 国产在线观看一区二区 | 亚洲一区二区三区在线 | 91xxx在线观看 | 99九色 | 免费毛片网 | 亚洲综合视频 | 亚洲 欧美 激情 另类 校园 | www国产成人免费观看视频 | 天天躁天天操 | 中文字幕一区二区三区精彩视频 | 国产二区精品视频 | 国产免费让你躁在线视频 | av在线免费观看网站 | 色播av| 中文字幕一区二区三区四区不卡 | 伊人狼人影院 | 欧美日韩视频 | a级性视频 | 一级黄色毛片 | 99精品在线 | 亚洲中午字幕 | 免费永久av| 午夜av电影 | 国产精品美女在线观看 | 中文天堂在线一区 | 久久国产精品99久久久大便 | 综合色在线 | 91精品国产综合久久香蕉麻豆 | 国产日韩欧美一区 | 亚洲天堂av在线 | 欧美一区免费 | 欧美精品一区二区三区视频 | 麻豆久久精品 | 一区二区三区四区电影视频在线观看 | 欧美极品在线视频 |