找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1219|回复: 3
打印 上一主题 下一主题
收起左侧

单片机程序想加一个变量显示传感器数据,不知道怎么弄

[复制链接]
跳转到指定楼层
楼主
ID:564944 发表于 2019-8-6 09:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如果传感器收集到数据,应该怎么显示出来?

程序:
  1. #include <reg52.H>
  2. #include <intrins.h>


  3. sbit lcd_sclk=P3^2;
  4. sbit lcd_sid=P3^1;
  5. sbit lcd_rs=P3^0;
  6. sbit lcd_reset=P1^0;
  7. sbit lcd_cs1=P1^1;
  8. sbit Rom_IN=P1^2;
  9. sbit Rom_OUT=P1^3;
  10. sbit Rom_SCK=P1^4;
  11. sbit Rom_CS=P1^5;
  12. sbit key1=P2^0;
  13. sbit key2=P2^1;
  14. sbit key3=P2^2;


  15. #define uchar unsigned char
  16. #define uint unsigned int
  17. #define ulong unsigned long
  18. //*******************************************字符库*******************************************************************************************************************
  19. uchar code bmp1[];
  20. uchar code dang[]={0x10,0x10,0xd0,0xff,0x90,0x10,0x40,0x42,0x5c,0x40,0x7f,0x40,0x50,0xce,0x00,0x00,0x04,0x03,0x00,0xff,0x00,0x01,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0xff,0x00,0x00

  21. };

  22. uchar code su[]={0x40,0x40,0x42,0xcc,0x00,0x04,0xf4,0x94,0x94,0xff,0x94,0x94,0xf4,0x04,0x00,0x00,0x00,0x40,0x20,0x1f,0x20,0x48,0x44,0x42,0x41,0x5f,0x41,0x42,0x44,0x48,0x40,0x00
  23. };
  24. uchar code maohao[]={
  25.         0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00};
  26. uchar code bianliang[]={
  27.         0x00,0x00,0x20,0xEC, 0xEC,0x00,0x00,0x00, 0x00,0x00,0x08,0x0F, 0x0F,0x08,0x00,0x00};
  28. uchar code du[]={0x00,0x00,0xfc,0x24,0x24,0x24,0xfc,0x25,0x26,0x24,0xfc,0x24,0x24,0x24,0x04,0x00,0x40,0x30,0x8f,0x80,0x84,0x4c,0x55,0x25,0x25,0x25,0x55,0x4c,0x80,0x80,0x80,0x00
  29. };
  30. uchar code zhi[]={0x10,0x10,0x10,0xff,0x10,0x90,0x00,0x3f,0x48,0x48,0x44,0x44,0x44,0x42,0x70,0x00,0x04,0x44,0x82,0x7f,0x01,0x00,
  31.         0x00,0xff,0x49,0x49,0x49,0x49,0x49,0xff,0x00,0x00};
  32. uchar code ding[]={0x10,0x0c,0x44,0x44,0x44,0x44,0x45,0xc6,0x44,0x44,0x44,0x44,0x44,0x14,0x0c,0x00,0x80,0x40,0x20,0x1e,0x20,0x40,0x40,0x7f,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00
  33. };
  34. uchar code ju[]={0x00,0x3e,0x22,0xe2,0x22,0x3e,0x00,0xfe,0x22,0x22,0x22,0x22,0x22,0xe2,0x02,0x00,0x20,0x3f,0x20,0x1f,0x11,0x11,0x00,0x7f,0x44,0x44,0x44,0x44,0x44,0x47,0x40,0x00
  35. };
  36. uchar code li[]={0x04,0x04,0x04,0xf4,0x84,0xd4,0xa5,0xa6,0xa4,0xd4,0x84,0xf4,0x04,0x04,0x04,0x00,0x00,0xfe,0x02,0x02,0x12,0x3a,0x16,0x13,0x12,0x1a,0x32,0x42,0x82,0x7e,0x00,0x00
  37. };
  38. uchar code zhuan[]={0xc8,0xb8,0x8f,0xe8,0x88,0x88,0x40,0x48,0x48,0xe8,0x5f,0x48,0x48,0x48,0x40,0x00,0x08,0x18,0x08,0xff,0x04,0x04,0x00,0x02,0x0b,0x12,0x22,0xd2,0x0a,0x06,0x00,0x00
  39. };
  40. uchar code xing[]={0x00,0x10,0x88,0xc4,0x33,0x00,0x40,0x42,0x42,0x42,0xc2,0x42,0x42,0x42,0x40,0x00,0x02,0x01,0x00,0xff,0x00,0x00,0x00,0x00,0x40,0x80,0x7f,0x00,0x00,0x00,0x00,0x00
  41. };
  42. uchar code shi[]={0x02,0xfa,0x82,0x82,0xfe,0x80,0x00,0xf8,0x08,0x08,0xff,0x08,0x08,0xf8,0x00,0x00,0x08,0x18,0x48,0x84,0x44,0x3f,0x80,0x41,0x25,0x19,0x1f,0x21,0x41,0x81,0x80,0x00
  43. };
  44. uchar code zero[]={0xF8,0xF8,0x0C,0xC4, 0x0C,0xF8,0xF0,0x00, 0x03,0x07,0x0C,0x08, 0x0C,0x07,0x03,0x00};
  45. uchar code one[]={0x00,0x10,0x18,0xFC, 0xFC,0x00,0x00,0x00, 0x00,0x08,0x08,0x0F, 0x0F,0x08,0x08,0x00};
  46. uchar code two[]={0x08,0x0C,0x84,0xC4, 0x64,0x3C,0x18,0x00, 0x0E,0x0F,0x09,0x08, 0x08,0x0C,0x0C,0x00};
  47. uchar code three[]={0x08,0x0C,0x44,0x44, 0x44,0xFC,0xB8,0x00, 0x04,0x0C,0x08,0x08, 0x08,0x0F,0x07,0x00};
  48. uchar code five[]={0x7C,0x7C,0x44,0x44, 0x44,0xC4,0x84,0x00, 0x04,0x0C,0x08,0x08, 0x08,0x0F,0x07,0x00};
  49. uchar code seven[]={0x0C,0x0C,0x04,0x84, 0xC4,0x7C,0x3C,0x00, 0x00,0x00,0x0F,0x0F, 0x00,0x00,0x00,0x00};
  50. uchar code r[]={0x20,0xE0,0xC0,0x60, 0x20,0xE0,0xC0,0x00, 0x08,0x0F,0x0F,0x08, 0x00,0x00,0x00,0x00};
  51. uchar code chu[]={0x00,0x00,0x00,0x80, 0xC0,0x60,0x30,0x00, 0x0C,0x06,0x03,0x01, 0x00,0x00,0x00,0x00};
  52. uchar code s[]={0x40,0xE0,0xA0,0x20, 0x20,0x60,0x40,0x00, 0x04,0x0C,0x09,0x09, 0x0B,0x0E,0x04,0x00};
  53. uchar code mi[]={0xE0,0xE0,0x60,0xC0, 0x60,0xE0,0xC0,0x00, 0x0F,0x0F,0x00,0x07, 0x00,0x0F,0x0F,0x00};
  54. uchar code c[]={0xC0,0xE0,0x20,0x20, 0x20,0x60,0x40,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0C,0x04,0x00};
  55. uchar code point[]={0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0C, 0x0C,0x00,0x00,0x00};
  56. //**************************************************************************************************************************************************************************

  57. //***************************************************************************************************************************************************************************
  58. //数字库
  59. //0xF8,0xF8,0x0C,0xC4, 0x0C,0xF8,0xF0,0x00, 0x03,0x07,0x0C,0x08, 0x0C,0x07,0x03,0x00,  //-0-   
  60. //0x00,0x10,0x18,0xFC, 0xFC,0x00,0x00,0x00, 0x00,0x08,0x08,0x0F, 0x0F,0x08,0x08,0x00,  //-1-
  61. //0x08,0x0C,0x84,0xC4, 0x64,0x3C,0x18,0x00, 0x0E,0x0F,0x09,0x08, 0x08,0x0C,0x0C,0x00,  //-2-
  62. //0x08,0x0C,0x44,0x44, 0x44,0xFC,0xB8,0x00, 0x04,0x0C,0x08,0x08, 0x08,0x0F,0x07,0x00,  //-3-

  63. //0xC0,0xE0,0xB0,0x98, 0xFC,0xFC,0x80,0x00, 0x00,0x00,0x00,0x08, 0x0F,0x0F,0x08,0x00,  //-4-   
  64. //0x7C,0x7C,0x44,0x44, 0x44,0xC4,0x84,0x00, 0x04,0x0C,0x08,0x08, 0x08,0x0F,0x07,0x00,  //-5-
  65. //0xF0,0xF8,0x4C,0x44, 0x44,0xC0,0x80,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0F,0x07,0x00,  //-6-
  66. //0x0C,0x0C,0x04,0x84, 0xC4,0x7C,0x3C,0x00, 0x00,0x00,0x0F,0x0F, 0x00,0x00,0x00,0x00,  //-7-
  67. //0xB8,0xFC,0x44,0x44, 0x44,0xFC,0xB8,0x00, 0x07,0x0F,0x08,0x08, 0x08,0x0F,0x07,0x00,  //-8-
  68. //0x38,0x7C,0x44,0x44, 0x44,0xFC,0xF8,0x00, 0x00,0x08,0x08,0x08, 0x0C,0x07,0x03,0x00  //-9-
  69. //};
  70. //******************************************************************************************************************************
  71. void delay(int n_ms)
  72. {
  73. int j,k;
  74. for(j=0;j<n_ms;j++)
  75. for(k=0;k<110;k++);
  76. }




  77. void delay_us(int n_us)
  78. {
  79. int j,k;
  80. for(j=0;j<n_us;j++)
  81. for(k=0;k<1;k++);
  82. }



  83. void transfer_command_lcd(int data1) //写指令
  84. {
  85. char i;
  86. lcd_cs1=0;
  87. lcd_rs=0;
  88. for(i=0;i<8;i++)
  89. {
  90. lcd_sclk=0;

  91. if(data1&0x80) lcd_sid=1;
  92. else lcd_sid=0;
  93. lcd_sclk=1;

  94. data1=data1<<=1;
  95. }
  96. lcd_cs1=1;
  97. }

  98. void transfer_data_lcd(int data1) //写数据
  99. {
  100. char i;
  101. lcd_cs1=0;
  102. lcd_rs=1;
  103. for(i=0;i<8;i++)
  104. {
  105. lcd_sclk=0;
  106. if(data1&0x80) lcd_sid=1;
  107. else lcd_sid=0;
  108. lcd_sclk=1;
  109. data1=data1<<=1;
  110. }
  111. lcd_cs1=1;
  112. }

  113. void initial_lcd()
  114. {
  115. lcd_reset=0;  
  116. delay(100);
  117. lcd_reset=1;
  118. delay(100);
  119. transfer_command_lcd(0xe2);  
  120. delay(5);
  121. transfer_command_lcd(0x2c);
  122. delay(50);
  123. transfer_command_lcd(0x2e);
  124. delay(50);
  125. transfer_command_lcd(0x2f);
  126. delay(5);
  127. transfer_command_lcd(0x23);  
  128. transfer_command_lcd(0x81);  
  129. transfer_command_lcd(0x28);
  130. transfer_command_lcd(0xa2);  
  131. transfer_command_lcd(0xc8);  
  132. transfer_command_lcd(0xa0);  
  133. transfer_command_lcd(0x40);
  134. transfer_command_lcd(0xaf);  
  135. }
  136. void lcd_address(uint page,uint column)
  137. {
  138. column=column-0x01;
  139. transfer_command_lcd(0xb0+page-1);
  140. transfer_command_lcd(0x10+(column>>4&0x0f));
  141. transfer_command_lcd(column&0x0f);  
  142. }

  143. void clear_screen()
  144. {
  145. unsigned char i,j;
  146. for(i=0;i<9;i++)
  147. {
  148. transfer_command_lcd(0xb0+i);
  149. transfer_command_lcd(0x10);
  150. transfer_command_lcd(0x00);
  151. for(j=0;j<132;j++)
  152. {
  153. transfer_data_lcd(0x00);
  154. }
  155. }
  156. }

  157. void display_128x64(uchar *dp)
  158. {
  159. uint i,j;
  160. for(j=0;j<8;j++)
  161. {
  162. lcd_address(j+1,1);
  163. for (i=0;i<128;i++)
  164. {
  165. transfer_data_lcd(*dp);
  166. dp++;
  167. }
  168. }
  169. }

  170. void display_graphic_16x16(uchar page,uchar column,uchar *dp)
  171. {
  172. uint i,j;
  173. for(j=0;j<2;j++)
  174. {
  175. lcd_address(page+j,column);
  176. for (i=0;i<16;i++)
  177. {
  178. transfer_data_lcd(*dp);
  179. dp++;
  180. }
  181. }
  182. }

  183. void display_graphic_8x16(uchar page,uchar column,uchar *dp)
  184. {
  185. uint i,j;
  186. for(j=0;j<2;j++)
  187. {
  188. lcd_address(page+j,column);
  189. for (i=0;i<8;i++)
  190. {
  191. transfer_data_lcd(*dp);
  192. dp++;
  193. }
  194. }
  195. }
  196. void display_graphic_5x8(uchar page,uchar column,uchar *dp)
  197. {
  198. uint i;
  199. lcd_address(page,column);
  200. for (i=0;i<6;i++)
  201. {
  202. transfer_data_lcd(*dp);
  203. dp++;
  204. }
  205. }
  206. void send_command_to_ROM( uchar datu )
  207. {
  208. uchar i;
  209. for(i=0;i<8;i++ )
  210. {
  211. Rom_SCK=0;
  212. delay_us(10);
  213. if(datu&0x80)Rom_IN = 1;
  214. else Rom_IN = 0;
  215. datu = datu<<1;
  216. Rom_SCK=1;
  217. delay_us(10);
  218. }
  219. }
  220. static uchar get_data_from_ROM( )
  221. {
  222. uchar i;
  223. uchar ret_data=0;
  224. for(i=0;i<8;i++)
  225. {
  226. Rom_OUT=1;
  227. Rom_SCK=0;
  228. ret_data=ret_data<<1;
  229. if( Rom_OUT )
  230. ret_data=ret_data+1;
  231. else
  232. ret_data=ret_data+0;
  233. Rom_SCK=1;
  234. }
  235. return(ret_data);
  236. }
  237. void get_and_write_16x16(ulong fontaddr,uchar page,uchar column)
  238. {
  239. uchar i,j,disp_data;
  240. Rom_CS = 0;
  241. send_command_to_ROM(0x03);
  242. send_command_to_ROM((fontaddr&0xff0000)>>16);
  243. send_command_to_ROM((fontaddr&0xff00)>>8);
  244. send_command_to_ROM(fontaddr&0xff);
  245. for(j=0;j<2;j++)
  246. {
  247. lcd_address(page+j,column);
  248. for(i=0; i<16; i++ )
  249. {
  250. disp_data=get_data_from_ROM();
  251. transfer_data_lcd(disp_data);
  252. }
  253. }
  254. Rom_CS=1;
  255. }
  256. void get_and_write_8x16(ulong fontaddr,uchar page,uchar column)
  257. {
  258. uchar i,j,disp_data;
  259. Rom_CS = 0;
  260. send_command_to_ROM(0x03);
  261. send_command_to_ROM((fontaddr&0xff0000)>>16);  
  262. send_command_to_ROM((fontaddr&0xff00)>>8);
  263. send_command_to_ROM(fontaddr&0xff);
  264. for(j=0;j<2;j++)
  265. {
  266. lcd_address(page+j,column);
  267. for(i=0; i<8; i++ )
  268. {
  269. disp_data=get_data_from_ROM();
  270. transfer_data_lcd(disp_data);
  271. }
  272. }
  273. Rom_CS=1;
  274. }
  275. void get_and_write_5x8(ulong fontaddr,uchar page,uchar column)
  276. {
  277. uchar i,disp_data;
  278. Rom_CS = 0;
  279. send_command_to_ROM(0x03);
  280. send_command_to_ROM((fontaddr&0xff0000)>>16);  
  281. send_command_to_ROM((fontaddr&0xff00)>>8);
  282. send_command_to_ROM(fontaddr&0xff);
  283. lcd_address(page,column);
  284. for(i=0; i<5; i++ )
  285. {
  286. disp_data=get_data_from_ROM();
  287. transfer_data_lcd(disp_data);
  288. }
  289. Rom_CS=1;
  290. }
  291. //*************************************************************************************************************************
  292. ulong  fontaddr=0;
  293. void display_GB2312_string(uchar page,uchar column,uchar *text)
  294. {
  295.         uchar i= 0;
  296.         while((text[i]>0x00))
  297.                 {  
  298.                         if(((text[i]>=0xb0) &&(text[i]<=0xf7))&&(text[i+1]>=0xa1))
  299.                                 {         
  300.                                         fontaddr = (text[i]- 0xb0)*94;
  301.                                         fontaddr += (text[i+1]-0xa1)+846;   
  302.                                         fontaddr = (ulong)(fontaddr*32);

  303.    get_and_write_16x16(fontaddr,page,column);
  304.           i+=2;   
  305.                 column+=16;   }
  306.                                 else if(((text[i]>=0xa1) &&(text[i]<=0xa3))&&(text[i+1]>=0xa1))   
  307.                                         {         
  308.                                                 fontaddr = (text[i]- 0xa1)*94;   
  309.                                                 fontaddr += (text[i+1]-0xa1);   
  310.                                                 fontaddr = (ulong)(fontaddr*32);   
  311.                                                 get_and_write_16x16(fontaddr,page,column);  
  312.                                         i+=2;   
  313.                                         column+=16;
  314.                                         }   
  315.                                         else if((text[i]>=0x20) &&(text[i]<=0x7e))
  316.                                                 {           
  317.                                                         fontaddr = (text[i]- 0x20);  
  318.                                                         fontaddr = (unsigned long)(fontaddr*16);
  319.                                                         fontaddr = (unsigned long)(fontaddr+0x3cf80);   

  320.                 get_and_write_8x16(fontaddr,page,column);
  321.                 i+=1;   
  322.                 column+=8;   
  323.                                                 }   
  324.                                                         else
  325.                                                                 i++;
  326.                         }  
  327. }


  328. void display_string_5x8(uchar page,uchar column,uchar *text)
  329. {
  330. unsigned char i= 0;
  331. while((text[i]>0x00))
  332. {
  333. if((text[i]>=0x20) &&(text[i]<=0x7e))
  334. {
  335. fontaddr = (text[i]- 0x20);
  336. fontaddr = (unsigned long)(fontaddr*8);
  337. fontaddr = (unsigned long)(fontaddr+0x3bfc0);
  338. get_and_write_5x8(fontaddr,page,column);
  339. i+=1;
  340. column+=6;
  341. }
  342. else
  343. i++;
  344. }
  345. }

  346. m=0;
  347. n=0;

  348. void keyscan()//按键
  349. {
  350.         if(key1==0)
  351.                 delay(100);
  352.         if(key1==0)
  353.         {
  354.                 m=m+1;
  355.                 if(m==3)
  356.                 {m=3;}
  357.                 switch(m)
  358.                 {
  359.                         case(1):display_graphic_8x16(1,40,one);
  360.                         break;
  361.                         case(2):display_graphic_8x16(1,40,two);
  362.                         break;
  363.                         case(3):display_graphic_8x16(1,40,three);
  364.                         break;
  365.                 }
  366.         }
  367.                 while(!key1);
  368.         if(key2==0)
  369.                 delay(100);
  370.         if(key2==0)
  371.         {
  372.                 n=n+1;
  373.                 if(n==3)
  374.                 {n=3;}
  375.                 switch(n)
  376.                 {
  377.                         case(1):display_graphic_8x16(5,72,five);display_graphic_8x16(5,80,zero);
  378.                         break;
  379.                         case(2):display_graphic_8x16(5,72,seven);display_graphic_8x16(5,80,five);
  380.                         break;
  381.                         case(3):display_graphic_8x16(5,72,one);display_graphic_8x16(5,80,zero);display_graphic_8x16(5,88,zero);
  382.                         break;
  383.                 }
  384.         }
  385.         while(!key2);
  386.         if(key3==0)
  387.                 delay(100);
  388.         if(key3==0)
  389.         {
  390.                 clear_screen();
  391.         
  392.                 m=0;
  393.                 n=0;
  394.         }
  395.         while(!key3);
  396. }

  397. void display_caidan()//显示菜单栏
  398. {
  399.         display_graphic_16x16(1,1,su);
  400.         display_graphic_16x16(1,16,du);
  401.         display_graphic_8x16(1,32,maohao);
  402.         display_graphic_16x16(1,112,dang);
  403.         
  404.         display_graphic_16x16(3,1,zhuan);
  405.    display_graphic_16x16(3,16,su);
  406.          display_graphic_8x16(3,32,maohao);

  407.         display_graphic_8x16(3,106,r);
  408.         display_graphic_8x16(3,112,chu);
  409.         display_graphic_8x16(3,120,s);         

  410.          
  411.    display_graphic_16x16(5,1,zhi);         
  412.          display_graphic_16x16(5,16,ding);
  413.    display_graphic_16x16(5,32,ju);
  414.    display_graphic_16x16(5,48,li);        
  415.          display_graphic_8x16(5,64,maohao);         
  416.          display_graphic_8x16(5,112,c);
  417.         display_graphic_8x16(5,120,mi);
  418.         
  419.         display_graphic_16x16(7,1,xing);        
  420.          display_graphic_16x16(7,16,shi);        
  421.          display_graphic_16x16(7,32,ju);        
  422.          display_graphic_16x16(7,48,li);
  423.          display_graphic_8x16(7,64,maohao);
  424.          display_graphic_8x16(7,112,c);
  425.          
  426.          
  427. display_graphic_8x16(7,120,mi);
  428. }

  429. //*****************************************main函数********************************************************************
  430. void main()
  431. {
  432.         initial_lcd();
  433.         clear_screen();
  434. while(1)
  435. {
  436.         keyscan();
  437.         display_caidan();
  438.         lcd_printf();
  439. }
  440. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

地板
ID:267330 发表于 2019-8-7 19:29 | 只看该作者
定义一个全局变量啊
回复

使用道具 举报

板凳
ID:564944 发表于 2019-8-7 09:53 | 只看该作者
来51学习 发表于 2019-8-6 22:34
具体是什么传感器?

光耦测车轮转速
回复

使用道具 举报

沙发
ID:425825 发表于 2019-8-6 22:34 | 只看该作者
具体是什么传感器?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表