欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9201|回復: 8
收起左側

單片機用正弦函數(shù)在lcd12864顯示正弦波

  [復制鏈接]
ID:140725 發(fā)表于 2017-3-9 03:40 | 顯示全部樓層 |閱讀模式

一個51單片機程序使用正弦函數(shù)在lcd12864液晶屏上面顯示正弦波

下面是完整代碼下載:
正弦波.rar (1.47 KB, 下載次數(shù): 169)



部分代碼預覽:
  1. #include "reg52.h"
  2. #include "intrins.h"
  3. #include "math.h"

  4. #define unchar unsigned char
  5. #define unint unsigned int
  6. #define dataPort P0
  7. #define Vmax 16
  8. #define freq 60

  9. sbit rs = P3^5;
  10. sbit rw = P3^6;
  11. sbit en = P3^4;

  12. float x,y;
  13. unchar code xian1[]={"峰值16V" };
  14. unchar code xian2[]={"頻率60Hz" };

  15. void delayms(unsigned int n)
  16. {
  17. unsigned char i;
  18. for(;n>0;n--)
  19. for(i=0;i<100;i++);
  20. }

  21. void checkBusy(void)
  22. {
  23. rs=0;
  24. rw=1;
  25. en=1;
  26. dataPort=0xff;
  27. while(dataPort & 0x80);
  28. en=0;
  29. }

  30. void writeCommand(unsigned char cmd)
  31. {
  32. checkBusy();
  33. rs=0;
  34. rw=0;
  35. en=1;
  36. dataPort=cmd;
  37. _nop_();
  38. en=0;
  39. }

  40. void writeData(unsigned char adata)
  41. {
  42. checkBusy();
  43. rs=1;
  44. rw=0;
  45. en=1;
  46. dataPort=adata;
  47. _nop_();
  48. en=0;
  49. }

  50. unsigned char readData(void)
  51. {
  52. unsigned char RData;
  53. dataPort=0xff;
  54. checkBusy();
  55. rs=1;
  56. rw=1;
  57. en=0;
  58. en=1;
  59. RData=dataPort;
  60. en=0;
  61. return RData;
  62. }

  63. void ClrGDRAM(void)
  64. {
  65.         unsigned char x,y;
  66.         for(y=0;y<64;y++)
  67.             for(x=0;x<16;x++)
  68.             {
  69.                         writeCommand(0x34);
  70.             writeCommand(y+0x80);     //行地址  
  71.             writeCommand(x+0x80);     //列地址  
  72.             writeCommand(0x30);
  73.             writeData(0x00);
  74.             writeData(0x00);
  75.         }
  76.         //writeCommand(0x30);
  77. }

  78. void LcmInit(void)
  79. {
  80. writeCommand(0x30);
  81. delayms(50);
  82. writeCommand(0x01);
  83. delayms(50);
  84. writeCommand(0x06);
  85. delayms(50);
  86. writeCommand(0x0c);
  87. ClrGDRAM();
  88. //psb=1;
  89. }

  90. /***********************************************************
  91. 函數(shù)名:  drawPoint
  92. 函數(shù)說明:畫點
  93. 傳入參數(shù):打點位置(x0,y0);color=1,點亮;color=0,擦除
  94. 傳出參數(shù):無
  95. 返回值:  無
  96. **********************************************************/
  97. void drawPoint(unsigned char x,unsigned char y,unsigned char color)
  98. {
  99. unsigned char row,collum,cbite;
  100. unsigned char tempH,tempL;
  101. writeCommand(0x34);
  102. writeCommand(0x36);
  103. collum=x>>4;
  104. cbite=x&0x0f;
  105. if(y<32)
  106.         row=y;
  107. else
  108.         {row=y-32;
  109.         collum+=8;
  110.         }
  111. writeCommand(0x80+row);
  112. writeCommand(0x80+collum);
  113. readData();
  114. tempH=readData();
  115. tempL=readData();
  116. writeCommand(0x80+row);
  117. writeCommand(0x80+collum);
  118. if (color)
  119. {
  120.          if(cbite<8)
  121.          {
  122.          tempH|=(1<<(7-cbite));
  123.          //tempL=(1<<(7-cbite));
  124.          }
  125.          else
  126.          {
  127.          //tempH=(1<<(15-cbite));
  128.          tempL|=(1<<(15-cbite));
  129.          }
  130. }
  131. else
  132. {
  133.            if(cbite<8)
  134.          {
  135.          tempH&=~(1<<(7-cbite));
  136.          //tempL=(1<<(7-cbite));
  137.          }
  138.          else
  139.          {
  140.          //tempH=(1<<(15-cbite));
  141.          tempL&=~(1<<(15-cbite));
  142.          }
  143. }
  144. writeData(tempH);
  145. writeData(tempL);
  146. writeCommand(0x30);
  147. }

  148. /***********************************************************
  149. 函數(shù)名:  drawRowLine
  150. 函數(shù)說明:畫水平線
  151. 傳入參數(shù):(x0,y0),水平線的起點;(x1,y0)水平線的終點
  152.                                 color=1,點亮;color=0,擦除
  153. 傳出參數(shù):無
  154. 返回值:  無
  155. **********************************************************/
  156. void drawRowLine(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char color)
  157. {
  158.     unsigned char  temp;
  159.     if(x0>x1)                                 // 對x0、x1大小進行排列,以便畫圖
  160.     {
  161.         temp = x1;
  162.         x1 = x0;
  163.         x0 = temp;
  164.     }   
  165.     do
  166.     {
  167.         drawPoint(x0, y0, color);        // 逐點顯示,描出垂直線
  168.         x0++;
  169.     }
  170.     while(x1>=x0);
  171. }

  172. /***********************************************************
  173. 函數(shù)名:  drawCollumLine
  174. 函數(shù)說明:畫豎直線
  175. 傳入參數(shù):(x0,y0),豎直線的起點;(x0,y1)豎直線的終點;
  176.                         color=1,點亮;color=0,擦除
  177. 傳出參數(shù):無
  178. 返回值:  無
  179. ************************************************************/
  180. void drawCollumLine(unsigned char x0,unsigned char y0,unsigned char y1,unsigned char color)
  181. {
  182. unsigned char temp;
  183. if(y0>y1)
  184. {
  185.   temp=y0;
  186.   y0=y1;
  187.   y1=temp;
  188. }
  189. while (y0<=y1)
  190. {
  191. drawPoint(x0,y0,color);
  192. y0++;
  193. }
  194. }

  195. //在坐標(x,y)處顯示字符串
  196. void LcmPrint(unsigned char x,unsigned char y,unsigned char *adata)
  197. {
  198. unsigned char address;
  199. unsigned char i=0;
  200. switch (y)
  201. {
  202.   case 0:address=0x80+x;break;
  203.   case 1:address=0x90+x;break;
  204.   case 2:address=0x88+x;break;
  205.   case 3:address=0x98+x;break;
  206.   default:break;
  207. }
  208. writeCommand(address);
  209. while(*(adata+i))
  210. {
  211.         writeData(*(adata+i));
  212.         i++;
  213. }
  214. }

  215. void main()
  216. {
  217.           x=y=0;
  218.         LcmInit();
  219.         drawRowLine(0,31,127,1);
  220.         drawCollumLine(0,0,63,1);
  221.         while(1)
  222.         {
  223.           for(x=0;x<128;x=x+0.05)
  224.           {
  225.            y=Vmax*sin(2*3.14*freq*x);
  226.            drawPoint(x,(y+31),1);       
  227.           }

  228.           LcmPrint(0,3,xian1);
  229.           LcmPrint(4,3,xian2);
  230.         }
  231. }
