LE丶丿观哌 LE丶丿观哌
关注数: 13 粉丝数: 83 发帖数: 491 关注贴吧数: 10
lcd14432显示汉字乱码,英文和数字可以正常显示。四位并口 //宏定义引脚 #define rs A0 #define rw A1 #define en A2 #define psb A3 #define D4 3 #define D5 9 #define D6 10 #define D7 11 unsigned char z,z1,d,d1,s,s1,s10,s100,m1; //汉字,直接可以写入字形,写入标点符号后要加空格键 unsigned char uctech[] = {"欢迎您来到绘晶科技"}; //显示在第1,3行 unsigned char uctech3[] = {"完全兼容1602的模块"}; //显示在第2,4行 unsigned char uctech6[] = {"1602字符模块升级版"}; //显示在第1,3行 unsigned char uctech7[] = {"HJ14432A 9*2行汉字"}; //显示在第2,4行 unsigned char uctech1[] = {" HUIJINGKEJI"}; //显示在第2行 unsigned char uctech2[] = {" 144*32 DOT"}; //显示在第3行 unsigned char uctech4[] = {"TIME"}; unsigned char uctech5[] = {"绘晶科技23146001"}; unsigned char uctech8[] = {"有8192个中文字型"}; unsigned char uctech9[] = {"有126 个字母符号"}; unsigned char str[] = {0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00, 0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00}; void RDBF(void) { unsigned char temp; digitalWrite(rs,LOW); digitalWrite(rw,HIGH); while(1) { //P1=0xFF; //数据线为输入 digitalWrite(en,HIGH); //temp=P1; digitalWrite(en,LOW); if ((temp & 0x80) ==0) break; } } //发送数据,先发高四位,再发第四位 void lcd_WritData(uint8_t value) { RDBF(); byte d=0; digitalWrite(rs,1); digitalWrite(rw,0); d=value & 0x80; digitalWrite(D7,d); d=value & 0x40; digitalWrite(D6,d); d=value & 0x20; digitalWrite(D5,d); d=value & 0x10; digitalWrite(D4,d); digitalWrite(en,1); digitalWrite(en,0); digitalWrite(rs,1); digitalWrite(rw,0); d=value & 0x08; digitalWrite(D7,d); d=value & 0x04; digitalWrite(D6,d); d=value & 0x02; digitalWrite(D5,d); d=value & 0x01; digitalWrite(D4,d); digitalWrite(en,1); digitalWrite(en,0); } //发送命令指令 void lcd_WriteComn(uint8_t value) { RDBF(); byte d=0; digitalWrite(rs,0); digitalWrite(rw,0); d=value & 0x80; digitalWrite(D7,d); d=value & 0x40; digitalWrite(D6,d); d=value & 0x20; digitalWrite(D5,d); d=value & 0x10; digitalWrite(D4,d); digitalWrite(en,1); digitalWrite(en,0); digitalWrite(rs,0); digitalWrite(rw,0); d=value & 0x08; digitalWrite(D7,d); d=value & 0x04; digitalWrite(D6,d); d=value & 0x02; digitalWrite(D5,d); d=value & 0x01; digitalWrite(D4,d); digitalWrite(en,1); digitalWrite(en,0); } //addr为汉字显示位置,*hanzi汉字指针;count为输入汉字串字符数 void ShowQQCharH(unsigned char addr,unsigned char *hanzi, unsigned char count) { unsigned char i; lcd_WriteComn(addr);//设定DDRAM地址 for(i=0;i<count;) { lcd_WritData(hanzi[i*2]); lcd_WritData(hanzi[i*2+1]); i++; } } ///addr为半宽字符首个地址,i为首个半宽字符代码,count为需要输入字符个数 void ShowNUMCharH(unsigned char addr,unsigned char i,unsigned char count) { unsigned char j; for(j=0;j<count;) { lcd_WriteComn(addr);//设定DDRAM地址 lcd_WritData(i+j);//必为两个16*8位字符拼成一个16*16才能显示 j++; lcd_WritData(i+j); addr++; j++; } } //自定义字符写入CGRAM //data1是高八位,data2是低八位,一存必须存两个字节,横向存两字节,后纵向累加,共16行 //一个自定义字符为16*16点阵 //第一个存入字节为从40H开始,到4F结束为第一个自定义汉字符, 之后调出地址从8000H为始第一个 //addr为存入头地址 void WRCGRAMH(unsigned char data1,unsigned char data2,unsigned char addr) { unsigned char i; for(i=0;i<16;) { lcd_WriteComn(addr+i); //设定CGRAM地址 lcd_WritData(data1); lcd_WritData(data1); i++; lcd_WriteComn(addr+i); //设定CGRAM地址 lcd_WritData(data2); lcd_WritData(data2); i++; } } //自定义字符写入CGRAM //显示上半屏自定义的字符,并把这个字符填满全屏16*16 //addr为显示地址,把自定义字符当一个汉字调出,从8000H开始为第一个, //8100H为第二个,8200H为第三个,8300H为第四个,中文字库只能自定义四个字符 //i为自定义字符调出地址,先输入低位,再输入高位 //IC决定,中文字库类,一个IC最多只能显示16*2个汉字 void ShowCGCharH(unsigned char addr,unsigned char i) { unsigned char j; for(j=0;j<0x20;) { lcd_WriteComn(addr+j);//设定DDRAM地址 lcd_WritData(0x00);//字符地址低八位 lcd_WritData(i);//字符地址高八位 j++; } } void WRGDRAM128X9(unsigned char x1,unsigned char y1,unsigned char d1 ) { unsigned char j,i; lcd_WriteComn(0x34);//去扩展指令寄存器 lcd_WriteComn(0x36);//打开绘图功能 for(j=0;j<16;j++)// { lcd_WriteComn(0x80+y1+j); //Y总坐标,即第几行 lcd_WriteComn(0x80+x1);//X坐标,即横数第几个字节开始写起,80H为第一个字节 for(i=0;i<9;i++)//写入一行 { lcd_WritData(d1); lcd_WritData(d1); } } } //上半屏清除图形区数据 void CLEARGDRAMH(unsigned char c) { unsigned char j; unsigned char i; lcd_WriteComn(0x34); lcd_WriteComn(0x36); for(j=0;j<32;j++) { lcd_WriteComn(0x80+j); lcd_WriteComn(0x80);//X坐标 for(i=0;i<16;i++)// { lcd_WritData(c); lcd_WritData(c); } } } void WRGDRAM1(unsigned char x,unsigned char l,unsigned char r ) { unsigned char j; unsigned char i; lcd_WriteComn(0x24);//去扩展指令寄存器 lcd_WriteComn(0x36);//打开绘图功能 //两横的上边框 下边框 for(j=0;j<2;j++)//2行 { lcd_WriteComn(0x80+j); //Y总坐标,即第几行 lcd_WriteComn(0x80);//X坐标,即横数第几个字节开始写起,80H为第一个字节 for(i=0;i<9;i++)//写入一行 { lcd_WritData(x); lcd_WritData(x); } lcd_WriteComn(0x80+30+j); //Y总坐标,即第几行 lcd_WriteComn(0x80);//X坐标,即横数第几个字节开始写起,80H为第一个字节 for(i=0;i<9;i++)//写入一行 { lcd_WritData(x); lcd_WritData(x); } } //上半屏两横的右左边框 for(j=2;j<30;j++)//30行 左 { //先上半屏 lcd_WriteComn(0x80+j); //Y总坐标,即第三行开始 lcd_WriteComn(0x80);//X坐标,即横数第几个字节开始写起,80H为第一个字节 lcd_WritData(l); lcd_WritData(0x00); lcd_WriteComn(0x80+j); //Y总坐标,即第三行开始 lcd_WriteComn(0x80+8);//X坐标,即横数第几个字节开始写起,80H为第一个字节 lcd_WritData(0x00); lcd_WritData(r); } } void lcd_Init() { digitalWrite(psb,1); lcd_WriteComn(0x20);//四位bit,基本指令 delay(10); lcd_WriteComn(0x03);// delay(10); lcd_WriteComn(0x0c); delay(10); lcd_WriteComn(0x01);//清屏显示 delay(10); lcd_WriteComn(0x06); delay(10); } //主函数 void setup() { // put your setup here, to run once: pinMode(rs,OUTPUT); pinMode(rw,OUTPUT); pinMode(en,OUTPUT); pinMode(psb,OUTPUT); pinMode(D4,OUTPUT); pinMode(D5,OUTPUT); pinMode(D6,OUTPUT); pinMode(D7,OUTPUT); RDBF(); lcd_Init(); delay(100); ShowQQCharH(0x80,uctech4,2);//调用字库 ShowQQCharH(0x90,uctech,9);//显示'绘晶科技' //ShowQQCharH(0x90,uctech9,8);//调用字库 //ShowQQCharH(0x88,uctech8,8);//调用字库 //ShowQQCharH(0x98,uctech5,8);//调用字库 for(z=0;z<10;z++) { lcd_WriteComn(0x80+2);//写地址 lcd_WritData(0x3a); lcd_WritData(0x30+z);//分10 for(z1=0;z1<10;z1++) { lcd_WriteComn(0x80+3);//写地址 lcd_WritData(0x30+z1);//分10 lcd_WritData(0x3a); for(d=0;d<6;d++) { for(d1=0;d1<10;d1++) { lcd_WriteComn(0x80+4);//写地址 lcd_WritData(0x30+d);//分10 lcd_WritData(0x30+d1);//分01 //lcd_WriteComn(0x10); for(s=0;s<6;s++) { lcd_WriteComn(0x80+5);//写地址 lcd_WritData(0x3a); lcd_WritData(0x30+s);//秒10 for(s1=0;s1<10;s1++) { lcd_WriteComn(0x80+6);//写地址 lcd_WritData(0x30+s1);//秒01 lcd_WritData(0x3a); delay(5);////延时 x ms //lcd_WriteComn(0x18); for(s10=0;s10<10;s10++) { delay(5);////延时 x ms for(s100=0;s100<10;s100++) { lcd_WriteComn(0x80+7);//写地址 lcd_WritData(0x30+s10);//100MS lcd_WritData(0x30+s100);//10MS delay(5);////延时 x ms } } } } } } } } } void loop() { // put your main here, to run repeatedly: }
求助,socket交互,在winform下能显示中文,wpf下就显示乱码。 winform的代码 private void Form1_Load(object sender, EventArgs e) { IPEndPoint epServer = new IPEndPoint(IPAddress.Parse("192.168.253.4"), 8888);//IP地址和端口号 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//定义socket socket.Bind(epServer);//绑定 socket.Listen(10);//监听 socket.BeginAccept(new AsyncCallback(RecVing), socket);//异步接收,回调方法为RecVing } private void RecVing(IAsyncResult rec_socket) { string cmdstr = ""; Socket sc = (Socket)rec_socket.AsyncState; Socket socket = sc.EndAccept(rec_socket); byte[] bytes = new byte[1024]; int i = socket.Receive(bytes); //cmdstr = Encoding.UTF8.GetString(bytes, 0, i); cmdstr = Encoding.GetEncoding("gb2312").GetString(bytes); showstrs(cmdstr); sc.BeginAccept(new AsyncCallback(RecVing), sc); } private delegate void shixudong_invoke(string invokefun); private void showstrs(string recv_strs) { if (recv_strs.Length != 0) { if (this.InvokeRequired) { shixudong_invoke invoke = new shixudong_invoke(showstrs); this.Invoke(invoke, (object)recv_strs); } else { textBox1.Text = recv_strs; } } } wpf 端的代码 private void Window_Loaded_1(object sender, RoutedEventArgs e) { IPEndPoint epserver = new IPEndPoint(IPAddress.Parse("192.168.253.4"),8888); Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); socket.Bind(epserver); socket.Listen(10); socket.BeginAccept(new AsyncCallback (recvingf),socket); } private void recvingf(IAsyncResult ar) { string cmdstr = ""; Socket sc = (Socket)ar.AsyncState; Socket socket = sc.EndAccept(ar); byte []bytes = new byte[1024]; int i = socket.Receive(bytes); cmdstr = Encoding.GetEncoding("gb2312").GetString(bytes); //cmdstr = Encoding.UTF8.GetString(bytes, 0, i); showstrs(cmdstr); sc.BeginAccept(new AsyncCallback(recvingf), sc); } private delegate void shixudong_invoke(string invokefun); private void showstrs(string recv_strs) { if (recv_strs.Length != 0) { if (System.Threading.Thread.CurrentThread != tet.Dispatcher.Thread ) { shixudong_invoke invoke = new shixudong_invoke(showstrs); this.Dispatcher.Invoke(invoke, (object)recv_strs); } else { tet.Text = recv_strs; } } }
socket 有问题求指教啊 直接贴代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Net; using System.Net.Sockets; using System.Threading; namespace SOCKET客户端 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { private static byte[]result = new byte[1024]; private static string honst = "127.0.0.1"; private int port = 7800; public MainWindow() { InitializeComponent(); } private void Button_Click_1(object sender, RoutedEventArgs e) { IPAddress ip = IPAddress.Parse(honst); Socket cliensocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { IPEndPoint ipe = new IPEndPoint(ip, port); MessageBox.Show("连接服务器成功"); } catch { MessageBox.Show("连接服务器失败"); return; } int revcievelength = cliensocket .Receive(result); string sdf = Encoding.ASCII.GetString(result, 0, revcievelength); Console.WriteLine("接收服务器消息:{0}", sdf); tet.Text = "接受服务器消息:" + sdf; } private void Button_Click_2(object sender, RoutedEventArgs e) { while(true) { Socket cliensocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { Thread.Sleep(1000); string sendmsg = tet.Text + DateTime.Now.ToLongTimeString(); cliensocket.Send(Encoding.ASCII.GetBytes(sendmsg)); } catch { cliensocket.Close(); break; } } } } }
我为什么关注二中吧,,是因为她,,,,因为我爱她。。 喂,我不能再你身边,不能再你伤心的时候陪你,不能再下雨的时候给你打伞,不能再天冷的时候给你件衣服,,对不起,对不起,, 从小到大一封情书也没写过,现在为了你,我在贴吧里给你写我的第一封情书。 我爱你,因为你是我的初恋,我曾经说过,我会领着我的初恋去民政局的,哎张这么大,还真的不会写情书呢,  1. 刘易阳:“ 我没车,没钱,没房,没钻戒,但我有一颗陪你到老的心,  等到你老了,我依然背着你,我给你当拐杖,   等你没牙了,我就嚼碎了喂给你,   我一定等你死后我在死,要不把你一个人留在这世界上,没人照顾,我做鬼也不放心。   童佳倩,我爱你。”   2. “有钱就有感情啊,男人长得帅有什么用啊,放到银行能当卡刷吗?人品好又有什么用,放到桌上能当饭吃吗?”   3. “在这个世界上只有两样东西,可以让女人感觉到幸福。一个是奥迪,第第二个就是迪奥。”   4. 刘易阳:“不怎么着,你以为四方之内皆你妈啊!谁都得惯着你!”   5. 童佳倩:“咱们这日子怎么过啊。” 刘易阳:“这不是有我的吗。” 童佳倩:“哪儿都有你啊,你是银行?你爸是李刚?”   6. 刘易阳:“细节打败爱情。 我除了我爱你比你爱我多以外,我没有任何条件优越过你,我刘易 阳 我一直是在维护自己爱情的尊严,我今天才知道一个道理,什么叫失无所失。”   7. 刘易阳:“我的终身奋斗目标就是要给你童佳倩幸福,给全家人幸福,给我们的子子孙孙幸福。”   童佳倩:“真的?我怎么不知道啊。”   刘易阳:“一个大老爷们,不能把这些话老放在嘴边上。幸福是什么,幸福不是靠你说就能说出来的,幸福是得你实实在在干出来的。”   8. 刘易阳:“不以结婚为目的的谈恋爱都是耍流氓。”   9. 刘易阳:“我想给你最好的生活,我想让你的脸每天都有笑容,我不想你每天挤公交地铁,不想你逼着自己坚强。”   10. 刘易阳:“我和佳倩已经超越了爱情的这层关系了,我们现在是亲人。 我会想刘易阳对童佳倩那样对你的, 因为我爱你 我会保护你 我会守护你 ——写给我爱的娜娜
1 下一页