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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

msp430單片機AD轉換1602顯示Proteus仿真+代碼

[復制鏈接]
跳轉到指定樓層
樓主
msp430,AD轉換1602顯示仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. /******************************************************************
  2. * 實驗名稱:LCD1602 顯示仿真 (MSP430F249)
  3. *        
  4. * 實驗說明:
  5. *     通設置系統主時鐘(MCLK=8Mhz ) 、輔助時鐘(ACLK=8Mhz )、
  6. *      子系統時鐘(SMCLK=8Mhz )
  7. * 編譯軟件:Embedded Workbench 5.3
  8. *
  9. *仿真軟件:proteus7.7 sp 2
  10. ******************************************************************/

  11. #include <MSP430x24x.h>
  12. #include <string.h>
  13. #define uchar unsigned char
  14. #define uint unsigned int

  15. /**************定義接口************************/
  16. #define LCDIO     P1OUT
  17. #define LCD1602_RS_1  P2OUT|=1  
  18. #define LCD1602_RS_0  P2OUT&=~1
  19. #define LCD1602_RW_1  P2OUT|=2
  20. #define LCD1602_RW_0  P2OUT&=~2
  21. #define LCD1602_EN_1   P2OUT|=4
  22. #define LCD1602_EN_0   P2OUT&=~4

  23. /**************定義函數************************/
  24. void LCD_write_command(unsigned char command);//寫入指令函數
  25. void LCD_write_dat( unsigned char dat);//寫入數據函數
  26. void LCD_set_xy( unsigned char x, unsigned char y );//設置顯示位置函數
  27. void LCD_dsp_char( unsigned char x,unsigned char y, char dat);//顯示一個字符函數
  28. void LCD_dsp_string(unsigned char X,unsigned char Y,const char *s);//顯示字符串函數
  29. void LCD_init(void);//初始化函數
  30. void delay_nms(unsigned int n);//延時函數
  31. /********************************************/
  32. void delayms(uint t)
  33. {
  34.     uint i;
  35.     while(t--)
  36.       for(i=1330;i>0;i--);//進過參數的調整
  37. }
  38. /*******檢查忙函數*************/
  39. void LCD_check_busy()      //實踐證明,在我的LCD1602上,檢查忙指令通過率極低,以
  40. {                                          //至于不能正常使用LCD。因此我沒有再用檢查忙函數。而使

  41.           P1DIR=0x00;
  42.           LCDIO=0xff;
  43.           LCD1602_RS_0;                 //要用200次循環便能完成。   
  44.           LCD1602_RW_1;
  45.           LCD1602_EN_1;
  46.         while(P1IN&0x80);
  47.         LCD1602_EN_0;
  48.         P1OUT=0x00;
  49.         P1DIR=0xFF;
  50. }
  51. /******************************/

  52. /**************寫指令函數********************************/  
  53. void LCD_write_command(unsigned char command)
  54. {
  55.       
  56.         //LCD_check_busy(); //加上這句仿真無法通過
  57.         
  58.         LCD1602_RS_0;   
  59.         LCDIO=command;
  60.         LCD1602_EN_1;
  61.         
  62.         //delayms(1);
  63.         LCD1602_EN_0;
  64.         delayms(1);
  65.   
  66. }
  67. /***************************************************/
  68. /****************寫數據函數************************/
  69. void LCD_write_dat( unsigned char dat)
  70. {
  71.       //LCD_check_busy();  //加上這句仿真無法通過
  72.       LCD1602_RS_1;
  73.       LCDIO=dat;
  74.       LCD1602_EN_1;
  75.       
  76.       //delayms(1);
  77.       LCD1602_EN_0;
  78.       delayms(1);
  79.       LCD1602_RS_0;


  80. }
  81. /****************************************************/
  82. /***************設置顯示位置**************************/
  83. void LCD_set_xy( unsigned char x, unsigned char y )
  84. {
  85. unsigned char address;
  86. if (y == 1)
  87.      address = 0x80+x;
  88. else if (y == 2)
  89. {
  90.         address=0x80+0x40+x;
  91.         
  92. }
  93. LCD_write_command(address);
  94. }
  95. /***************************************************/
  96. /****************顯示一個字符**********************/
  97. void LCD_dsp_char( unsigned char x,unsigned char y, char dat)
  98. {
  99. LCD_set_xy( x, y );
  100. LCD_write_dat(dat);
  101. }
  102. /**********************************************/
  103. /***************顯示字符串函數***************/
  104. void LCD_dsp_string(unsigned char X,unsigned char Y,const char *s)
  105. {
  106.        uchar len,List;
  107.        len=strlen(s);
  108.        LCD_set_xy( X, Y );
  109.        for(List=0;List<len;List++)
  110.        //LCD_dsp_char(X+List,Y,s[List]);
  111.        LCD_write_dat(s[List]);
  112.       
  113. }
  114. /***********************************************/
  115. /********** 延時**********************/
  116. void delay_nms(unsigned int n)      
  117. {
  118.        unsigned int i=0,j=0;
  119.        for (i=n;i>0;i--)
  120.        for (j=0;j<10;j++);  
  121. }
  122. /**************************************/
  123. /************初始化函數****************/
  124. void LCD_init(void)
  125. {
  126.       LCD1602_RW_0;
  127.       LCD1602_EN_0;
  128.       //CLEARSCREEN;//clear screen
  129.       LCD_write_command(0x38);//set 8 bit data transmission mode
  130.       delayms(1);
  131.       LCD_write_command(0x38);//set 8 bit data transmission mode
  132.       delayms(1);
  133.       LCD_write_command(0x38);//set 8 bit data transmission mode
  134.       delayms(1);
  135.       LCD_write_command(0x06);//open display (enable lcd display)
  136.       delayms(1);
  137.       LCD_write_command(0x0C);//set lcd first display address
  138.       delayms(1);
  139.       LCD_write_command(0x01);//clear screen
  140.       delayms(1);
  141.       //LCD_write_command(0x80);//clear screen
  142.       //delayms(1);
  143. }
  144. /****************************************************/


  145. void main(void)
  146. {
  147.    
  148.     WDTCTL=WDTPW + WDTHOLD; // 關閉看門狗
  149.     P1DIR=0xFF;            // 設置方向
  150.     P1SEL=0;            // 設置為普通I/O 口
  151.    
  152.     P2DIR=0xFF;            // 設置方向
  153.     P2SEL=0;            // 設置為普通I/O 口
  154.    
  155.     P2OUT=0x00;
  156.     P1OUT=0x00;
  157.     delayms(200);   
  158.     LCD_init();
  159.    
  160.     while(1)
  161.     {
  162.    
  163.      LCD_dsp_string(1,1,"  LCD TEST   ");//在第一行第一列顯示"LCD TEST"
  164.      LCD_dsp_string(1,2,"  SUCCSEEE!  ");//在第一行第一列顯示"LCD TEST"
  165.      _BIS_SR(LPM0_bits+ GIE);//進入低功耗睡眠模式  
  166.     }

  167.    
  168. }