復制代碼



評分

參與人數(shù) 1黑幣 +10 收起 理由
YJGG + 10 贊一個!

查看全部評分

回復

使用道具 舉報

ID:140183 發(fā)表于 2017-3-9 06:44 | 顯示全部樓層
是示波器嗎?沒有圖片。
回復

使用道具 舉報

ID:151348 發(fā)表于 2017-3-9 10:53 | 顯示全部樓層
不錯,要是有注解和圖片展示就更好了
回復

使用道具 舉報

ID:216187 發(fā)表于 2017-6-30 22:15 | 顯示全部樓層
謝謝,能正常顯示正弦波了
回復

使用道具 舉報

ID:301594 發(fā)表于 2018-4-19 09:52 | 顯示全部樓層
這個顯示不出來啊,
回復

使用道具 舉報

ID:370123 發(fā)表于 2018-7-12 13:17 | 顯示全部樓層
贊一個
回復

使用道具 舉報

ID:370123 發(fā)表于 2018-7-12 13:18 | 顯示全部樓層
贊一個很給力
回復

使用道具 舉報

ID:645619 發(fā)表于 2019-11-21 20:55 | 顯示全部樓層
這個能用
回復

使用道具 舉報

ID:575853 發(fā)表于 2020-1-10 08:34 | 顯示全部樓層
用不了啊,顯示的是陰影的方框
回復

使用道具 舉報

10#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表