找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2761|回复: 2
收起左侧

c8051F340单片机程序

[复制链接]
ID:328151 发表于 2018-5-12 12:18 | 显示全部楼层 |阅读模式
汉字取模软件,有需要的可以下载

单片机源程序如下:
  1. #include "c8051F340.h"
  2. #include <intrins.h>
  3. #include<absacc.h>
  4. #include<stdlib.h>
  5. #include<MMC_SD\MMC_SD.h>
  6. #include<main.h>
  7. #include<lcd\lcd_control.h>
  8. #include "USB_API.h"

  9. #define White          0xFFFF
  10. #define Black          0x0000
  11. #define Blue           0x001F
  12. #define Blue2          0x051F
  13. #define Red            0xF800
  14. #define Magenta        0xF81F
  15. #define Green          0x07E0
  16. #define Cyan           0x7FFF
  17. #define Yellow         0xFFE0
  18. sbit GO=P1^5;
  19. uint8  Packet[64];   // Last packet received from host
  20. uint8 nd,pic;
  21. uint16 bf;
  22. uint32 sd;
  23. /********************************************************************************/
  24. code const UINT USB_VID = 0x10C4;
  25. code const UINT USB_PID = 0xEA61;
  26. code const BYTE USB_MfrStr[] = {0x1A,0x03,'S',0,'i',0,'l',0,'i',0,'c',0,'o',0,'n',0,' ',0,'L',0,'a',0,'b',0,'s',0};                       // Manufacturer String
  27. code const BYTE USB_ProductStr[] = {0x10,0x03,'U',0,'S',0,'B',0,' ',0,'A',0,'P',0,'I',0}; // Product Desc. String
  28. code const BYTE USB_SerialStr[] = {0x0a,0x03,'1',0,'2',0,'3',0,'4',0};
  29. code const BYTE USB_MaxPower = 15;            // Max current = 30 mA (15 * 2)
  30. code const BYTE USB_PwAttributes = 0x80;      // Bus-powered, remote wakeup not supported
  31. code const UINT USB_bcdDevice = 0x0100;       // Device release number 1.00
  32. /********************************************************************************/
  33. extern void wr_com(unsigned int i,unsigned int j) ;
  34. //extern void uint8 image[3200];
  35. extern void LCD_PutString(unsigned short x, unsigned short y, unsigned char *s, unsigned int fColor, unsigned int bColor) ;
  36. extern void PutGB3232(unsigned short x, unsigned short  y, unsigned char c[2], unsigned int fColor,unsigned int bColor);
  37. void Suspend_Device(void);
  38. void Init_Devices(void);
  39. void  Initialize(void);
  40. void load_data(void);
  41. void Wait(void);
  42. /********************************************************************************/
  43. void main(void)
  44. {

  45.   // int i,j,k;
  46.         sd=1;
  47.         bf=0;
  48.         nd=0;       
  49.         pic=0;
  50.         Init_Devices();
  51.         MMC_SD_ReadSingleBlock(0);

  52.         while(1)
  53.         {
  54.         // load_data();               
  55.         Display_color(0x07e0);
  56.          delay(7000);
  57. PutGB3232(20,40,"亮",Red,Green);delay(100);       
  58. PutGB3232(60,40,"邦",Red,Green);delay(100);       
  59. PutGB3232(20,80,"科",Blue,Green);delay(100);       
  60. PutGB3232(60,80,"技",Blue,Green);delay(100);               
  61. PutGB3232(20,120,"欢",Blue,Green);delay(100);       
  62. PutGB3232(60,120,"迎",Blue,Green);delay(100);       
  63. //PutGB3232(260,40,"你",Blue,Green);delay(100);       
  64. //PutGB3232(300,40,"!",Blue,Green);delay(100);                 
  65. Wait();
  66.                 Display_color(0x8410);
  67. delay(6000);
  68. Wait();
  69.                 Display_color(0x07e0);
  70. delay(6000);
  71.                 Display_color(0x001f);
  72.                  delay(6000);
  73.                 Display_color(0xffff);
  74.          delay(6000);
  75.                 Display_color(0x0000);
  76. delay(6000);

  77.                   
  78.             }
  79.         }                     

  80. //---------------------------------------------------------------------------------//
  81. void Wait()
  82. {  
  83.     while(1)
  84.     {
  85.         if(GO==0)
  86.         {
  87.                     delay(200);
  88.                     while(GO==0)
  89.             return;
  90.         }
  91.                 load_data();
  92.     }
  93. }

  94. //---------------------------------------------------------------------------------//
  95. void load_data(void)
  96. {
  97.     uint8 st[1],retry;
  98.         st[0]=1;
  99.         if(nd==1)
  100.         while(1)
  101.         {
  102.            if(nd==1)
  103.            {
  104.                for(retry=0;retry<64;retry+=2)
  105.                {
  106.                        write_dc(Packet[retry], Packet[retry+1]);
  107.                        buffer[bf++]=Packet[retry];
  108.                        buffer[bf++]=Packet[retry+1];
  109.                            if(bf==512)
  110.                    {             
  111.                    MMC_SD_WriteSingleBlock(sd++);
  112.                                       buffer[0]=pic;
  113.                            MMC_SD_WriteSingleBlock(0);            //统计图片数量                                    buffer[0]=pi
  114.                            bf=0;
  115.                    }
  116.                }
  117.                    nd=0;  
  118.                Block_Write(st, 1);
  119.            }
  120.    }
  121. }

  122. //---------------------------------------------------------------------------------//

  123. void  USB_API_TEST_ISR(void) interrupt 17
  124. {
  125.    uint8 INTVAL = Get_Interrupt_Source();             
  126.    if (INTVAL & RX_COMPLETE)
  127.    {     
  128.            Block_Read(Packet, 64);
  129.            nd=1;
  130.    }
  131.    if (INTVAL & DEV_SUSPEND)
  132.    {
  133.         Suspend_Device();  
  134.    }

  135.    if (INTVAL & DEV_CONFIGURED)
  136.    {
  137.        Initialize();
  138.    }
  139.    if (INTVAL & DEVICE_OPEN)
  140.    {
  141.        goto_start();
  142.    }
  143.    if (INTVAL & DEVICE_CLOSE)
  144.    {               
  145.        pic=pic+1;
  146.        goto_start();
  147.    }
  148. }

  149. /********************************************************************************/

  150. void  Initialize(void)
  151. {
  152.     uint8 n;
  153.         PCA0MD &= ~0x40;
  154. //------OSC--------------------------
  155.     OSCICN = 0x83;
  156.         CLKMUL=0X00;
  157.     CLKMUL|=0X80;
  158.         for(n=0;n<255;n++);
  159.         CLKMUL|=0Xc0;
  160.         while((0X20&CLKMUL)!=0X20);
  161.     CLKSEL = 0x00;
  162.     RSTSRC   |= 0x02;  
  163. //------POINT--------------------------
  164.         P0MDIN |= 0xfF;                        // P0 pins 0-3 set high impedance
  165.         P0MDOUT |= 0xfF;
  166.     P1MDOUT |= 0xfF;                        // P1 pins 0-3 set high impedance
  167.     P1MDIN |= 0xfF;
  168.     P2MDOUT |= 0xff;
  169.     P3MDOUT |= 0xff;
  170.         P4MDOUT |= 0xff;                       // Port 1 pin 7 skipped by crossbar
  171.     XBR0     = 0x02;
  172.     XBR1     = 0x40;                        // Enable Crossbar
  173. }
  174. void Init_Devices(void)
  175. ……………………

  176. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
汉字程序.zip (162.65 KB, 下载次数: 17)
回复

使用道具 举报

ID:58110 发表于 2018-5-22 09:46 | 显示全部楼层
请问楼主,这个有原理图吗,显示用的是320240的屏?
回复

使用道具 举报

ID:703120 发表于 2022-8-2 06:47 来自手机 | 显示全部楼层
高手 谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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