復制代碼

所有資料51hei提供下載:
LCD1602.rar (243.5 KB, 下載次數: 59)


評分

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

查看全部評分

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

使用道具 舉報

來自 2#
ID:304785 發表于 2019-5-26 23:53 | 只看該作者
這篇帖子大家千萬別下,這根本實現不了AD采集,僅僅是一個液晶的測試程序。強烈建議站長給刪掉~!!!!

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:547542 發表于 2019-5-26 14:47 | 只看該作者

謝謝樓主分享! ......
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 麻豆久久 | 在线观看成人小视频 | 一级黄片一级毛片 | 亚洲精品在线免费观看视频 | 一区二区三区视频在线观看 | 日韩国产欧美视频 | 日日骚视频 | 亚洲区一区二区 | 欧美精品成人一区二区三区四区 | 欧美精品被 | 国产精品一区二区视频 | 免费av直接看 | 午夜99 | 欧美一级大片 | 欧美视频三区 | 国产精品久久久久久久久久 | 国产一区二区小视频 | 久久久久九九九九 | 日本高清中文字幕 | 欧美在线观看一区 | 日日操夜夜操天天操 | 久久精品国产一区二区电影 | 玖玖国产精品视频 | 欧美一区二不卡视频 | 久久久久国产一区二区三区 | 成人在线小视频 | 亚洲精品成人av久久 | 欧美日高清 | 日韩亚洲视频在线 | 污书屋| 97精品超碰一区二区三区 | 亚洲人成在线播放 | 国产在线区 | 在线播放中文 | 欧美日韩精品 | 国产精品高潮呻吟久久久久 | a级在线观看 | 波多野结衣一二三区 | 国产精品高清在线 | 成人av电影在线 | 四虎影院免费在线播放 |